Проблемы BIM360 Сортировка по()

Поэтому я адаптирую этот пример из 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
      });
    }
  })
}

person D Jones    schedule 07.12.2018    source источник


Ответы (1)


Во-первых, вам понадобится библиотека для сортировки, например 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 не указан (нулевой)

person Augusto Goncalves    schedule 07.12.2018
comment
Я пытался ввести это, но это никак не повлияло на результат, я пробовал это в нескольких разных местах кода? - person D Jones; 07.12.2018
comment
Я отредактировал свой ответ со ссылкой на то, где его разместить - person Augusto Goncalves; 07.12.2018
comment
Когда я это делаю, расширение вопросов не загружается, только обычный просмотрщик? - person D Jones; 10.12.2018
comment
это, вероятно, из-за какой-то синтаксической ошибки... что-нибудь на консоли? (пробовал код, работает нормально) - person Augusto Goncalves; 10.12.2018
comment
Извините, я пробовал только сортировку по дате, сортировка по заголовку работает, а по дате нет, теперь показывает расширение, просто не сортирует проблемы - person D Jones; 11.12.2018
comment
вам, вероятно, нужно убедиться, что due_date действителен, или добавить проверку if в коде... :) дайте мне знать, если у вас есть другие вопросы, и, пожалуйста, отметьте это как ответ, когда закончите, спасибо - person Augusto Goncalves; 11.12.2018
comment
У меня есть разные допустимые даты due_date, также код заголовка не работает, если я использую другой атрибут, кроме заголовка - person D Jones; 11.12.2018
comment
Я не уверен, почему код работает только с атрибутом title - person D Jones; 13.12.2018
comment
это, вероятно, потому, что всегда присутствует только заголовок, другие атрибуты могут быть пустыми... поэтому вам нужно добавить некоторую проверку перед сортировкой (в зависимости от типа атрибута) - person Augusto Goncalves; 13.12.2018