chap-links-library customStackOrder() на времевата линия на връзките

Използвам библиотеката на Chap Links Timeline 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