From 7e2bcea5deeb61e9d90533be495e486f9dc83f8c Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 24 Feb 2023 15:19:22 -0600 Subject: [PATCH] WIP on record scripts --- .../components/widgets/DashboardWidgets.tsx | 9 + .../records/view/RecordDeveloperView.tsx | 34 +- .../tests/ScriptTableTest.java | 1 - .../resources/fixtures/metaData/index.json | 293 ++++++++++++++++++ 4 files changed, 332 insertions(+), 5 deletions(-) diff --git a/src/qqq/components/widgets/DashboardWidgets.tsx b/src/qqq/components/widgets/DashboardWidgets.tsx index 2e625fe..5f0c9a7 100644 --- a/src/qqq/components/widgets/DashboardWidgets.tsx +++ b/src/qqq/components/widgets/DashboardWidgets.tsx @@ -38,6 +38,7 @@ import DividerWidget from "qqq/components/widgets/misc/Divider"; import FieldValueListWidget from "qqq/components/widgets/misc/FieldValueListWidget"; import QuickSightChart from "qqq/components/widgets/misc/QuickSightChart"; import RecordGridWidget from "qqq/components/widgets/misc/RecordGridWidget"; +import ScriptViewer from "qqq/components/widgets/misc/ScriptViewer"; import StepperCard from "qqq/components/widgets/misc/StepperCard"; import USMapWidget from "qqq/components/widgets/misc/USMapWidget"; import ParentWidget from "qqq/components/widgets/ParentWidget"; @@ -389,6 +390,14 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit ) } + { + widgetMetaData.type === "scriptViewer" && ( + widgetData && widgetData[i] && widgetData[i].queryParams && + + + + ) + } ); } diff --git a/src/qqq/pages/records/view/RecordDeveloperView.tsx b/src/qqq/pages/records/view/RecordDeveloperView.tsx index e05f8dc..ec6fe9f 100644 --- a/src/qqq/pages/records/view/RecordDeveloperView.tsx +++ b/src/qqq/pages/records/view/RecordDeveloperView.tsx @@ -46,6 +46,7 @@ import ScriptDocsForm from "qqq/components/scripts/ScriptDocsForm"; import ScriptLogsView from "qqq/components/scripts/ScriptLogsView"; import ScriptTestForm from "qqq/components/scripts/ScriptTestForm"; import CustomWidthTooltip from "qqq/components/tooltips/CustomWidthTooltip"; +import ScriptViewer from "qqq/components/widgets/misc/ScriptViewer"; import BaseLayout from "qqq/layouts/BaseLayout"; import DeveloperModeUtils from "qqq/utils/DeveloperModeUtils"; import Client from "qqq/utils/qqq/Client"; @@ -79,7 +80,8 @@ function RecordDeveloperView({table}: Props): JSX.Element const [tableMetaData, setTableMetaData] = useState(null); const [record, setRecord] = useState(null as QRecord); - const [recordJSON, setRecordJSON] = useState(""); + const [recordJSONObject, setRecordJSONObject] = useState({} as any); + const [recordJSONString, setRecordJSONString] = useState(""); const [associatedScripts, setAssociatedScripts] = useState([] as any[]); const [notFoundMessage, setNotFoundMessage] = useState(null); @@ -129,7 +131,8 @@ function RecordDeveloperView({table}: Props): JSX.Element { recordJSONObject[key] = record.values.get(key); } - setRecordJSON(JSON.stringify(recordJSONObject, null, 3)); + setRecordJSONObject(recordJSONObject); + setRecordJSONString(JSON.stringify(recordJSONObject, null, 3)); } catch (e) { @@ -309,7 +312,7 @@ function RecordDeveloperView({table}: Props): JSX.Element theme="github" name="recordJSON" editorProps={{$blockScrolling: true}} - value={recordJSON} + value={recordJSONString} readOnly width="100%" showPrintMargin={false} @@ -318,6 +321,29 @@ function RecordDeveloperView({table}: Props): JSX.Element { + associatedScripts && associatedScripts.map((object) => + { + let fieldName = object.associatedScript?.fieldName; + let field = tableMetaData.fields.get(fieldName); + let scriptId = recordJSONString ? recordJSONObject[fieldName] : null; + return ( +
+ + {field?.label} + + + {scriptId ? + + : <>No script here yet. {/* todo! */} + } + + +
+ ); + }) + } + + {/* associatedScripts && associatedScripts.map((object) => { let fieldName = object.associatedScript?.fieldName; @@ -460,7 +486,7 @@ function RecordDeveloperView({table}: Props): JSX.Element ); }) - } + */} diff --git a/src/test/java/com/kingsrook/qqq/materialdashboard/tests/ScriptTableTest.java b/src/test/java/com/kingsrook/qqq/materialdashboard/tests/ScriptTableTest.java index 0f3f85b..ca81a0e 100755 --- a/src/test/java/com/kingsrook/qqq/materialdashboard/tests/ScriptTableTest.java +++ b/src/test/java/com/kingsrook/qqq/materialdashboard/tests/ScriptTableTest.java @@ -59,7 +59,6 @@ public class ScriptTableTest extends QBaseSeleniumTest qSeleniumLib.waitForSelectorContaining("span", "uh, script"); - qSeleniumLib.takeScreenshotToFile(); // qSeleniumLib.waitForever(); } diff --git a/src/test/resources/fixtures/metaData/index.json b/src/test/resources/fixtures/metaData/index.json index 916a6a3..8bfc77d 100644 --- a/src/test/resources/fixtures/metaData/index.json +++ b/src/test/resources/fixtures/metaData/index.json @@ -68,6 +68,126 @@ "TABLE_GET", "TABLE_QUERY" ] + }, + "script": { + "name": "script", + "label": "Script", + "isHidden": false, + "iconName": "data_object", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY", + "TABLE_INSERT", + "TABLE_DELETE", + "TABLE_UPDATE" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true + }, + "scriptLog": { + "name": "scriptLog", + "label": "Script Log", + "isHidden": false, + "iconName": "receipt_long", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY", + "TABLE_INSERT", + "TABLE_DELETE", + "TABLE_UPDATE" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true + }, + "scriptType": { + "name": "scriptType", + "label": "Script Type", + "isHidden": false, + "iconName": "tune", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY", + "TABLE_INSERT", + "TABLE_DELETE", + "TABLE_UPDATE" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true + }, + "scriptRevision": { + "name": "scriptRevision", + "label": "Script Revision", + "isHidden": false, + "iconName": "history_edu", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true + }, + "scriptLogLine": { + "name": "scriptLogLine", + "label": "Script Log Line", + "isHidden": false, + "iconName": "reorder", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY", + "TABLE_INSERT", + "TABLE_DELETE", + "TABLE_UPDATE" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true + }, + "dataBag": { + "name": "dataBag", + "label": "Data Bag", + "isHidden": false, + "iconName": "local_mall", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY", + "TABLE_INSERT", + "TABLE_DELETE", + "TABLE_UPDATE" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true + }, + "dataBagVersion": { + "name": "dataBagVersion", + "label": "Data Bag Version", + "isHidden": false, + "iconName": "work_history", + "capabilities": [ + "TABLE_COUNT", + "TABLE_GET", + "TABLE_QUERY" + ], + "readPermission": true, + "insertPermission": true, + "editPermission": true, + "deletePermission": true } }, "processes": { @@ -368,6 +488,121 @@ ] } ] + }, + "developer": { + "name": "developer", + "label": "Developer", + "iconName": "data_object", + "widgets": [], + "children": [ + { + "type": "TABLE", + "name": "scriptType", + "label": "Script Type", + "iconName": "tune" + }, + { + "type": "TABLE", + "name": "script", + "label": "Script", + "iconName": "data_object" + }, + { + "type": "TABLE", + "name": "scriptRevision", + "label": "Script Revision", + "iconName": "history_edu" + }, + { + "type": "TABLE", + "name": "scriptLog", + "label": "Script Log", + "iconName": "receipt_long" + }, + { + "type": "TABLE", + "name": "scriptLogLine", + "label": "Script Log Line", + "iconName": "reorder" + }, + { + "type": "TABLE", + "name": "dataBag", + "label": "Data Bag", + "iconName": "local_mall" + }, + { + "type": "TABLE", + "name": "dataBagVersion", + "label": "Data Bag Version", + "iconName": "work_history" + } + ], + "childMap": { + "scriptType": { + "type": "TABLE", + "name": "scriptType", + "label": "Script Type", + "iconName": "tune" + }, + "dataBagVersion": { + "type": "TABLE", + "name": "dataBagVersion", + "label": "Data Bag Version", + "iconName": "work_history" + }, + "dataBag": { + "type": "TABLE", + "name": "dataBag", + "label": "Data Bag", + "iconName": "local_mall" + }, + "scriptLog": { + "type": "TABLE", + "name": "scriptLog", + "label": "Script Log", + "iconName": "receipt_long" + }, + "scriptLogLine": { + "type": "TABLE", + "name": "scriptLogLine", + "label": "Script Log Line", + "iconName": "reorder" + }, + "script": { + "type": "TABLE", + "name": "script", + "label": "Script", + "iconName": "data_object" + }, + "scriptRevision": { + "type": "TABLE", + "name": "scriptRevision", + "label": "Script Revision", + "iconName": "history_edu" + } + }, + "sections": [ + { + "name": "scripts", + "label": "Scripts", + "tables": [ + "scriptType", + "script", + "scriptRevision", + "scriptLog", + "scriptLogLine" + ] + }, + { + "name": "dataBags", + "label": "Data Bags", + "tables": [ + "dataBag", + "dataBagVersion" + ] + } + ] } }, "appTree": [ @@ -445,6 +680,56 @@ } ], "iconName": "stars" + }, + { + "type": "APP", + "name": "developer", + "label": "Developer", + "children": [ + { + "type": "TABLE", + "name": "scriptType", + "label": "Script Type", + "iconName": "tune" + }, + { + "type": "TABLE", + "name": "script", + "label": "Script", + "iconName": "data_object" + }, + { + "type": "TABLE", + "name": "scriptRevision", + "label": "Script Revision", + "iconName": "history_edu" + }, + { + "type": "TABLE", + "name": "scriptLog", + "label": "Script Log", + "iconName": "receipt_long" + }, + { + "type": "TABLE", + "name": "scriptLogLine", + "label": "Script Log Line", + "iconName": "reorder" + }, + { + "type": "TABLE", + "name": "dataBag", + "label": "Data Bag", + "iconName": "local_mall" + }, + { + "type": "TABLE", + "name": "dataBagVersion", + "label": "Data Bag Version", + "iconName": "work_history" + } + ], + "iconName": "data_object" } ], "branding": { @@ -585,6 +870,14 @@ "name": "QuickSightChartRenderer", "label": "Quick Sight", "type": "quickSightChart" + }, + "scriptViewer": { + "name": "scriptViewer", + "label": "Contents", + "type": "scriptViewer", + "isCard": true, + "storeDropdownSelections": false, + "hasPermission": true } }, "environmentValues": {