IscanderChe
IscanderCheШілде 9, 2019, 7:31 Т.Ж.

Қарапайым трекер жобасы. 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
  • Шілде 9, 2019, 7:42 Т.Ж.

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

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

IscanderChe
  • Шілде 9, 2019, 8:58 Т.Ж.

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

Evgenii Legotckoi
  • Шілде 9, 2019, 9:11 Т.Ж.

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

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
AD

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

  • Нәтиже:50ұпай,
  • Бағалау ұпайлары-4
m
  • molni99
  • Қаз. 26, 2024, 1:37 Т.Ж.

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

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
m
  • molni99
  • Қаз. 26, 2024, 1:29 Т.Ж.

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

  • Нәтиже:20ұпай,
  • Бағалау ұпайлары-10
Соңғы пікірлер
ИМ
Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
m
moogoҚар. 22, 2024, 7:17 Т.Ж.
Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectМаусым 4, 2022, 3:49 Т.Ж.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

Бізді әлеуметтік желілерде бақылаңыз