Name

sn_sow_chg.UpcomingLinkProvider_OverdueTasks

Description

Implements extension point sn_sow.UpcomingLinkProvider

Script

var UpcomingLinkProvider_OverdueTasks = Class.create();
UpcomingLinkProvider_OverdueTasks.prototype = {
  type: 'UpcomingLinkProvider_OverdueTasks',
  initialize: function() {},
  process: function(request, fromDateTime, toDateTime, assginToQuery) {
      // Return array of objects per the link set api
      // https://developer.servicenow.com/dev.do#!/reference/now-experience/quebec/shared-components/now-link-set/api
      var gdt = new GlideDateTime();
      var now = '"' + gdt.getLocalDate() + '", "' + gdt.getLocalTime().toString().split(" ")[1] + '"';
      var PREFIX_QUERY = 'sys_class_name=change_request^ORsys_class_name=sc_req_item^active=true^' + assginToQuery;
      var TODAY_QUERY = '^ref_change_request.start_date<javascript:gs.dateGenerate(' + now + ')^ORdue_date<javascript:gs.dateGenerate(' + now + ')';
      var encodedQuery = null;
      var listTitle = gs.getMessage("Tasks");
      if ('beginningOfToday' == request.from && 'endOfToday' == request.to) {
          encodedQuery = PREFIX_QUERY + TODAY_QUERY;
      }
      var items = [];
      if (false == gs.nil(encodedQuery)) {
  		var LIMIT = 10;
          var gr = new GlideRecordSecure('task');
          gr.addEncodedQuery(encodedQuery);
          gr.setLimit(LIMIT + 1);
          gr.query();
          var count = gr.next() ? gr.getRowCount() : 0;
          if (count > 0) {
              var msg = null;
              if (1 == count) {
                  msg = gs.getMessage("{0} overdue task", [count]) + "";
              } else {
                  if (count > LIMIT) {
                      msg = gs.getMessage("More than {0} overdue tasks", [LIMIT.toString()]) + "";
                  } else {
                      msg = gs.getMessage("{0} overdue tasks", [count]) + "";
                  }
              }
              var route = {
                  route: 'simplelist',
                  fields: {
                      table: gr.getTableName()
                  },
                  params: {
                      listTitle: listTitle,
                      query: gr.getEncodedQuery()
                  }
              };
              if (1 == count) {
                  route = {
                      route: 'record',
                      fields: {
                          table: gr.getTableName(),
                          sysId: gr.getUniqueValue()
                      }
                  };
              }
              var item = {
                  label: msg,
                  type: 'route',
                  value: route,
                  "startsWith": {
                      "icon": "checkbox-checked-outline",
                      "align": "center"
                  },
                  "opensWindow": false,
                  "configAria": {},
                  "download": false
              };
              items.push(item);
          }
      }

      return items;
  }
};

Sys ID

7fafdf6cb7f23010965e56bf7e11a980

Offical Documentation

Official Docs: