2017-09-27 6 views
0

J'essaie d'apporter une légère amélioration à un widget existant créé par notre équipe, mais je n'arrive pas à le faire fonctionner correctement. Nous avons un widget qui fait un RowCount de tâches et les groupe par état. Je veux que le RowCount se mette à jour automatiquement une fois qu'une tâche est terminée sans que l'utilisateur appuie sur le bouton d'actualisation. J'ai lu de la documentation sur $ rootscope, $ broadcast et $ on, mais je n'arrive pas à le faire fonctionner.ServiceNow spUtil

ci-dessous est extrait de notre HTML:

<table class="table table-sm table-responsive"> 
     <tbody> 
     <tr class="h3"> 
      <td colspan=2>Complete</td> 
     </tr> 
     <tr class="h2 bg-success" ng-repeat="x in data.values track by $index"> 
      <td><span class="glyphicon glyphicon-check"></span></td> 
      <td>{{x.completedCount}}</td> 
     </tr> 
     </tbody> 
    </table> 

Un extrait de notre script serveur:

var values = []; 
var _completedCount; 

var gsCompleted = new GlideRecordSecure('sn_hr_core_task'); 
//CLOSED COMPLETE, CLOSED INCOMPLETE, 
gsCompleted.addQuery('state', 'IN', '3,4,7'); 
gsCompleted.addQuery('assigned_to', gs.getUserID()); 
gsCompleted.addQuery("parent.state", 'NOT IN', '1,800,900'); 
gsCompleted.query(); 

if(gsCompleted){ 
_completedCount = gsCompleted.getRowCount(); 
} 
else{ 
_completedCount = 0; 
} 

values.push( 
{ 
completedCount: _completedCount 
}); 
data.values = values; 

Comment puis-je obtenir ce widget mise à jour automatique du nombre de lignes terminées sans rafraîchir la page? Je joue autour avec spUtil recordWatch, mais ne peut pas faire fonctionner correctement:

function($scope, $sce, spUtil) { 
     var c = this; 
c.data.loading = true; 

    //After page initially loads re-call server script to load data 
    c.server.get({ 
     action: 'retrieve_data' 
    }).then(function(response) { 
     c.data.loading = false; 

     console.log('Response'); 
     console.log(response); 

     c.data.values = response.data.values; 

     spUtil.recordWatch($scope, 'sn_hr_core_task', "", function(name,data) { 
      spUtil.update($scope); 
     }) 

     }); 
} 

Répondre

0

Jetez un oeil à le widget Simple Liste, il a un exemple qui peut aider un peu.

Vous devriez être en mesure de changer votre recordWatch à ce

var filter = "stateIN3,4,7^parent.stateNOT IN1,800,900^assigned_to=" + window.NOW.user_id; 
spUtil.recordWatch($scope, 'sn_hr_core_task', filter); 

Vous généralement pas besoin d'une fonction de rappel à moins d'une action spécifique que vous déclenchement.