Проблемы BIM360 SortBy () - PullRequest
       42

Проблемы BIM360 SortBy ()

0 голосов
/ 07 декабря 2018

Так что я адаптирую пример из forge.

В настоящее время я могу получить все проблемы через панель, я пытаюсь отсортировать несколько проблем по атрибуту, например, из-заДата.Я пробовал несколько разных методов sortBy (), но не знаю, как заставить его работать.

Есть идеи?Вот код ниже, где я могу ввести метод sortBy?

BIM360IssueExtension.prototype.showIssues = function () {
  var _this = this;

  //remove the list of last time
  var pushPinExtension = _this.viewer.getExtension(_this.pushPinExtensionName);
  pushPinExtension.removeAllItems();
    pushPinExtension.showAll();
  var selected = getSelectedNode();

  _this.issues.forEach(function (issue) {
    var dateCreated = moment(issue.attributes.created_at);

    // show issue on panel
      if (_this.panel) {
        _this.panel.addProperty('Title', issue.attributes.title, 'Issue ' + issue.attributes.identifier);
        _this.panel.addProperty('Assigned to', issue.attributes.assigned_to, 'Issue ' + issue.attributes.identifier);
      //_this.panel.addProperty('Location', stringOrEmpty(issue.attributes.location_description), 'Issue ' + issue.attributes.identifier);
        _this.panel.addProperty('Version', 'V' + issue.attributes.starting_version + (selected.version != issue.attributes.starting_version ? ' (Not current)' : ''), 'Issue ' + issue.attributes.identifier)
        _this.panel.addProperty('Due Date', issue.attributes.due_date, 'Issue ' + issue.attributes.identifier);
      _this.panel.addProperty('Created at', dateCreated.format('MMMM Do YYYY, h:mm a'), 'Issue ' + issue.attributes.identifier);
    }

    // add the pushpin
    var issueAttributes = issue.attributes;
    var pushpinAttributes = issue.attributes.pushpin_attributes;
    if (pushpinAttributes) {
      issue.type = issue.type.replace('quality_', ''); // temp fix during issues > quality_issues migration
      pushPinExtension.createItem({
        id: issue.id,
        label: issueAttributes.identifier,
        status: issue.type && issueAttributes.status.indexOf(issue.type) === -1 ? `${issue.type}-${issueAttributes.status}` : issueAttributes.status,
        position: pushpinAttributes.location,
        type: issue.type,
        objectId: pushpinAttributes.object_id,
        viewerState: pushpinAttributes.viewer_state
      });
    }
  })
}

1 Ответ

0 голосов
/ 07 декабря 2018

Во-первых, вам понадобится некоторая библиотека для сортировки, например, Underscore .Вы можете просто использовать их CDN:

<script src="https://underscorejs.org/underscore-min.js"></script>

Затем, после загрузки Issues и перед перечислением их (например, эта строка в образце ), попробуйте что-то вроде:

// sort by title
_this.issues = _.sortBy(_this.issues, function (i){return i.attributes.title});

// or sort by due date (this Date.parse returns an int representing the date)
_this.issues = _.sortBy(_this.issues, function (i){return Date.parse(i.attributes.due_date)});

Кстати, вам нужно обработать случай, когда due_date не указан (ноль)

...