2015-03-23 4 views
-1

У меня есть динамическое количество объектов, для которых требуется вертикальная шкала времени.Несколько вертикальных временных линий

Таким образом, на горизонтальной оси будут представлены компании, а по вертикальной оси каждая компания имеет свою собственную временную шкалу.

Однако элементы не могут быть упорядочены только на временной шкале, поскольку каждая временная шкала должна учитывать другие временные рамки.

Пример того, как это должно выглядеть: enter image description here

Пример того, как это не должно выглядеть: enter image description here В приведенном выше примере, каждый график не учитывает другие временные рамки

Любой идеи о том, как я мог бы достичь этого горизонтального выравнивания с помощью javascript? Я думаю, что необходимо создать единую временную шкалу, масштабированную для объекта с наибольшей плотностью событий и затем клонированную для каждой компании/организации. Впоследствии все события могут быть добавлены. Я не уверен, как разместить события на правильных координатах.

EDIT: Просто, чтобы быть ясным, Я не ищу код. Просто просто совет (или псевдо-код) о том, как сохранить даты, выровненные по горизонтали относительно каждой временной шкалы.

EDIT2: Серверная сторона не проблема, я получил это покрытие.

+2

У вас есть код _any_ для просмотра? Что вы делали до сих пор? Что работает, а что нет? StackOverflow не является КПЗ свободных кодировщиков, мы куча профессионалов и любителей, которые не возражают против предоставления кредита. Сначала мы очень хотели бы с вашей стороны приложить определенные усилия. –

+1

Получите копию каждого списка дат для каждой компании и закажите их. Получите все первые элементы из всех списков и получите самую раннюю дату из всех этих (может быть кратным, если некоторые даты равны). Выделите строку для этих дат и введите эти даты из списка. Повторяйте до тех пор, пока все списки не будут пустыми. Кроме того, что @ Джош-Берджесс сказал – Soronbe

+0

@JoshBurgess Я еще не начал кодирование. Я нахожусь в стадии исследования о том, чего можно достичь. Я просто ищу совет, а не код. Как только я знаю, как я могу это сделать, я буду в порядке.Просто я не могу понять, как организовать сроки, чтобы они были правильно расположены. Другими словами, я не знаю, с чего начать. Создание независимой временной шкалы для каждой компании не является проблемой. Их зависимость зависит друг от друга. – Ortix92

ответ

1

Вы можете увидеть эту проблему более абстрактно: у вас есть карта компаний и временные рамки, каждая временная шкала - это карта дат и данных событий. Вы хотите превратить эту структуру в карту дат и данных даты, причем каждая дата-данные являются картой компаний и событийными данными.

Другими словами, вы хотите, чтобы превратить это:

{ 
    company: { 
     date: event, 
     date: event, 
     date: event 
    }, 
    company: { 
     date: event, 
     date: event, 
     date: event 
    } 
} 

В это:

{ 
    date: { 
     company: event, 
     company: event 
    }, 
    date: { 
     company: event, 
     company: event 
    }, 
    date: { 
     company: event, 
     company: event 
    } 
} 

Один из способов сделать это было бы со сложным контуром:

timeline = {}; 
for(var company in allCompanies) { 
    for(var day in company) { 
     if(!timeline.hasOwnProperty(day)) timeline[day] = {}; 
     timeline[day][company.name] = company[day]; 
    } 
} 

Если ваш вход на самом деле представляет собой массив, а не объект, он будет немного отличаться, но, я думаю, вы можете это исправить.

Затем все, что вам нужно сделать, - это цикл через каждый день вашего объекта временной шкалы, чтобы создать строку, а для каждой строки цикла через каждую компанию создать ячейку. Компании, у которых нет записи, нуждаются в пустой ячейке.

+0

Ницца! Я буду работать отсюда;) – Ortix92

Смежные вопросы