Commit 72262daa by Mac Stephens

update to fix insert row button and bug fixes WIP

parent 4a314fa8
......@@ -44,6 +44,20 @@ object FTaskItems: TFTaskItems
WidthPercent = 100.000000000000000000
OnClick = btnDeleteRowClick
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
Connection = DMConnection.ApiConnection
Left = 506
......
......@@ -5,11 +5,12 @@
<div class="d-flex align-items-center gap-3">
<div id="lbl_total_rows"></div>
<div class="d-flex gap-2">
<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_reload" class="btn btn-sm btn-primary">Reload</button>
</div>
<div class="d-flex gap-2">
<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_insert_row" class="btn btn-sm btn-success">Insert Row</button>
<button id="btn_reload" class="btn btn-sm btn-primary">Reload</button>
</div>
</div>
</div>
......
......@@ -30,10 +30,12 @@ type
xdwdsTasksitemNum: TIntegerField;
xdwdsTaskstaskItemId: TIntegerField;
btnDeleteRow: TWebButton;
btnInsertRow: TWebButton;
[async] procedure btnAddRowClick(Sender: TObject);
procedure btnReloadClick(Sender: TObject);
procedure WebFormCreate(Sender: TObject);
[async] procedure btnDeleteRowClick(Sender: TObject);
[async] procedure btnInsertRowClick(Sender: TObject);
private
FTaskId: string;
FApplicationOptions: TJSArray;
......@@ -62,7 +64,9 @@ type
procedure SetTaskLabel(const ATitle: string);
[async] procedure SaveField(AIndex: Integer; const AFieldName: string);
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;
procedure DropdownItemClick(Event: TJSEvent);
procedure DropdownEditClick(Event: TJSEvent);
......@@ -142,6 +146,7 @@ begin
Exit;
end;
btnInsertRow.Enabled := False;
btnAddRow.Enabled := False;
btnDeleteRow.Enabled := False;
......@@ -344,7 +349,7 @@ end;
begin
Utils.ShowSpinner('spinner');
try
if await(AddTaskRow) then
if await(AddTaskRowAtBottom) then
begin
CaptureTableScroll;
LoadTasks(FTaskId);
......@@ -383,6 +388,7 @@ begin
begin
FSelectedTaskItemId := 0;
FSelectedTaskId := 0;
btnInsertRow.Enabled := False;
btnDeleteRow.Enabled := False;
FPendingFocusItemNum := deletedItemNum;
......@@ -396,6 +402,20 @@ begin
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);
var
rowEl: TJSHTMLElement;
......@@ -412,6 +432,7 @@ begin
FSelectedTaskItemId := StrToIntDef(taskItemIdStr, 0);
FSelectedTaskId := StrToIntDef(taskIdStr, 0);
btnInsertRow.Enabled := FSelectedTaskItemId > 0;
btnDeleteRow.Enabled := FSelectedTaskItemId > 0;
ApplySelectedRowState;
end;
......@@ -431,43 +452,76 @@ begin
end;
[async] function TFTaskItems.AddTaskRow: Boolean;
[async] function TFTaskItems.AddTaskRowAtBottom: Boolean;
var
response: TXDataClientResponse;
insertAfterItemNum: Integer;
newItemNum: Integer;
maxItemNum: Integer;
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;
if FTaskId = '' then
if FSelectedTaskItemId <= 0 then
begin
Utils.ShowErrorModal('Missing task_id. Please reopen from emt3.');
Utils.ShowErrorModal('Select a row first.');
Exit;
end;
insertAfterItemNum := 0;
maxItemNum := 0;
if xdwdsTasks.Active then
begin
xdwdsTasks.First;
while not xdwdsTasks.Eof do
begin
if xdwdsTasksitemNum.AsInteger > maxItemNum then
maxItemNum := xdwdsTasksitemNum.AsInteger;
if xdwdsTaskstaskItemId.AsInteger = FSelectedTaskItemId then
begin
insertAfterItemNum := xdwdsTasksitemNum.AsInteger;
Break;
end;
xdwdsTasks.Next;
end;
end;
if insertAfterItemNum > 0 then
newItemNum := insertAfterItemNum + 1
else
newItemNum := maxItemNum + 1;
if insertAfterItemNum <= 0 then
begin
Utils.ShowErrorModal('Unable to find selected row.');
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
response := await(xdwcTasks.RawInvokeAsync(
......@@ -591,6 +645,7 @@ begin
xdwdsTasks.Open;
btnAddRow.Enabled := True;
btnInsertRow.Enabled := FSelectedTaskItemId > 0;
btnDeleteRow.Enabled := FSelectedTaskItemId > 0;
RenderTable;
......@@ -763,7 +818,7 @@ begin
Th('Status') +
Th('Status Date') +
Th('Form') +
Th('Issue') +
Th('Issue/To-Do') +
Th('Notes') +
'</tr></thead><tbody>';
......@@ -1150,6 +1205,7 @@ begin
FSelectedTaskItemId := StrToIntDef(taskItemIdStr, 0);
FSelectedTaskId := StrToIntDef(taskIdStr, 0);
btnInsertRow.Enabled := FSelectedTaskItemId > 0;
btnDeleteRow.Enabled := FSelectedTaskItemId > 0;
ApplySelectedRowState;
......
......@@ -2,7 +2,7 @@
MemoLogLevel=4
FileLogLevel=4
webClientVersion=0.8.8
LogFileNum=160
LogFileNum=161
[Database]
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