Commit 72262daa by Mac Stephens

update to fix insert row button and bug fixes WIP

parent 4a314fa8
...@@ -44,6 +44,20 @@ object FTaskItems: TFTaskItems ...@@ -44,6 +44,20 @@ object FTaskItems: TFTaskItems
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = btnDeleteRowClick OnClick = btnDeleteRowClick
end end
object btnInsertRow: TWebButton
Left = 78
Top = 178
Width = 96
Height = 25
Caption = 'Insert Row'
ChildOrder = 3
ElementID = 'btn_insert_row'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btnInsertRowClick
end
object xdwcTasks: TXDataWebClient object xdwcTasks: TXDataWebClient
Connection = DMConnection.ApiConnection Connection = DMConnection.ApiConnection
Left = 506 Left = 506
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
<div class="d-flex align-items-center gap-3"> <div class="d-flex align-items-center gap-3">
<div id="lbl_total_rows"></div> <div id="lbl_total_rows"></div>
<div class="d-flex gap-2"> <div class="d-flex gap-2">
<button id="btn_add_row" class="btn btn-sm btn-success">Add Row</button> <button id="btn_add_row" class="btn btn-sm btn-success">Add Row</button>
<button id="btn_delete_row" class="btn btn-sm btn-danger">Delete Row</button> <button id="btn_delete_row" class="btn btn-sm btn-danger">Delete Row</button>
<button id="btn_reload" class="btn btn-sm btn-primary">Reload</button> <button id="btn_insert_row" class="btn btn-sm btn-success">Insert Row</button>
</div> <button id="btn_reload" class="btn btn-sm btn-primary">Reload</button>
</div>
</div> </div>
</div> </div>
......
...@@ -30,10 +30,12 @@ type ...@@ -30,10 +30,12 @@ type
xdwdsTasksitemNum: TIntegerField; xdwdsTasksitemNum: TIntegerField;
xdwdsTaskstaskItemId: TIntegerField; xdwdsTaskstaskItemId: TIntegerField;
btnDeleteRow: TWebButton; btnDeleteRow: TWebButton;
btnInsertRow: TWebButton;
[async] procedure btnAddRowClick(Sender: TObject); [async] procedure btnAddRowClick(Sender: TObject);
procedure btnReloadClick(Sender: TObject); procedure btnReloadClick(Sender: TObject);
procedure WebFormCreate(Sender: TObject); procedure WebFormCreate(Sender: TObject);
[async] procedure btnDeleteRowClick(Sender: TObject); [async] procedure btnDeleteRowClick(Sender: TObject);
[async] procedure btnInsertRowClick(Sender: TObject);
private private
FTaskId: string; FTaskId: string;
FApplicationOptions: TJSArray; FApplicationOptions: TJSArray;
...@@ -62,7 +64,9 @@ type ...@@ -62,7 +64,9 @@ type
procedure SetTaskLabel(const ATitle: string); procedure SetTaskLabel(const ATitle: string);
[async] procedure SaveField(AIndex: Integer; const AFieldName: string); [async] procedure SaveField(AIndex: Integer; const AFieldName: string);
procedure EditorBlur(Event: TJSEvent); procedure EditorBlur(Event: TJSEvent);
[async] function AddTaskRow: Boolean; [async] function AddTaskRowAtBottom: Boolean;
[async] function InsertTaskRowBelowSelection: Boolean;
[async] function AddTaskRowWithInsertAfter(const insertAfterItemNum, newItemNum: Integer): Boolean;
[async] function DeleteTaskRow: Boolean; [async] function DeleteTaskRow: Boolean;
procedure DropdownItemClick(Event: TJSEvent); procedure DropdownItemClick(Event: TJSEvent);
procedure DropdownEditClick(Event: TJSEvent); procedure DropdownEditClick(Event: TJSEvent);
...@@ -142,6 +146,7 @@ begin ...@@ -142,6 +146,7 @@ begin
Exit; Exit;
end; end;
btnInsertRow.Enabled := False;
btnAddRow.Enabled := False; btnAddRow.Enabled := False;
btnDeleteRow.Enabled := False; btnDeleteRow.Enabled := False;
...@@ -344,7 +349,7 @@ end; ...@@ -344,7 +349,7 @@ end;
begin begin
Utils.ShowSpinner('spinner'); Utils.ShowSpinner('spinner');
try try
if await(AddTaskRow) then if await(AddTaskRowAtBottom) then
begin begin
CaptureTableScroll; CaptureTableScroll;
LoadTasks(FTaskId); LoadTasks(FTaskId);
...@@ -383,6 +388,7 @@ begin ...@@ -383,6 +388,7 @@ begin
begin begin
FSelectedTaskItemId := 0; FSelectedTaskItemId := 0;
FSelectedTaskId := 0; FSelectedTaskId := 0;
btnInsertRow.Enabled := False;
btnDeleteRow.Enabled := False; btnDeleteRow.Enabled := False;
FPendingFocusItemNum := deletedItemNum; FPendingFocusItemNum := deletedItemNum;
...@@ -396,6 +402,20 @@ begin ...@@ -396,6 +402,20 @@ begin
end; end;
end; end;
[async] procedure TFTaskItems.btnInsertRowClick(Sender: TObject);
begin
Utils.ShowSpinner('spinner');
try
if await(InsertTaskRowBelowSelection) then
begin
CaptureTableScroll;
LoadTasks(FTaskId);
end;
finally
Utils.HideSpinner('spinner');
end;
end;
procedure TFTaskItems.RowClick(Event: TJSEvent); procedure TFTaskItems.RowClick(Event: TJSEvent);
var var
rowEl: TJSHTMLElement; rowEl: TJSHTMLElement;
...@@ -412,6 +432,7 @@ begin ...@@ -412,6 +432,7 @@ begin
FSelectedTaskItemId := StrToIntDef(taskItemIdStr, 0); FSelectedTaskItemId := StrToIntDef(taskItemIdStr, 0);
FSelectedTaskId := StrToIntDef(taskIdStr, 0); FSelectedTaskId := StrToIntDef(taskIdStr, 0);
btnInsertRow.Enabled := FSelectedTaskItemId > 0;
btnDeleteRow.Enabled := FSelectedTaskItemId > 0; btnDeleteRow.Enabled := FSelectedTaskItemId > 0;
ApplySelectedRowState; ApplySelectedRowState;
end; end;
...@@ -431,43 +452,76 @@ begin ...@@ -431,43 +452,76 @@ begin
end; end;
[async] function TFTaskItems.AddTaskRow: Boolean; [async] function TFTaskItems.AddTaskRowAtBottom: Boolean;
var var
response: TXDataClientResponse;
insertAfterItemNum: Integer;
newItemNum: Integer;
maxItemNum: Integer; maxItemNum: Integer;
begin begin
maxItemNum := 0;
if xdwdsTasks.Active then
begin
xdwdsTasks.First;
while not xdwdsTasks.Eof do
begin
if xdwdsTasksitemNum.AsInteger > maxItemNum then
maxItemNum := xdwdsTasksitemNum.AsInteger;
xdwdsTasks.Next;
end;
end;
Result := await(AddTaskRowWithInsertAfter(0, maxItemNum + 1));
end;
[async] function TFTaskItems.InsertTaskRowBelowSelection: Boolean;
var
insertAfterItemNum: Integer;
begin
Result := False; Result := False;
if FTaskId = '' then if FSelectedTaskItemId <= 0 then
begin begin
Utils.ShowErrorModal('Missing task_id. Please reopen from emt3.'); Utils.ShowErrorModal('Select a row first.');
Exit; Exit;
end; end;
insertAfterItemNum := 0; insertAfterItemNum := 0;
maxItemNum := 0;
if xdwdsTasks.Active then if xdwdsTasks.Active then
begin begin
xdwdsTasks.First; xdwdsTasks.First;
while not xdwdsTasks.Eof do while not xdwdsTasks.Eof do
begin begin
if xdwdsTasksitemNum.AsInteger > maxItemNum then
maxItemNum := xdwdsTasksitemNum.AsInteger;
if xdwdsTaskstaskItemId.AsInteger = FSelectedTaskItemId then if xdwdsTaskstaskItemId.AsInteger = FSelectedTaskItemId then
begin
insertAfterItemNum := xdwdsTasksitemNum.AsInteger; insertAfterItemNum := xdwdsTasksitemNum.AsInteger;
Break;
end;
xdwdsTasks.Next; xdwdsTasks.Next;
end; end;
end; end;
if insertAfterItemNum > 0 then if insertAfterItemNum <= 0 then
newItemNum := insertAfterItemNum + 1 begin
else Utils.ShowErrorModal('Unable to find selected row.');
newItemNum := maxItemNum + 1; Exit;
end;
Result := await(AddTaskRowWithInsertAfter(insertAfterItemNum, insertAfterItemNum + 1));
end;
[async] function TFTaskItems.AddTaskRowWithInsertAfter(const insertAfterItemNum, newItemNum: Integer): Boolean;
var
response: TXDataClientResponse;
begin
Result := False;
if FTaskId = '' then
begin
Utils.ShowErrorModal('Missing task_id. Please reopen from emt3.');
Exit;
end;
try try
response := await(xdwcTasks.RawInvokeAsync( response := await(xdwcTasks.RawInvokeAsync(
...@@ -591,6 +645,7 @@ begin ...@@ -591,6 +645,7 @@ begin
xdwdsTasks.Open; xdwdsTasks.Open;
btnAddRow.Enabled := True; btnAddRow.Enabled := True;
btnInsertRow.Enabled := FSelectedTaskItemId > 0;
btnDeleteRow.Enabled := FSelectedTaskItemId > 0; btnDeleteRow.Enabled := FSelectedTaskItemId > 0;
RenderTable; RenderTable;
...@@ -763,7 +818,7 @@ begin ...@@ -763,7 +818,7 @@ begin
Th('Status') + Th('Status') +
Th('Status Date') + Th('Status Date') +
Th('Form') + Th('Form') +
Th('Issue') + Th('Issue/To-Do') +
Th('Notes') + Th('Notes') +
'</tr></thead><tbody>'; '</tr></thead><tbody>';
...@@ -1150,6 +1205,7 @@ begin ...@@ -1150,6 +1205,7 @@ begin
FSelectedTaskItemId := StrToIntDef(taskItemIdStr, 0); FSelectedTaskItemId := StrToIntDef(taskItemIdStr, 0);
FSelectedTaskId := StrToIntDef(taskIdStr, 0); FSelectedTaskId := StrToIntDef(taskIdStr, 0);
btnInsertRow.Enabled := FSelectedTaskItemId > 0;
btnDeleteRow.Enabled := FSelectedTaskItemId > 0; btnDeleteRow.Enabled := FSelectedTaskItemId > 0;
ApplySelectedRowState; ApplySelectedRowState;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
MemoLogLevel=4 MemoLogLevel=4
FileLogLevel=4 FileLogLevel=4
webClientVersion=0.8.8 webClientVersion=0.8.8
LogFileNum=160 LogFileNum=161
[Database] [Database]
Server=192.168.102.131 Server=192.168.102.131
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment