Використання

Будь-яка програма на мові Python запускається так:

/шлях/python program.py параметри

У моєму випадку:

/home/fominvv/BuildTimeGraph/python main.py параметри

Результат роботи програми - масив JSON. При помилці масив має вигляд: [«Error», «Text of error»]. Наприклад, якщо запустити програму без параметрів:

["Error", "No argument 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

Вхідні дані:

Існують два типа відрізка:

  1. Робочий - позначається «Work».

  2. Неробочий - позначається «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

Увага

Тут програмісту незрозуміло, куди вставляти цю паузу? Він вставляв в попередній результат. Мабудь, треба передавати ще одним параметром.

Якщо пауза припадає на робочий період, то останній робочій період в кінцевому результаті (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]]

Увага

Перші три параметри обов’язкові. Що робить, коли нема 4, 5, та 6-го параметра?