Subversion Repositories winbugtracker

Compare Revisions

Regard whitespace Rev 10 → Rev 11

/trunk/BugtrackerMain.dfm
134,9 → 134,11
object Label4: TLabel
Left = 240
Top = 101
Width = 29
Width = 31
Height = 13
Caption = 'Gefixt'
BiDiMode = bdLeftToRight
Caption = 'Status'
ParentBiDiMode = False
end
object Label5: TLabel
Left = 16
147,7 → 149,7
end
object Label6: TLabel
Left = 240
Top = 149
Top = 216
Width = 119
Height = 13
Caption = 'Ver'#246'ffentlicht als Version'
176,10 → 178,10
end
object Label9: TLabel
Left = 240
Top = 195
Width = 96
Top = 170
Width = 92
Height = 13
Caption = 'Geplant f'#252'r Version:'
Caption = 'Geplant f'#252'r Version'
end
object Label10: TLabel
Left = 17
206,7 → 208,7
Anchors = [akLeft, akTop, akRight, akBottom]
DataField = 'beschreibung'
DataSource = dsBugs
TabOrder = 9
TabOrder = 10
end
object DBEdit1: TDBEdit
Left = 15
215,7 → 217,7
Height = 21
DataField = 'titel'
DataSource = dsBugs
TabOrder = 5
TabOrder = 6
end
object DBLookupComboBox1: TDBLookupComboBox
Left = 16
240,19 → 242,19
DataField = 'erstellt'
DataSource = dsBugs
ReadOnly = True
TabOrder = 2
TabOrder = 8
end
object DBEdit3: TDBEdit
Left = 240
Top = 120
Top = 141
Width = 155
Height = 21
TabStop = False
Color = clBtnFace
DataField = 'fixdatum'
DataField = 'status_geaendert'
DataSource = dsBugs
ReadOnly = True
TabOrder = 4
TabOrder = 3
end
object DBLookupComboBox2: TDBLookupComboBox
Left = 15
265,11 → 267,11
ListField = 'modul'
ListSource = dsModule
NullValueKey = 46
TabOrder = 3
TabOrder = 4
end
object DBLookupComboBox3: TDBLookupComboBox
Left = 240
Top = 168
Top = 235
Width = 155
Height = 21
DataField = 'version_release'
277,7 → 279,7
KeyField = 'id'
ListField = 'version'
ListSource = dsVersionen
TabOrder = 6
TabOrder = 7
end
object TrackBar1: TTrackBar
Left = 245
285,18 → 287,9
Width = 164
Height = 45
Position = 5
TabOrder = 10
TabOrder = 11
OnChange = TrackBar1Change
end
object btnFixedToggle: TButton
Left = 401
Top = 118
Width = 72
Height = 25
Caption = 'Umschalten'
TabOrder = 8
OnClick = btnFixedToggleClick
end
object btnBearbeitungsnotiz: TButton
Left = 17
Top = 240
303,12 → 296,12
Width = 185
Height = 25
Caption = 'Notiz hinzuf'#252'gen'
TabOrder = 7
TabOrder = 9
OnClick = btnBearbeitungsnotizClick
end
object DBLookupComboBox4: TDBLookupComboBox
Left = 240
Top = 208
Top = 189
Width = 155
Height = 21
DataField = 'version_agenda'
316,7 → 309,7
KeyField = 'id'
ListField = 'version'
ListSource = dsVersionen
TabOrder = 11
TabOrder = 5
end
object cbxErfasser: TDBLookupComboBox
Left = 17
333,14 → 326,25
ReadOnly = True
TabOrder = 12
end
object DBLookupComboBox5: TDBLookupComboBox
Left = 240
Top = 120
Width = 155
Height = 21
DataField = 'status'
DataSource = dsBugs
KeyField = 'id'
ListField = 'status'
ListSource = dsStatus
TabOrder = 2
end
end
object ADOConnection1: TADOConnection
Connected = True
ConnectionString =
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +
'fo=False;Initial Catalog=WULI;Data Source=GREINER\CORA2012,49001'
'Provider=MSDASQL.1;Persist Security Info=False;Data Source=MySQL' +
' RAS;Initial Catalog=bugtracker;'
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 104
Top = 344
end
433,9 → 437,6
object qryBugsbearbeiter: TIntegerField
FieldName = 'bearbeiter'
end
object qryBugsfixdatum: TDateTimeField
FieldName = 'fixdatum'
end
object qryBugsversion_release: TIntegerField
FieldName = 'version_release'
OnValidate = qryBugsversion_releaseValidate
452,7 → 453,14
object qryBugsversion_agenda: TIntegerField
FieldName = 'version_agenda'
end
object qryBugsstatus: TIntegerField
FieldName = 'status'
OnChange = qryBugsstatusChange
end
object qryBugsstatus_geaendert: TDateTimeField
FieldName = 'status_geaendert'
end
end
object dsVersionen: TDataSource
DataSet = qryVersionen
Left = 240
503,4 → 511,17
Left = 304
Top = 344
end
object lkpStatus: TADOTable
Active = True
Connection = ADOConnection1
CursorType = ctStatic
TableName = 'lkp_status'
Left = 344
Top = 344
end
object dsStatus: TDataSource
DataSet = lkpStatus
Left = 344
Top = 312
end
end
/trunk/BugtrackerMain.pas
5,15 → 5,8
* - Spezielle Filter
* ... Auflisten nach Modul
* ... Anzeigen der Agenda
* - verbinden mit ticketsystem von HS
* - rtf controls?
* - Neue Felder:
* ... Erfasser
* ... Agenda
* ... Status = Offen, gefixt, Abgelehnt, Veröffentlicht
* ... RTF Feld als BIGTEXT definieren
* - Neue Aufteilung der States
* ... Open, Fixed, Published, Wontfix/Rejected, Planned(Agenda)
* - rtf control bar?
* - ein neu angelegter bug soll links aus der leiste verschwinden, wenn er nicht in das kriterium passt
*
* NOT INCLUDED:
* - duplicate of
72,7 → 65,6
Splitter1: TSplitter;
Hilfe1: TMenuItem;
ber1: TMenuItem;
btnFixedToggle: TButton;
btnBearbeitungsnotiz: TButton;
qryBugsid: TAutoIncField;
qryBugstitel: TStringField;
80,7 → 72,6
qryBugserstellt: TDateTimeField;
qryBugswichtigkeit: TIntegerField;
qryBugsbearbeiter: TIntegerField;
qryBugsfixdatum: TDateTimeField;
qryBugsversion_release: TIntegerField;
qryBugsmodul: TIntegerField;
qryBugsprojekt: TIntegerField;
95,6 → 86,11
Label9: TLabel;
cbxErfasser: TDBLookupComboBox;
Label10: TLabel;
lkpStatus: TADOTable;
dsStatus: TDataSource;
DBLookupComboBox5: TDBLookupComboBox;
qryBugsstatus: TIntegerField;
qryBugsstatus_geaendert: TDateTimeField;
procedure Mitarbeiter1Click(Sender: TObject);
procedure qryBugsAfterScroll(DataSet: TDataSet);
procedure Module1Click(Sender: TObject);
106,7 → 102,6
procedure Projektwechseln1Click(Sender: TObject);
procedure qryBugsAfterInsert(DataSet: TDataSet);
procedure ber1Click(Sender: TObject);
procedure btnFixedToggleClick(Sender: TObject);
procedure qryBugsversion_releaseValidate(Sender: TField);
procedure FormCreate(Sender: TObject);
procedure qryVersionenAfterInsert(DataSet: TDataSet);
115,6 → 110,7
procedure qryBugsBeforeCancel(DataSet: TDataSet);
procedure DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure qryBugsstatusChange(Sender: TField);
public
eingeloggtMitarbeiter: integer;
eingeloggtMitarbeiterName: string;
139,8 → 135,8
qryBugs.FieldByName('wichtigkeit').AsInteger := 5; // Mitte
qryBugs.FieldByName('erstellt').AsDateTime := Now;
qryBugs.FieldByName('erfasser').AsInteger := eingeloggtMitarbeiter;
// qryBugs.FieldByName('bearbeiter').AsInteger := eingeloggtMitarbeiter;
qryBugs.FieldByName('projekt').AsInteger := aktuellesProjekt;
qryBugs.FieldByName('status').AsInteger := 1; // Offen
end;
 
procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
181,11 → 177,31
else raise EAbort.Create('Abbruch durch Benutzer'); // Cancel geklickt
end;
 
procedure TfrmBugtracker.qryBugsstatusChange(Sender: TField);
var
col: TColor;
begin
qryBugsstatus_geaendert.AsDateTime := Now;
 
DBLookupComboBox5.KeyValue := qryBugsstatus.AsVariant; // nur benötigt, daamit wir auf DBLookupComboBox5.Text zugreifen können
case qryBugsstatus.AsInteger of
1: col := clRed; // Offen
2: col := clMaroon; // Abgelehnt
3: col := clPurple; // In Bearbeitung
4: col := clTeal; // Gefixt
5: col := clGreen; // Veröffentlicht
else
col := clBlack; // sollte nicht passieren
end;
NotizHinzufuegen(col, DBLookupComboBox5.Text);
end;
 
procedure TfrmBugtracker.qryBugsversion_releaseValidate(Sender: TField);
begin
if qryBugs.FieldByName('fixdatum').IsNull then
if qryBugs.FieldByName('status').AsInteger <> 5 then
begin
raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als gefixt markiert werden.');
// raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als "Veröffentlicht" markiert werden.');
qryBugs.FieldByName('status').AsInteger := 5;
end;
end;
 
