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
  1. gancho: onNewCommentEvent
    O gancho onNewCommentEvent permite lançar um evento ou chamar um método em um novo evento de comentário ou resposta.
    Os argumentos recebidos em onNewCommentEvent incluem:

    • 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.
  2. 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.

recommendation-more-help
11125c99-e1a1-4369-b5d7-fb3098b9b178