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
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 06:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 03:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

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