aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/util/CurrentUserUtils.ts1
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx24
2 files changed, 25 insertions, 0 deletions
diff --git a/src/client/util/CurrentUserUtils.ts b/src/client/util/CurrentUserUtils.ts
index ac506e2d6..1068e26bb 100644
--- a/src/client/util/CurrentUserUtils.ts
+++ b/src/client/util/CurrentUserUtils.ts
@@ -688,6 +688,7 @@ export class CurrentUserUtils {
return [
{title: "Preview", toolTip: "Show selection preview", btnType: ButtonType.ToggleButton, icon: "portrait", scripts:{ onClick: '{ return toggleSchemaPreview(_readOnly_); }'} },
{title: "1 Line",toolTip: "Single Line Rows", btnType: ButtonType.ToggleButton, icon: "eye", scripts:{ onClick: '{ return toggleSingleLineSchema(_readOnly_); }'} },
+ {title: "DataViz",toolTip: "Turn Schema Table into Data Visualization Doc", btnType: ButtonType.ClickButton, icon: "chart-bar", scripts:{ onClick: '{ datavizFromSchema()'} },
];
}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index e350c35cc..04e5ebb2c 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -1973,3 +1973,27 @@ ScriptingGlobals.add(function bringToFront() {
ScriptingGlobals.add(function sendToBack(doc: Doc) {
SelectionManager.Views().forEach(view => view.CollectionFreeFormView?.bringToFront(view.rootDoc, true));
});
+ScriptingGlobals.add(function datavizFromSchema(doc: Doc) {
+ SelectionManager.Views().forEach(view => {
+ const keys = Cast(view.rootDoc.schema_columnKeys, listSpec('string'))?.filter(key => key!="text");
+
+ if (!keys) return;
+ const children = DocListCast(view.rootDoc[Doc.LayoutFieldKey(view.rootDoc)]);
+ let csvRows = [];
+ csvRows.push(keys.join(','));
+ for (let i=0; i < children.length; i++) {
+ let eachRow = [];
+ for (let j=0; j<keys.length; j++){
+ eachRow.push(children[i][keys[j]]);
+ }
+ csvRows.push(eachRow);
+ }
+ const blob = new Blob([csvRows.join('\n')], { type: 'text/csv' });
+ const options = { x:0, y:-300, title: 'schemaTable', _width: 300, _height: 100, type: 'text/csv' };
+ const file = new File([blob], 'schemaTable', options);
+ const loading = Docs.Create.LoadingDocument(file, options);
+ loading.presentation_openInLightbox = true;
+ DocUtils.uploadFileToDoc(file, {}, loading);
+ if (view.ComponentView?.addDocument) view.ComponentView?.addDocument(loading);
+ })
+}); \ No newline at end of file