Використання ============ Будь-яка програма на мові Python запускається так: :: /шлях/python program.py параметри У моєму випадку: :: /home/fominvv/BuildTimeGraph/python main.py параметри Результат роботи програми - масив JSON. При помилці масив має вигляд: ["Error", "Text of error"]. Наприклад, якщо запустити програму без параметрів: :: ["Error", "No argument 1"] Таблиця помилок на даний момент: .. list-table:: Таблиця помилок :widths: 30 5 :header-rows: 1 * - Текст помилки - Номер * - No argument 1 - 12 * - Wrong argument 1 - 11 * - No argument 2 - 22 * - Wrong argument 2 - 21 * - No argument 3 - 32 * - Wrong argument 3 - 31 * - Only one of 4, 5, 6 parameters can be defined - 71 Вхідні дані: """""""""""" Існують два типа відрізка: #. Робочий - позначається "Work". #. Неробочий - позначається "Pause" У кожного відрізка є початок і кінець - timestamps у міллісекундах (Години і далі поки не берем). Для простоти 1,2,3 - 11,12 тощо. Отже time-graph - масив відрізків, де чергуються періоди Work, Pause Таким чином 4-й параметр: Один, або декілька неробочих періодів (downtimes) Рядок запуску програми: :: /home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "[[\"Pause\", 3, 5], [\"Pause\", 8, 9]]" "null" "null" Де перший параметр 1 - Timestamp початку, 2 - false - не в годинах, третій - 11 - timestamp закінчення, 4-й параметр неробочі періоди, 5 та 6-й - null Результат: :: "[[\"Work\", 1, 3], [\"Pause\", 3, 5], [\"Work\", 5, 8], [\"Pause\", 8, 9], [\"Work\", 9, 11]]" Одним проходом по цьому масиву легко побудувати time-graph на frontend HTML-сторінці, знайти початок першого робочого періоду (start), кінець останнього (deadline). Далі, 5-й параметр: Timestamp паузи Перед запуском треба в іншому терміналі набрати наступне: :: python -m http.server --cgi 8080 .. attention:: Тут програмісту незрозуміло, куди вставляти цю паузу? Він вставляв в попередній результат. Мабудь, треба передавати ще одним параметром. -- Якщо пауза припадає на робочий період, то останній робочій період в кінцевому результаті (timegraph) має закінчуватися на цьому timestamp. Тобто, 5-й параметр або 7, або 10 Рядок запуску програми: :: /home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "7" "null" Результат: :: [["Work", 1, 3], ["Pause", 3, 5], ["Work", 5, 7]] Рядок запуску програми: :: /home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "10" "null" Результат: :: [["Work", 1, 3], ["Pause", 3, 5], ["Work", 5, 8], ["Pause", 8, 9], ["Work", 9, 10]] -- Якщо пауза припадає на неробочий період, то останній робочій період в timegraph має бути той, який передував цьому неробочому періоду. Рядок запуску програми: :: /home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "4" "null" Результат: :: [["Work", 1, 3], ["Pause", 3, 4]] Далі, 6-й параметр: Timestamp відновлення Рядок запуску програми: :: /home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "null" "4" Результат: :: [["Work", 1, 3], ["Pause", 3, 4]] Рядок запуску програми: :: /home/fominvv/BuildTimeGraph/python main.py "1" "false" "11" "null" "null" "8" Результат: :: [["Work", 1, 3], ["Pause", 3, 5], ["Work", 5, 8], ["Pause", 8, 8]] .. attention:: Перші три параметри обов'язкові. Що робить, коли нема 4, 5, та 6-го параметра?