Personalização do aplicativo de revisão
Para facilitar a personalização do aplicativo de revisão, fornecemos alguns ganchos listados e explicados abaixo:
Comentário de revisão
- id:
review_comment - gancho:
this.next('updateExtraProps'):
Conforme discutido aqui, qualquer novo atributo adicionado durante a personalização fica em this.model.extraProps. O método updateExtraProps permite adicionar atributos a um comentário de revisão, manipulando também a atualização e o armazenamento do atributo adicionado no servidor.
Exemplo de uso
Por exemplo, você deseja adicionar os campos commentRationale e severity aos seus comentários.
Vamos atualizar a commentRationale para "Esta é uma frase importante". e de severity para "CRÍTICO".
Isso pode ser feito usando a sintaxe:
this.next('updateExtraProps', {
'commentRationale': 'This is an important sentence.',
'severity': 'CRITICAL'
})
O trecho de código acima lidará com a atualização e o salvamento dos valores. Os valores salvos podem ser renderizados na interface do usuário definindo a exibição.
{
"component" : "label",
"label": "@extraProps.commentRationale"
}
Painel de revisão em linha
- id:
inline_review_panel
-
gancho:
onNewCommentEvent
O ganchoonNewCommentEventpermite lançar um evento ou chamar um método em um novo evento de comentário ou resposta.
Os argumentos recebidos emonNewCommentEventincluem:- events: o evento de comentário/resposta despachado.
- newComment: booleano
Se o evento despachado foi um novo evento de comentário, isto éhighlight,insertion,deletion,sticky note comment - newReply: booleano
Se o evento despachado tiver sido um novo evento de resposta.
-
gancho:
sendExtraProps
Este gancho é benéfico se você quiser estender um event e enviar extraProps do painel de revisão em linha. Explicaremos o uso desses dois ganchos abaixo.
Exemplo do painel de revisão em linha
Digamos que queiramos enviar um extraProp, userInfo, sempre que um novo comentário ou resposta for despachada. Agora, isso será feito por meio do painel de revisão em linha, no entanto, não temos a referência ao commentId do comentário recém-gerado, portanto, para fazer isso, podemos escrever o seguinte código.
onNewCommentEvent(args){
const events = _.get(args, "events")
const currTopicIndex = tcx.model.getValue(tcx.model.KEYS.REVIEW_CURR_TOPIC) || this.getValue('currTopicIndex') || "0"
const event = _.get(_.get(events, currTopicIndex), '0')
const newComment = _.get(args, 'newComment')
const newReply = _.get(args, 'newReply')
if ((newComment || newReply) && event) {
this.next('setUserInfo', event)
}
},
No trecho de código acima, estamos verificando se o evento despachado foi um novo comentário ou uma nova resposta. No caso de um novo comentário ou resposta, estamos chamando o método setUserInfo
const getUserInfo = (userId) => {
return $.ajax({
url: '/bin/dxml/xmleditor/userinfo',
data: {
username: userId,
},
success: (data) => {
return data
}
})
}
setUserInfo(event) {
getUserInfo(event.user).done(userData => {
const extraProps = {
"userFirstName": userData?.givenName || '',
"userLastName": userData?.familyName || '',
"userTitle": userData?.title || '',
"userJobTitle": userData?.jobTitle || '',
'userEmail': userData?.email || '',
}
const data = {... event, extraProps}
this.next(
'sendExtraProps',
data
)
})
},
No método acima, estendemos o evento para enviar extraProps que incluem o nome do usuário, email, título etc. Estender o evento dessa maneira garante que os extraProps sejam enviados com a commentId correta, garantindo que sejam anexados ao comentário correto.
O gancho updateExtraProps inerentemente chama o gancho sendExtraProps, então quando usar o quê?
Usamos updateExtraProps no controlador review_comment, que já tem o id do comentário e, portanto, você só precisa mencionar o extraProps.
O inline_review_panel, no entanto, não tem acesso à id do comentário. Portanto, sempre que você precisar despachar um evento do painel de revisão em linha, o sendExtraProps será útil.