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": {