Для начала надо сформировать правильный список точек.
Я бы делал так (это для отдельного человека).
1. Список будет состоять из записей, в которых содержится отметка времени и тип отметки (пришел/ушел).
2. Далее сортируем список по отметкам времени.
3. Теперь "сливаем" (для простоты) подряд идушие отметки одинакового типа (в зависимости от типа отметки "сливаются" вправо или влево).
4. Контролируем, что первая отметка есть приход и последняя - уход. Если не так, то добавляем соотв. отметки в 0:00 и 24:00.
5. Рисуем по графику.
Если как следует подумать, то, возможно, весь алгорим получится уложить в один цикл, хотя сомневаюсь. А вообще, такие данные надо заранее нормализовать и потом уже готовые использовать. Например, на уровне разбора/импорта лога нормализуем данные и сохраняем их в оперативную БД. Далее рисуем по готовым данным уже из БД.
|