chap-links-library customStackOrder() временной шкалы ссылок

Я использую библиотеку временных шкал Chap Links http://almende.github.io/chap-links-library/js/timeline/doc/ и считаю его очень полезным. Однако мне нужно складывать события в особом порядке.

Я безуспешно пытался использовать функцию customStackOrder(). Как я могу получить доступ к пользовательским полям данных в этой функции?

Мои элементы данных выглядят так:

data.push({
  start: new Date( msg.timestamp ),  
  content: msg.text,
  stackOrder: msg.level
});

и

function customStackOrder(A,B) {
  return A.stackOrder - B.stackOrder
}

Но A.stackOrder и B.stackOrder не определены.


person Stephan    schedule 26.04.2014    source источник
comment
Пожалуйста, добавьте соответствующий код, чтобы показать, что вы пробовали. Также добавьте все ошибки, с которыми вы столкнулись. Это поможет людям ответить на ваш вопрос.   -  person Sidney Gijzen    schedule 26.04.2014
comment
Спасибо за быстрый ответ -› обновлено   -  person Stephan    schedule 26.04.2014
comment
К сожалению, я никогда не работал с временной шкалой, поэтому я не смогу дать исчерпывающий ответ. Однако я нашел пример реализованной пользовательской функции stackOrder: github.com/almende /chap-links-library/issues/121 (последний комментарий). Надеюсь, это вам немного поможет.   -  person Sidney Gijzen    schedule 26.04.2014


Ответы (1)


Как я могу получить доступ к пользовательским полям данных в этой функции?

Временная шкала просто игнорирует настраиваемые поля, и нет простого способа получить к ним доступ. Используемые свойства элемента в функции customStackOrder — это фактическое положение и размер (left, right, width, height) и метки времени (start и, возможно, end).

Если вы действительно хотите это сделать, вам придется применить неэффективный хак. Это официально не поддерживается, и я не рекомендую это:

  • Из элементов, переданных в функцию сортировки, вам нужно будет определить их индекс таблицы: var indexA = mytimeline.items.indexOf(itemA)
  • Считайте данные этого элемента из исходной таблицы данных: var dataA = data[indexA].
  • Прочтите свое пользовательское поле из этого: var stackOrderA = dataA.stackOrder

Редактировать:

Другой трюк может заключаться в следующем: если вы не используете поле className, вы можете неправильно использовать его для хранения значения вашего поля stackOrder. Просто убедитесь, что значения не могут конфликтовать с некоторыми реальными css.

person Jos de Jong    schedule 28.04.2014
comment
Спасибо за ответ. Я думаю, что хак с className является наиболее подходящим решением для меня, даже если это все же хак. - person Stephan; 29.04.2014