IscanderChe
IscanderChe9. Juli 2019 07:31

Einfaches Tracker-Projekt. Teil 1: Projektanforderungen

Das Projekt implementiert einen einfachen Issue-Tracker hauptsächlich für Softwareprojekte, die in Subversion gespeichert sind. Ich hoffe, es nur für mich selbst zu verwenden. Wenn Leser dieser Ressource interessiert sind, werde ich versuchen, den Code für die Möglichkeit einer universelleren Verwendung zu verfeinern und das Projekt auf GitHub zu veröffentlichen.

Die Verwendung von Subversion (im Folgenden als SVN bezeichnet) zum Speichern von Code wird durch die Tatsache bestimmt, dass SVN zusätzlich zu den Quelltexten von Programmen über einen selbstgeschriebenen Satz von Skripten zum Archivieren anderer Dokumente verfügt.

Das Projekt entstand aus der Notwendigkeit, den Überblick über unsere eigene Arbeit zu behalten. Eine Analyse von Analoga zeigte, dass die Verwendung verfügbarer kostenloser Tracker die Installation und Konfiguration zusätzlicher Software erfordert, wie z. B.: einen vollwertigen Webserver und Datenbankserver; Python und einige zusätzliche Skripte. Da ich den Tracker nur zur lokalen Kontrolle meiner eigenen Arbeit benötige, erschienen mir solche Kosten unnötig. Außerdem ist dies für mich eine notwendige Programmierpraxis.


Für die Umsetzung des Projekts wurde eine Client-Server-Architektur auf Basis von QLocalSocket gewählt, weil Es ist notwendig, zwei unabhängig voneinander arbeitende Komponenten zu verknüpfen - SVN und den Tracker selbst.

Der Tracker muss:

  • beim Systemstart ausführen;
  • haben eine Serverseite und eine visuelle Schnittstelle.

Der Tracker-Client muss gestartet werden, wenn die Projektänderungen durch den Pre-Commit-Hook an SVN übergeben werden. Der Tracker-Client muss dem Server den Namen des Projekts, die Nummer des zu schließenden Problems und die Revisionsnummer senden. Der Server wiederum muss diese Daten akzeptieren und die Aufgabe in den Zustand „geschlossen“ überführen.

Die Daten zum Schließen der Aufgabe werden vom Benutzer im Kommentar zum Commit in folgendem Format eingetragen:

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

Die restlichen Daten werden vom Auftraggeber vergeben.

Tracker-Schnittstelle

Die Tracker-Oberfläche sollte so aussehen.

Auf der linken Seite befindet sich die Projektmanagement-Gruppe. Es besteht aus folgenden Elementen:

  • Projektliste;
  • Schaltflächen "Neues Projekt", "Projekt archivieren", "Archiv öffnen".

Auf der rechten Seite befindet sich die Gruppe „Aufgabenverwaltung“. Es besteht aus folgenden Elementen:

  • Aufgabenliste;
  • Dropdown-Liste "Status der Aufgabe", hat drei Werte: "inaktiv", "in Bearbeitung", "geschlossen";
  • Schaltflächen "Neue Aufgabe", "Aufgabe bearbeiten", "Aufgabe löschen".

Projektmanagement

Die Auswahl eines der Projekte mit der Maus löst das Laden der Aufgabenliste für das entsprechende Projekt aus.

Ein Klick auf die Schaltfläche Neues Projekt öffnet den Projekterstellungsdialog.

In das Texteingabefeld muss der Benutzer den Namen des Projekts eingeben. Je nach Stellung des Funkschalters „SKB“ (Version Control System) kann der einzugebende Name folgende Zeichen enthalten:

  • "ohne Versionskontrollsystem" - beliebige Zeichen;
  • "unter dem Versionskontrollsystem" - nur lateinische Zeichen ohne Leerzeichen, einschließlich des Unterstrichs.

Ein Projekt ohne ACS in der Projektliste wird mit dem Buchstaben "M" in Klammern (aus dem englischen Handbuch - manuell) vor dem Namen des Projekts gekennzeichnet.

Über die Schaltfläche „Projekt archivieren“ können Sie ein Projekt archivieren, für das alle Aufgaben abgeschlossen sind. Wenn nicht alle Aufgaben für das Projekt abgeschlossen sind, gibt der Tracker eine entsprechende Warnung aus und unterbricht die Archivierung des Projekts. Wenn alle Aufgaben für das Projekt geschlossen und die Schaltfläche „Projekt archivieren“ gedrückt wird, wird der Projektname aus der Liste der Projekte in der Haupt-Tracker-Oberfläche ausgeschlossen, nachdem der Benutzer der entsprechenden Warnung zugestimmt hat.

Über die Schaltfläche „Archiv öffnen“ können Sie ein archiviertes Projekt öffnen und die zugehörige Aufgabenliste laden.

Durch Drücken der Schaltfläche „OK“ sollten die markierten Projekte in der Liste der Projekte im Hauptfenster des Trackers erscheinen. Bereits archivierte Projekte sind in der Projektliste mit dem Buchstaben „A“ in Klammern vor dem Projektnamen gekennzeichnet.

