From c29117c4a761eba24644f6f64227d192097f2084 Mon Sep 17 00:00:00 2001 From: anika-ahluwalia Date: Sun, 24 May 2020 15:17:23 -0500 Subject: added copy and changed params lists --- src/.DS_Store | Bin 8196 -> 8196 bytes src/client/views/nodes/ScriptingBox.tsx | 91 ++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/.DS_Store b/src/.DS_Store index 942a5672b..d2050d4be 100644 Binary files a/src/.DS_Store and b/src/.DS_Store differ diff --git a/src/client/views/nodes/ScriptingBox.tsx b/src/client/views/nodes/ScriptingBox.tsx index 902c42a07..6f02d8a16 100644 --- a/src/client/views/nodes/ScriptingBox.tsx +++ b/src/client/views/nodes/ScriptingBox.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import { documentSchema } from "../../../fields/documentSchemas"; import { createSchema, makeInterface, listSpec } from "../../../fields/Schema"; import { ScriptField, ComputedField } from "../../../fields/ScriptField"; -import { StrCast, ScriptCast, Cast } from "../../../fields/Types"; +import { StrCast, ScriptCast, Cast, NumCast } from "../../../fields/Types"; import { InteractionUtils } from "../../util/InteractionUtils"; import { CompileScript, ScriptSucccess, ScriptParam } from "../../util/Scripting"; import { ViewBoxAnnotatableComponent } from "../DocComponent"; @@ -15,6 +15,10 @@ import { OverlayView } from "../OverlayView"; import { DocumentIconContainer, DocumentIcon } from "./DocumentIcon"; import { List } from "../../../fields/List"; import { DragManager } from "../../util/DragManager"; +import { ContextMenuProps } from "../ContextMenuItem"; +import { copy } from "typescript-collections/dist/lib/arrays"; +import { Doc, WidthSym } from "../../../fields/Doc"; +import { ContextMenu } from "../ContextMenu"; const ScriptingSchema = createSchema({}); type ScriptingDocument = makeInterface<[typeof ScriptingSchema, typeof documentSchema]>; @@ -33,10 +37,10 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent void) => { //used for stacking and masonry view if (ele) { @@ -49,10 +53,36 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent e.stopPropagation(); + @computed get _paramsNames() { return Cast(this.dataDoc[this.props.fieldKey + "-paramsNames"], listSpec("string"), Cast(this.layoutDoc[this.props.fieldKey + "-paramsNames"], listSpec("string"), [])); } + @computed get _paramsTypes() { return Cast(this.dataDoc[this.props.fieldKey + "-paramsTypes"], listSpec("string"), Cast(this.layoutDoc[this.props.fieldKey + "-paramsTypes"], listSpec("string"), [])); } + @computed get _paramsValues() { return Cast(this.dataDoc[this.props.fieldKey + "-paramsValues"], listSpec("string"), Cast(this.layoutDoc[this.props.fieldKey + "-paramsValues"], listSpec("string"), [])); } + @computed get _paramsCollapsed() { return Cast(this.dataDoc[this.props.fieldKey + "-paramsCollapsed"], listSpec("boolean"), Cast(this.layoutDoc[this.props.fieldKey + "-paramsCollapsed"], listSpec("boolean"), [])); } set compileParams(value) { this.dataDoc[this.props.fieldKey + "-params"] = value; } + set _paramsNames(value: string[]) { + for (const param of this.compileParams) { + value.push(param.split(":")[0].trim()); + } + } + set _paramsTypes(value: string[]) { + for (const param of this.compileParams) { + value.push(param.split(":")[1].trim()); + } + } + set _paramsValues(value: string[]) { + for (const param of this.compileParams) { + value.push("undefined"); + } + } + set _paramsCollapsed(value: boolean[]) { + for (const param of this.compileParams) { + value.push(true); + } + } + + stopPropagation = (e: React.SyntheticEvent) => e.stopPropagation(); + @action componentDidMount() { this.rawScript = ScriptCast(this.dataDoc[this.props.fieldKey])?.script?.originalScript || this.rawScript; @@ -249,6 +279,20 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent { + const copy = Doc.MakeCopy(this.rootDoc, true); + copy.x = Number(this.dataDoc._width) + Number(this.dataDoc.x); + this.props.addDocument?.(copy); + } + + specificContextMenu = (e: React.MouseEvent): void => { + const existingMore = ContextMenu.Instance.findByDescription("More..."); + const mores: ContextMenuProps[] = existingMore && "subitems" in existingMore ? existingMore.subitems : []; + mores.push({ description: "Create a Copy", event: this.onCopy, icon: "copy" }); + !existingMore && ContextMenu.Instance.addItem({ description: "More...", subitems: mores, icon: "hand-point-right" }); + } + + render() { @@ -460,7 +504,7 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent : null} - {this._paramsTypes[i].split("|")[1] ?
+ {this._paramsTypes[i]?.split("|")[1] ?
{parameter + ":" + this._paramsTypes[i] + " = "} @@ -594,28 +638,31 @@ export class ScriptingBox extends ViewBoxAnnotatableComponent - onWheel={e => this.props.isSelected(true) && e.stopPropagation()}> +
- {scriptingInputs} -
: null} + onWheel={e => this.props.isSelected(true) && e.stopPropagation()}> - {this._applied ?
- {paramsInputs} -
: null} + {!!!this._applied ?
+ {scriptingInputs} +
: null} - {this.rootDoc.layout === "layout" ?
: (null)} + {this._applied ?
+ {paramsInputs} +
: null} - {!!!this._applied ?
- {scriptingTools} -
: null} + {this.rootDoc.layout === "layout" ?
: (null)} - {this._applied ?
- {paramsTools} -
: null} + {!!!this._applied ?
+ {scriptingTools} +
: null} + + {this._applied ?
+ {paramsTools} +
: null} +
); } -- cgit v1.2.3-70-g09d2