Skip to content

Commit ab02bec

Browse files
authored
Merge pull request #31 from cybertec-postgresql/27_task_up_down
[+] implement moving tasks up and down in a chain, closes #27
2 parents 454a4e9 + 2a31bee commit ab02bec

3 files changed

Lines changed: 50 additions & 0 deletions

File tree

forms/fmmain.lfm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,7 @@ object fmMain: TfmMain
784784
DisableIfNoHandler = False
785785
Hint = 'Move selected task up'
786786
ImageIndex = 2
787+
OnExecute = acMoveTaskUpExecute
787788
OnUpdate = acTaskToolbarUpdate
788789
end
789790
object acMoveTaskDown: TAction
@@ -792,6 +793,7 @@ object fmMain: TfmMain
792793
DisableIfNoHandler = False
793794
Hint = 'Move selected task down'
794795
ImageIndex = 1
796+
OnExecute = acMoveTaskDownExecute
795797
OnUpdate = acTaskToolbarUpdate
796798
end
797799
object acTaskDelete: TAction

forms/fmmain.pas

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ TfmMain = class(TForm)
7373
procedure acChainPostExecute(Sender: TObject);
7474
procedure acChainRefreshExecute(Sender: TObject);
7575
procedure acChainToolbarUpdate(Sender: TObject);
76+
procedure acMoveTaskDownExecute(Sender: TObject);
77+
procedure acMoveTaskUpExecute(Sender: TObject);
7678
procedure acTaskAddExecute(Sender: TObject);
7779
procedure acTaskCancelExecute(Sender: TObject);
7880
procedure acTaskDeleteExecute(Sender: TObject);
@@ -235,6 +237,40 @@ procedure TfmMain.acChainToolbarUpdate(Sender: TObject);
235237
acChainRefresh.Enabled := CanModify;
236238
end;
237239

240+
procedure TfmMain.acMoveTaskDownExecute(Sender: TObject);
241+
var idx: integer;
242+
begin
243+
with dmPgEngine do
244+
begin
245+
gridTasks.BeginUpdate;
246+
try
247+
idx := qryTasks.RecNo;
248+
MoveTaskDown(qryTasks.FieldByName('task_id').AsInteger);
249+
qryTasks.Refresh;
250+
qryTasks.RecNo := idx + 1;
251+
finally
252+
gridTasks.EndUpdate();
253+
end;
254+
end;
255+
end;
256+
257+
procedure TfmMain.acMoveTaskUpExecute(Sender: TObject);
258+
var idx: integer;
259+
begin
260+
with dmPgEngine do
261+
begin
262+
gridTasks.BeginUpdate;
263+
try
264+
idx := qryTasks.RecNo;
265+
MoveTaskUp(qryTasks.FieldByName('task_id').AsInteger);
266+
qryTasks.Refresh;
267+
qryTasks.RecNo := idx - 1;
268+
finally
269+
gridTasks.EndUpdate();
270+
end;
271+
end;
272+
end;
273+
238274
procedure TfmMain.acChainAddExecute(Sender: TObject);
239275
begin
240276
dmPgEngine.qryChains.Append;

udatamodule.pas

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ TdmPgEngine = class(TDataModule)
3737
function IsCronValueValid(const S: string): boolean;
3838
function IsConnected: boolean;
3939
function SelectSQL(const sql: string): string;
40+
procedure MoveTaskUp(const ATaskID: integer);
41+
procedure MoveTaskDown(const ATaskID: integer);
4042
end;
4143

4244
var
@@ -205,4 +207,14 @@ function TdmPgEngine.SelectSQL(const sql: string): string;
205207
end;
206208
end;
207209

210+
procedure TdmPgEngine.MoveTaskUp(const ATaskID: integer);
211+
begin
212+
PQConn.ExecuteDirect(Format('SELECT timetable.move_task_up(%d)', [ATaskID]));
213+
end;
214+
215+
procedure TdmPgEngine.MoveTaskDown(const ATaskID: integer);
216+
begin
217+
PQConn.ExecuteDirect(Format('SELECT timetable.move_task_down(%d)', [ATaskID]));
218+
end;
219+
208220
end.

0 commit comments

Comments
 (0)