Aufgabenmanagement

Wenn keine Aufgabe ausgewählt ist, sind die Dropdown-Liste „Aufgabenstatus“ und die Schaltflächen „Aufgabe bearbeiten“ und „Aufgabe löschen“ deaktiviert. Wenn eine Aufgabe markiert ist, sind diese Elemente verfügbar. Außerdem wird die Dropdown-Liste Aufgabenstatus auf den in der Tabelle angegebenen Wert gesetzt. Wenn eine Aufgabe im geschlossenen Zustand ausgewählt wird, sind die Dropdown-Liste Aufgabenstatus sowie die Schaltflächen Aufgabe bearbeiten und Aufgabe löschen ebenfalls deaktiviert.

Je nach Zustand der Aufgabe wird die Zeile in der Aufgabentabelle in der entsprechenden Farbe eingefärbt:

  • nicht aktiv – weiße Farbe (254, 254, 254);
  • in Arbeit - gelbe Farbe (255, 254, 4);
  • geschlossen - grüne Farbe (143, 210, 68).

Wenn Sie den Wert der Dropdown-Liste Aufgabenstatus ändern, ändert sich der Status der Aufgabe in der Tabelle und die Farbe der Tabellenzeile. Bei der Einstellung „geschlossen“ wird zum Schließen der Aufgabe eine Bestätigung angefordert, da der Status in Zukunft nicht mehr geändert werden kann. Sind alle Projektaufgaben abgeschlossen, bietet der Tracker automatisch an, das Projekt zu archivieren.

Durch Betätigen der Schaltfläche „Neue Aufgabe“ öffnet sich ein Dialogfenster zur Eingabe / Bearbeitung einer Aufgabe.

In das Texteingabefeld muss der Benutzer eine Beschreibung der Aufgabe eingeben und die Art der Aufgabe aus der Dropdown-Liste auswählen. Es sind vier Arten von Aufgaben vordefiniert:

  • Fehler – Fehlerkorrektur;
  • Feature – Entwicklung eines neuen Features;
  • Issue – Bearbeitung einer externen Anfrage;
  • Meilenstein - geplante Veröffentlichung einer neuen Version.

Wenn eine Zeile in der Aufgabentabelle ausgewählt ist und der Aufgabenstatus „inaktiv“ oder „in Bearbeitung“ ist, sind die Schaltflächen „Aufgabe bearbeiten“ und „Aufgabe löschen“ verfügbar.
Durch Klicken auf die Schaltfläche Aufgabe bearbeiten wird der oben gezeigte Dialog zur Aufgabeneingabe/-bearbeitung geöffnet.
Durch Klicken auf die Schaltfläche „Aufgabe löschen“ muss der Benutzer das Löschen der Aufgabe bestätigen.

Datum und Revision werden beim Schließen der Aufgabe automatisch zugewiesen. Beim manuellen Schließen der Aufgabe (für beide Projektarten, mit und ohne FQ) wird das Feld „Revision“ auf „manuell“ gesetzt.

Tracker-Einstellungen

Beim ersten Start fordert der Tracker den Benutzer auf, den Pfad zum Projektordner festzulegen.

Wenn die Schaltfläche "Abbrechen" gedrückt wird, kann der Benutzer nur Projekte ohne harte Währung erstellen.

Durch Klicken auf die Schaltfläche "..." öffnet sich ein Standarddialog zur Ordnerauswahl.

Durch Drücken der Schaltfläche zum Schließen des Fensters der Hauptschnittstelle wird der Tracker in den Tray minimiert.

In der Taskleiste ist ein Kontextmenü mit den folgenden Befehlen verfügbar:

  • "Tracker öffnen";
  • "Pfad zu Projekten"
  • "Ausgang".

Der Befehl „Tracker öffnen“ öffnet die Hauptschnittstelle des Trackers.
Der Befehl "Pfad zu Projekten" öffnet einen Dialog zum Einstellen des Pfades zu Projekten. Wenn:

  • Der Pfad wurde noch nicht konfiguriert (die Schaltfläche "Abbrechen" wurde gedrückt, als der Tracker zum ersten Mal gestartet wurde), der Benutzer kann alle Elemente des Dialogfelds verwenden.
  • der Pfad ist konfiguriert, alle Elemente sind gesperrt, außer der Schaltfläche "OK"; Wenn Sie den Mauszeiger über das Eingabetextfeld bewegen, wird ein Tooltip mit dem vollständigen Pfad zum Projektordner angezeigt.

Der Befehl "Beenden" schließt die Anwendung vollständig.

Fazit

  • Die wesentlichen Anforderungen an das Projekt werden beschrieben.
  • Entwicklung von Schnittstellenprototypen.
  • Definiert die Hauptlogik der Anwendung.
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Evgenii Legotckoi
  • 9. Juli 2019 07:42

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

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

IscanderChe
  • 9. Juli 2019 08:58

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

Evgenii Legotckoi
  • 9. Juli 2019 09:11

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

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken