diff --git a/frontend-html/src/model/entities/DataView.ts b/frontend-html/src/model/entities/DataView.ts
index e0f44fb85d..c70897326b 100644
--- a/frontend-html/src/model/entities/DataView.ts
+++ b/frontend-html/src/model/entities/DataView.ts
@@ -90,7 +90,10 @@ import { ScreenFocusManager } from "model/entities/ScreenFocusManager";
import {TabIndex} from "./TabIndexOwner";
class SavedViewState {
- constructor(public selectedRowId: string | undefined) {
+ constructor(
+ public selectedRowId: string | undefined,
+ public selectedRowIndex: number | undefined
+ ) {
}
}
@@ -740,7 +743,6 @@ export class DataView implements IDataView {
yield*this.setSelectedRowId(this.dataTable.getRowId(row));
}
-
*setSelectedRowId(id: string | undefined): Generator {
if (this.selectedRowId === id) {
return;
@@ -761,16 +763,33 @@ export class DataView implements IDataView {
@action.bound
saveViewState(): void {
- this.viewStateStack.push(new SavedViewState(this.selectedRowId));
+ this.viewStateStack.push(
+ new SavedViewState(
+ this.selectedRowId,
+ this.getRowIndexById(this.selectedRowId)
+ )
+ );
}
@action.bound
*restoreViewState() {
const state = this.viewStateStack.pop();
if (state && state.selectedRowId) {
- yield*this.setSelectedRowId(state.selectedRowId);
+ const row = this.dataTable.getRowById(state.selectedRowId);
+ if(row) {
+ yield*this.setSelectedRowId(state.selectedRowId);
+ }
+ else if (state.selectedRowIndex) {
+ const nextRow = this.tableRows[state.selectedRowIndex];
+ const isDataRow = Array.isArray(nextRow);
+ if(isDataRow){
+ const nextRowId = this.dataTable.getRowId(nextRow);
+ yield*this.setSelectedRowId(nextRowId);
+ return;
+ }
+ }
if (!getSelectedRow(this)) {
- this.selectFirstRow();
+ yield*this.reselectOrSelectFirst();
}
getTablePanelView(this).scrollToCurrentCell();
}
diff --git a/frontend-html/src/model/entities/FormScreenLifecycle/FormScreenLifecycle.tsx b/frontend-html/src/model/entities/FormScreenLifecycle/FormScreenLifecycle.tsx
index 8d54b9acba..716de773e6 100644
--- a/frontend-html/src/model/entities/FormScreenLifecycle/FormScreenLifecycle.tsx
+++ b/frontend-html/src/model/entities/FormScreenLifecycle/FormScreenLifecycle.tsx
@@ -922,7 +922,6 @@ export class FormScreenLifecycle02 implements IFormScreenLifecycle02 {
}): any {
const rootDataView = args.rootDataView;
const api = getApi(this);
- yield*rootDataView.setSelectedRowId(undefined);
rootDataView.lifecycle.stopSelectedRowReaction();
try {
this.monitor.inFlow++;
@@ -956,9 +955,9 @@ export class FormScreenLifecycle02 implements IFormScreenLifecycle02 {
if (this.initialSelectedRowId) {
yield*rootDataView.setSelectedRowId(this.initialSelectedRowId);
} else {
- yield*rootDataView.reselectOrSelectFirst();
+ yield*rootDataView.restoreViewState();
}
- yield*rootDataView.restoreViewState();
+ getTablePanelView(rootDataView).scrollToCurrentCell();
} finally {
yield*rootDataView.lifecycle.startSelectedRowReaction(!args.preloadIsDirty);
this.monitor.inFlow--;
diff --git a/model-tests/model/Widgets/Menu/Menu.origam b/model-tests/model/Widgets/Menu/Menu.origam
index 675caba3d2..cf7acba85b 100644
--- a/model-tests/model/Widgets/Menu/Menu.origam
+++ b/model-tests/model/Widgets/Menu/Menu.origam
@@ -590,6 +590,17 @@
x:parentId="147775f5-451d-4efd-8634-7f27a2cf50a6"
ami:roles="*"
wrmi:workflow="Widgets/Workflow/Widgets/TestOAuthRequest.origam#TestOAuthRequest/4af5f7a5-3fbe-459b-aa6c-6ac2e7613b4f" />
+
+
+
+
\ No newline at end of file
diff --git a/model-tests/model/Widgets/Transformation/Widgets/New_Record_TestQueue1.origam___text___b4c78415-29fc-4bdb-a9c6-2351f9403703.xslt b/model-tests/model/Widgets/Transformation/Widgets/New_Record_TestQueue1.origam___text___b4c78415-29fc-4bdb-a9c6-2351f9403703.xslt
new file mode 100644
index 0000000000..258ccb8167
--- /dev/null
+++ b/model-tests/model/Widgets/Transformation/Widgets/New_Record_TestQueue1.origam___text___b4c78415-29fc-4bdb-a9c6-2351f9403703.xslt
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/model-tests/model/Widgets/Workflow/Widgets/CreateWQRow_TestQueue1.origam b/model-tests/model/Widgets/Workflow/Widgets/CreateWQRow_TestQueue1.origam
new file mode 100644
index 0000000000..3356c01ed3
--- /dev/null
+++ b/model-tests/model/Widgets/Workflow/Widgets/CreateWQRow_TestQueue1.origam
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file