Name

global.SprintPlanningMetaDataService

Description

No description available

Script

var SprintPlanningMetaDataService = Class.create();

SprintPlanningMetaDataService.getSprintsData = function(groupId) {
  var sprintsDataJson = {};
  var showSprintsWithoutDatesMsg = false;
  var sprints = [];
  var canStartFlag = true;
  var isMultiTaskActive = AgileBoardMetaDataCommonUtil.isMultiTaskActive();
  var sprint = new GlideRecord('rm_sprint');
  sprint.addQuery('sys_class_name', 'rm_sprint');
  sprint.addActiveQuery();
  if (JSUtil.notNil(groupId))
      sprint.addQuery('assignment_group', groupId);
  sprint.orderBy('start_date');
  sprint.chooseWindow(0, AgileBoardMetaDataCommonUtil.getMaxSprintLimit(), true);
  sprint.query();
  sprintsDataJson['sprintCount'] = sprint.getRowCount();
  var sprintChoices = AgileBoardMetaDataCommonUtil.getSprintChoices();

  while (sprint.next()) {
      if (sprint.start_date.nil() || sprint.end_date.nil()) {
          showSprintsWithoutDatesMsg = true;
          continue;
      }
      var canChangeState = sprint.state.canWrite();
      var sprintObj = {};
      var sysId = sprint.getUniqueValue();
      var startDate = sprint.start_date.getGlideObject().getLocalDate().getDisplayValue();
      var endDate = sprint.end_date.getGlideObject().getLocalDate().getDisplayValue();
      var query = '^ORDERBYglobal_rank^sprint=' + sysId;
      var actualPoints = sprint.getValue('actual_points');
      var storyPoints = sprint.getValue('story_points');
      var sprintState = sprint.getValue('state');
      if (JSUtil.notNil(groupId)) {
          query += '^assignment_group=' + groupId;
      }
      sprintObj.name = sprint.getDisplayValue('short_description');
      sprintObj.group_capacity = sprint.getValue('team_points');
      sprintObj.sysId = sysId;
      sprintObj.dates = gs.getMessage('{0} - {1}', [startDate, endDate]);
      sprintObj.summary = gs.getMessage('List of stories for {0}', [sprintObj.name]);
      sprintObj.table = 'rm_story';
      sprintObj.view = 'scrum';
      sprintObj.listView = isMultiTaskActive ? 'unified_agile_board' : 'agile_board';
      sprintObj.query = query;
      sprintObj.canComplete = canChangeState && (sprintState === sprintChoices.CURRENT);
      sprintObj.isCurrentSprint = (sprintState === sprintChoices.CURRENT);
      sprintObj.pageSize = parseInt(gs.getUser().getPreference('rowcount'));
      sprintObj.storyPoints = JSUtil.nil(storyPoints) ? 0 : storyPoints;
      sprintObj.actual_points = JSUtil.nil(actualPoints) ? 0 : actualPoints;
      if (canChangeState && canStartFlag) {
          sprintObj.canStartSprint = AgileBoardMetaDataCommonUtil.canStartSprint(sprint);
          if (sprintObj.canStartSprint)
              canStartFlag = false;
      }
      sprints.push(sprintObj);
  }
  sprintsDataJson['sprints'] = sprints;
  sprintsDataJson['sprintNullDateMsg'] = showSprintsWithoutDatesMsg;
  return sprintsDataJson;
};

SprintPlanningMetaDataService.getSprintPlanningData = function(groupId) {

  if (JSUtil.notNil(groupId))
      gs.getUser().setPreference('com.snc.agile_board.group_id', groupId);

  var storyGr = new GlideRecord('rm_story');
  var sprintGr = new GlideRecord('rm_sprint');
  var epicGr = new GlideRecord('rm_epic');
  var themeGr = new GlideRecord('scrum_theme');
  var sprintsDataJson = this.getSprintsData(groupId);
  var groups = sprintsDataJson['sprints'];
  var query = '^ORDERBYglobal_rank' + AgileBoardMetaDataCommonUtil.getBacklogQueryForGroup(groupId);
  var isMultiTaskActive = AgileBoardMetaDataCommonUtil.isMultiTaskActive();
  var pageSize = parseInt(gs.getUser().getPreference('rowcount'));
  var searchFilterFields = ['short_description', 'number'];
  if (isMultiTaskActive)
      searchFilterFields.push('original_task.number');
  var metadata;

  storyGr.initialize();

  metadata = {
      backlog: {
          table: 'rm_story',
          view: 'scrum',
          listView: isMultiTaskActive ? 'unified_agile_board' : 'agile_board',
          query: query,
          pageSize: pageSize
      },
      totalSprintCount: sprintsDataJson['sprintCount'],
      maxSprintLimit: AgileBoardMetaDataCommonUtil.getMaxSprintLimit(),
      groups: groups,
      canWrite: storyGr.canWrite(),
      canAddToSprint: storyGr.sprint.canWrite(),
      canCreateStory: storyGr.canCreate(),
      canCreateSprint: sprintGr.canCreate(),
      canCreateEpic: epicGr.canCreate(),
      canCreateTheme: themeGr.canCreate(),
      showStoryContextMenu: storyGr.canWrite(),
      sprintChoices: AgileBoardMetaDataCommonUtil.getSprintChoices(),
      listConfig: AgileBoardMetaDataCommonUtil.getSprintPlaningListConfig(),
      transformField: isMultiTaskActive ? 'original_task.number' : 'number',
      isMultiTaskActive: isMultiTaskActive,
      searchFilter: searchFilterFields,
      searchPlaceHolder: gs.getMessage('Search'),
      showSprintMessageNullDate: sprintsDataJson['sprintNullDateMsg']
  };
  return metadata;
};

Sys ID

d8db4ec05b26030036c32c1cf0f91aca

Offical Documentation

Official Docs: