IscanderChe
IscanderChe09 липня 2019 р. 07:31

Проект Simple Tracker. Частина 1: вимоги до проекту

Проект реалізує простий трекер завдань, в першу чергу для програмних проектів, що зберігаються в Subversion. Розраховую використовувати його лише у себе. Якщо виникне інтерес у читачів даного ресурсу, намагатимуся доопрацювати код до можливості більш універсального використання та викладу проект на GitHub.

Використання Subversion (далі – SVN) для зберігання коду продиктовано тим, що крім вихідних текстів програм під SVN заточено самописний набір скриптів для архівації інших документів.

Проект виник з необхідності відстежувати власні роботи. Аналіз аналогів показав, що для використання наявних безкоштовних трекерів потрібно встановлення та налаштування додаткового програмного забезпечення, як-от: повноцінний веб-сервер і сервер баз даних; Python і кілька додаткових скриптів. Оскільки мені трекер необхідний лише локального контролю власних робіт, такі витрати видалися зайвими. Крім того, це необхідна мені практика програмування.


Для реалізації проекту обрано клієнт-серверну архітектуру на основі QLocalSocket, т.к. необхідно зв'язати два незалежно працюючі компоненти - SVN і власне трекер.

Трекер повинен:

  • запускатися при старті системи;
  • мати серверну частину та візуальний інтерфейс.

Клієнт трекера повинен запускатися при коміті в SVN змін проекту по pre-commit-хуку. Клієнт трекера повинен передати серверу найменування проекту, номер завдання, що закривається, і номер ревізії. У свою чергу сервер повинен прийняти ці дані і перевести завдання в стан «закрита».

Дані із закриття завдання вводить користувач у коментар до коміту у наступному форматі:

<произвольный текст> #{номер закрываемой задачи} <произвольный текст>

Інші дані надає клієнт.

Інтерфейс трекера

Інтерфейс трекера повинен мати такий вигляд.

У лівій частині знаходиться група "Управління проектами". Вона складається з наступних елементів:

  • список проектів;
  • кнопки "Новий проект", "Архівувати проект", "Відкрити архів".

У правій частині знаходиться група "Управління завданнями". Вона складається з наступних елементів:

  • список задач;
  • Випадаючий список «Стан задачі», має три значення: «не активна», «в роботі», «закрита»;
  • кнопки «Нове завдання», «Редагувати завдання», «Видалити завдання».

Управління проектами

Виділення мишею одного із проектів ініціює завантаження списку завдань для відповідного проекту.

Натискання кнопки "Новий проект" відкриває діалогове вікно створення проекту.

У текстовому полі введення користувач повинен ввести назву проекту. Залежно від положення радіоперемикача «СКВ» (Система Контролю Версій) назва може містити наступні символи:

  • «без системи контролю версій» – будь-які символи;
  • "під системою контролю версій" - лише символи латинського алфавіту без пробілів, включаючи символ підкреслення.

Проект без ВКВ у списку проектів позначається буквою «М» у дужках (від англ. manual – вручну) перед найменуванням проекту.

Кнопка «Архівувати проект» дозволяє архівувати проект, який має всі завдання. Якщо проект закрито не всі завдання, трекер видає відповідне попередження і перериває архівування проекту. Якщо у проекту закриті всі завдання та натиснуто кнопку «Архівувати проект», то найменування проекту виключається зі списку проектів в основному інтерфейсі трекера після згоди користувача з відповідним попередженням.

Кнопка «Відкрити архів» дозволяє відкрити архівований проект та завантажити пов'язаний з ним список завдань.

Після натискання кнопки «ОК» зазначені проекти мають з'явитись у списку проектів основного вікна трекера. Архівовані раніше проекти позначаються у списку проектів буквою «А» у дужках перед найменуванням проекту.

Управління задачами

Якщо не виділено жодного завдання, що випадає на список «Стан завдання», кнопки «Редагувати завдання» та «Видалити завдання» заблоковані. Якщо виділено завдання, ці елементи доступні. Крім того, список «Стан завдання», що випадає, встановлюється на значення, вказане в таблиці. Якщо виділено завдання у стані «закрито», випадає список «Стан завдання», кнопки «Редагувати завдання» та «Видалити завдання» також заблоковані.

Залежно від стану завдання рядок у таблиці задач забарвлюється у відповідний колір:

  • не активна – білий колір (254, 254, 254);
  • у роботі – жовтий колір (255, 254, 4);
  • Закрита - зелений колір (143, 210, 68).

При зміні значення списку «Стан завдання», що випадає, змінюється стан задачі в таблиці і колір рядка таблиці. При встановленні значення «закрита» запитується підтвердження про закриття завдання, оскільки надалі змінити її стан буде неможливо. Якщо всі завдання проекту закриті, трекер автоматично пропонує архівувати проект.

Після натискання кнопки «Нова задача» відкривається діалогове вікно введення/редагування задачі.

У текстове поле введення користувач повинен ввести опис завдання, з списку вибрати тип завдання. Усього зумовлено чотири типи завдань:

  • bug – виправлення помилки;
  • feature - розробка нової функції;
  • issue - відпрацювання зовнішнього запиту;
  • Milestone – плановий випуск нової версії.

При виділеному рядку в таблиці задач та стані завдання «не активна» або «в роботі» доступні кнопки «Редагувати завдання» та «Видалити завдання».
Після натискання кнопки «Редагувати завдання» відкривається діалогове вікно введення/редагування задачі, показане вище.
Після натискання кнопки «Видалити завдання» користувач повинен підтвердити видалення завдання.

Дата та ревізія надаються автоматично при закритті завдання. У разі закриття завдання вручну (для обох видів проектів, з ВКВ та без ВКВ) у полі «Ревізія» вказується «manual».

Налаштування трекера

Під час першого запуску трекер пропонує користувачеві налаштувати шлях до папки проектів.

У разі натискання кнопки «Скасувати» користувачеві будуть доступні для створення лише проекти без ВКВ.

Після натискання кнопки «…» відкривається стандартне діалогове вікно вибору папки.

Після натискання кнопки закриття вікна основного інтерфейсу трекер згортається в трей.

З трею є контекстне меню з наступними командами:

  • «Відкрити трекер»;
  • «Шлях до проектів»
  • "Вихід".

За командою "Відкрити трекер" відкривається основний інтерфейс трекера.
За командою "Шлях до проектів" відкривається діалогове вікно налаштування шляху до проектів. У разі якщо:

  • Шлях ще не налаштований (при першому запуску трекера була натиснута кнопка «Скасувати»), користувач може скористатися всіма елементами діалогового вікна;
  • шлях налаштований, заблоковано всі елементи, крім кнопки "ОК"; при наведенні курсору на текстове поле введення виводиться підказка з повним шляхом до папки проектів.

За командою «Вихід» програма повністю закривається.

Висновок

  • Описано основні вимоги до проекту.
  • Розроблено прототипи інтерфейсів.
  • Визначено основну логіку роботи програми.
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Evgenii Legotckoi
  • 09 липня 2019 р. 07:42

Прикольно. Это такая локальная Jira получается?

А если добавить функционал по редактированию коммитов и веток, то получится базовая реализация TortoiseSVN. Только кроссплатформенная...

IscanderChe
  • 09 липня 2019 р. 08:58

Редактирование веток и коммитов - чересчур. Это надо подключать API самого SVN. Я заглянул туда и понял, что пока рановато...
Да, похоже на Jira, только я её не рассматривал. Ориентировался на Mantiss, Bugzilla и Trac.

Evgenii Legotckoi
  • 09 липня 2019 р. 09:11

Ясно)) А можно ещё переписать на QML и используя Web Assembly показывать прямо в браузере. Тогда может быть многопользовательский вариант системы.

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 01:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
i
innorwall14 листопада 2024 р. 21:26
Qt/C++ – Урок 031. QCustomPlot – Побудова діаграм з часом buy generic priligy We can just chat, and we will not lose too much time anyway
i
innorwall14 листопада 2024 р. 19:03
Qt/C++ - Урок 060. Налаштування зовнішнього вигляду програми під час виконання I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
i
innorwall14 листопада 2024 р. 11:42
Як скопіювати файли в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
i
innorwall14 листопада 2024 р. 09:09
Qt/C++ - Підручник 068. Hello World за допомогою системи збирання CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
Тепер обговоріть на форумі
i
innorwall14 листопада 2024 р. 03:39
добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
i
innorwall11 листопада 2024 р. 10:55
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов03 жовтня 2024 р. 04:05
Реализация навигации по разделам Спасибо Евгений!

Слідкуйте за нами в соціальних мережах