225,24 → 241,9
 
procedure TfrmBugtracker.btnBearbeitungsnotizClick(Sender: TObject);
begin
NotizHinzufuegen(clRed, 'Notiz');
NotizHinzufuegen(clOlive, 'Notiz');
end;
 
procedure TfrmBugtracker.btnFixedToggleClick(Sender: TObject);
begin
if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
if qryBugs.FieldByName('fixdatum').IsNull then
begin
qryBugs.FieldByName('fixdatum').AsDateTime := Now;
NotizHinzufuegen(clGreen, 'Gefixt');
end
else
begin
qryBugs.FieldByName('fixdatum').Clear;
NotizHinzufuegen(clBlue, 'Neu eröffnet');
end;
end;
 
procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
249,22 → 250,22
0:
begin
// Meine offenen Bugs (nach Wichtigkeit)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND (status = 1 OR status = 3) AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
end;
1:
begin
// Alle offenen Bugs (nach Wichtigkeit)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL ORDER BY wichtigkeit DESC';
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND (status = 1 OR status = 3) ORDER BY wichtigkeit DESC';
end;
2:
begin
// Gelöst ohne Veröffentlichung (nach Lösungsdatum)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY fixdatum DESC';
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND status = 4 ORDER BY status_geaendert DESC';
end;
3:
begin
// Gelöst und Veröffentlicht (nach Version und Lösungsdatum)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY version_release DESC, fixdatum DESC';
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND status = 5 ORDER BY status_geaendert DESC';
end;
4:
begin
315,6 → 316,7
qryVersionen.Active := true;
tblProjekte.Active := true;
qryModule.Active := true;
lkpStatus.Active := true;
end;
 
procedure TfrmBugtracker.Mitarbeiter1Click(Sender: TObject);
347,6 → 349,8
if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
 
// Endet der Text mit zwei Zeilenabständen? Wenn nein, dann einfügen.
if Trim(DBRichEdit1.Text) <> '' then
begin
leerzeilen := 0;
if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-2, 2) = #13#10 then Inc(leerzeilen); // letzte Zeile
if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-4, 2) = #13#10 then Inc(leerzeilen); // Vorletzte Zeile
355,6 → 359,11
1: umbruch := #13#10;
2: umbruch := '';
end;
end
else
begin
umbruch := '';
end;
 
DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
DBRichEdit1.SelText := umbruch;
/trunk/bugtracker_mssql.sql
7,7 → 7,8
[wichtigkeit] [int] NOT NULL,
[erfasser] [int] NOT NULL,
[bearbeiter] [int] NULL,
[fixdatum] [datetime] NULL,
[status] [int] NOT NULL,
[status_geandert] [datetime] NULL,
[version_release] [int] NULL,
[version_agenda] [int] NULL,
[modul] [int] NULL,
14,6 → 15,7
[projekt] [int] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
ALTER TABLE [dbo].[bugs] ADD CONSTRAINT [DF_bugs_wichtigkeit] DEFAULT ((5)) FOR [wichtigkeit]
ALTER TABLE [dbo].[bugs] ADD CONSTRAINT [DF_bugs_status] DEFAULT ((1)) FOR [status]
 
CREATE TABLE [dbo].[mitarbeiter](
[id] [int] IDENTITY(1,1) NOT NULL,
36,3 → 38,8
[version] [varchar](255) NULL,
[projekt] [int] NOT NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[lkp_status](
[id] [int] IDENTITY(1,1) NOT NULL,
[status] [varchar](255) NULL
) ON [PRIMARY]
/trunk/bugtracker_mysql.sql
1,28 → 1,5
-- phpMyAdmin SQL Dump
-- version 4.2.0-dev
-- http://www.phpmyadmin.net

--
-- Host: localhost
-- Erstellungszeit: 21. Feb 2016 um 03:49
-- Server Version: 5.5.44-0+deb8u1
-- PHP-Version: 5.6.17-0+deb8u1
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- Datenbank: `bugtracker`
--
 
-- --------------------------------------------------------
 
--
-- Tabellenstruktur für Tabelle `bugs`
--
 
32,9 → 9,10
`beschreibung` longtext NOT NULL,
`erstellt` datetime DEFAULT NULL,
`wichtigkeit` int(11) NOT NULL DEFAULT '5',
`erfasser` int(11) DEFAULT NULL,
`erfasser` int(11) DEFAULT NOT NULL,
`bearbeiter` int(11) DEFAULT NULL,
`fixdatum` datetime DEFAULT NULL,
`status` int(11) NOT NULL DEFAULT '1',
`status_geandert` datetime DEFAULT NULL,
`version_release` int(11) NOT NULL,
`version_agenda` int(11) NOT NULL,
`modul` int(11) NOT NULL,
88,69 → 66,65
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
--
-- Indexes for dumped tables
-- Tabellenstruktur für Tabelle `lkp_status`
--
 
CREATE TABLE IF NOT EXISTS `lkp_status` (
`id` int(11) NOT NULL,
`status` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
 
--
-- Indexes for table `bugs`
-- Indexes for dumped tables
--
 
ALTER TABLE `bugs`
ADD PRIMARY KEY (`id`);
 
--
-- Indexes for table `mitarbeiter`
--
ALTER TABLE `mitarbeiter`
ADD PRIMARY KEY (`id`);
 
--
-- Indexes for table `module`
--
ALTER TABLE `module`
ADD PRIMARY KEY (`id`);
 
--
-- Indexes for table `projekte`
--
ALTER TABLE `projekte`
ADD PRIMARY KEY (`id`);
 
--
-- Indexes for table `versionen`
--
ALTER TABLE `versionen`
ADD PRIMARY KEY (`id`);
 
ALTER TABLE `lkp_status`
ADD PRIMARY KEY (`id`);
 
--
-- AUTO_INCREMENT for dumped tables
--
 
--
-- AUTO_INCREMENT for table `bugs`
--
ALTER TABLE `bugs`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `mitarbeiter`
--
 
ALTER TABLE `mitarbeiter`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `module`
--
 
ALTER TABLE `module`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `projekte`
--
 
ALTER TABLE `projekte`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT for table `versionen`
--
 
ALTER TABLE `versionen`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
ALTER TABLE `lkp_status`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
--
-- Daten für Tabelle `lkp_status`
--
 
INSERT INTO `lkp_status` (`id`, `status`) VALUES
(1, 'Offen'),
(2, 'Abgelehnt'),
(3, 'In Arbeit'),
(4, 'Abgeschlossen'),
(5, 'Veröffentlicht');