Scripts du calculateur de plages

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 2 minutes de lecture
  • Vous pouvez spécifier un include de script qui calcule les restrictions de plage et traite les mises à jour parentes dans une page de chronologie.

    Scripts du calculateur de plages

    Voici trois exemples d’includes de script qui permettent de spécifier des restrictions de plage.

    ExampleUpdateParentsRangeCalculator

    Met à jour les enregistrements parents lorsqu’un parcours d’enregistrement enfant est déplacé ou redimensionné dans la chronologie.
    var ExampleUpdateParentsRangeCalculator = Class.create();
    ExampleUpdateParentsRangeCalculator.prototype = {
    initialize: function() { },
    updateParents: function(id, table, startDate, endDate){
     if (table == "rm_sprint"){
       var releaseID;
       var sprint = new GlideRecord(table);
       sprint.addQuery('sys_id', id);
       sprint.query();
       if (sprint.next())
         releaseID = sprint.release + "";
       if (releaseID) {
             var now_GR = new GlideRecord("rm_release_scrum");
             gr.addQuery("sys_id", releaseID);
             gr.query();
             if (gr.next()) {
               if (startDate  && startDate < this.getTimeMs(gr.start_date))
                   gr.start_date = this.getTimeObject(startDate); 
               if (endDate && endDate > this.getTimeMs(gr.end_date))
                  gr.end_date = this.getTimeObject(endDate);
                  gr.update();
             }
        }
      }
    },  
    getMinRangeDetails: function(id, table){ return [-1, -1, "", ""]; },
    getMaxRangeDetails: function(id, table){ return [-1, -1, ""]; },
    getTimeMs: function(date){ 
      return new GlideScheduleDateTime(date).getMS(); },
    getTimeObject: function(timeMS) { 
      var gdt = new GlideDateTime(); 
      gdt.setNumericValue(timeMS); 
      return gdt; },
    logMessage: function(message){ gs.log(message); },
    type: 'ExampleUpdateParentsRangeCalculator'
    }

    Dans cet exemple, le parcours est identifié en fonction de l’ID et de la table de la fonction (id, table, startDate, endDate).

    Calculatrice ExampleMinRangeCalculator

    Définit la date de début au plus tôt et la date de fin la plus tardive pour un parcours spécifié.
    var ExampleMinRangeCalculator = Class.create();
      ExampleMinRangeCalculator.prototype = {
          initialize: function() { },
          updateParents: function(id, table, startDate, endDate){ },
          getMinRangeDetails: function(id, table){
               var min = -1;
               var max = -1;
               var minID = "";
               var maxID = "";
               if (table == "rm_release_scrum"){
                        var now_GR = new GlideRecord("rm_sprint");
                        gr.addQuery("release", id);
                        gr.query();
                        while(gr.next()){
                             var start = this.getTimeMs(gr["start_date"]);
                             var end = this.getTimeMs(gr["end_date"]);
                             var id = gr["sys_id"];
                             if (min == - 1 || start <= min){
                                    if (start != min)
                                         minID = "";
                             min = start;
                             minID += "," + id;
                             }
                             if (max == -1 || end >= max){
                                        if (end != max)
                                                maxID = "";
                                        max = end;
                                        maxID += "," + id;
                                }  
                         }
                }
            return [min, max, minID, maxID];
    },
    getMaxRangeDetails: function(id, table){ return [-1, -1, ""]; },
    getTimeMs: function(date){ return new GlideScheduleDateTime(date).getMS(); },
    getTimeObject: function(timeMS) { 
      var gdt = new GlideDateTime(); 
      gdt.setNumericValue(timeMS); 
      return gdt; },
    logMessage: function(message){ gs.log(message); },
    type: 'ExampleUpdateParentsRangeCalculator'
    }

    Calculatrice ExampleMaxRangeCalculator

    Définit la date de début au plus tôt et la date de fin la plus tardive pour un parcours spécifié.
    var ExampleMaxRangeCalculator = Class.create();
    ExampleMaxRangeCalculator.prototype = {
       initialize: function() { },
       updateParents: function(id, table, startDate, endDate){ },
       getMinRangeDetails: function(id, table){ return [-1, -1, "", ""]; },
       getMaxRangeDetails: function(id, table){
          if (table == "rm_sprint"){
             var sprint = new GlideRecord(table);
             sprint.addQuery('sys_id', id);
             sprint.query();
             if (sprint.next())
                releaseID = sprint.release + "";
             if (releaseID) {
                var now_GR = new GlideRecord("rm_release_scrum");
                gr.addQuery("sys_id", releaseID);
                gr.query();
                if (gr.next())
                   return [this.getTimeMs(gr.start_date),
                    this.getTimeMs(gr.end_date), gr.sys_id];
             }
          }
          return [-1, -1, ""];
       },
       getTimeMs: function(date){ return new ScheduleDateTime(date).getMS(); },
       getTimeObject: function(timeMS) { 
         var gdt = new GlideDateTime();
         gdt.setNumericValue(timeMS); 
         return gdt; },
       logMessage: function(message){ gs.log(message); },
       type: 'ExampleUpdateParentsRangeCalculator'
    }
    Utilisez les deux fonctions suivantes pour obtenir les dates de début et de fin correctes dans les trois exemples d’includes de script fournis à titre de référence.
    getTimeMs: function(date){
            return new ScheduleDateTime(date).getMS();
        }
    getTimeObject: function(timeMS) {
            var gdt = new GlideDateTime();
            gdt.setNumericValue(timeMS);
            return gdt;
        }