diff --git a/CanvasApp/Canvas.js b/CanvasApp/Canvas.js index 50e4a896e..18fe9869e 100644 --- a/CanvasApp/Canvas.js +++ b/CanvasApp/Canvas.js @@ -922,10 +922,12 @@ function newCanvas () { function checkDrag (event) { try { if (containerDragStarted === true || floatingObjectDragStarted === true || viewPortBeingDragged === true) { - thisObject.mouse.event = event - thisObject.mouse.position.x = event.pageX - thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN - thisObject.mouse.action = 'dragging' + if (event !== undefined) { + thisObject.mouse.event = event + thisObject.mouse.position.x = event.pageX + thisObject.mouse.position.y = event.pageY - CURRENT_TOP_MARGIN + thisObject.mouse.action = 'dragging' + } browserCanvas.style.cursor = 'grabbing' thisObject.eventHandler.raiseEvent('Dragging', undefined) diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js index 586a01dbd..44dd1e1db 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js @@ -7,6 +7,7 @@ function newChainAttachDetach () { return thisObject function chainDetachNode (node, rootNodes) { + if (node.payload.parentNode === undefined) { return } switch (node.type) { case 'Phase': { let payload = node.payload diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js index cdf5385dc..68d2cf69f 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js @@ -20,5 +20,8 @@ function newReferenceAttachDetach () { function completeDetachment (node) { node.payload.referenceParent = undefined + if (node.savedPayload !== undefined) { + node.savedPayload.referenceParent = undefined + } } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js new file mode 100644 index 000000000..a2913fda7 --- /dev/null +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js @@ -0,0 +1,57 @@ +function newSuperScriptsFunctions () { + thisObject = { + runSuperScript: runSuperScript + } + + return thisObject + + function runSuperScript (node, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes) { + try { + let clone = functionLibraryNodeCloning.getNodeClone + let executionResult = true + + function setup (templateClone, target) { + spawnPosition.x = target.payload.position.x + spawnPosition.y = target.payload.position.y + + functionLibraryUiObjectsFromNodes.createUiObjectFromNode(templateClone, target, target) + } + + /* Validations */ + if (executionResult === true && node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Super Action node needs a Parent Node.') + executionResult = false + } + if (executionResult === true && node.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Super Action node needs to reference a Master Script Node.') + executionResult = false + } + if (executionResult === true && node.payload.referenceParent.javascriptCode === undefined) { + node.payload.uiObject.setErrorMessage('Master Script Node needs to have a child Javascript Code Node.') + executionResult = false + } + + let superAction = node + let masterScript = node.payload.referenceParent + + eval(masterScript.javascriptCode.code) + + let masterScriptInstance = newNewMasterScriptInstance() + + if (executionResult === true) { + executionResult = masterScriptInstance.runValidations(superAction, masterScript) + } + if (executionResult === true) { + executionResult = masterScriptInstance.runScript(superAction, masterScript) + } + if (executionResult === true) { + superAction.payload.uiObject.setValue('Execution Completed Successfully') + } else { + superAction.payload.uiObject.setValue('Execution Failed') + } + } catch (err) { + superAction.payload.uiObject.setErrorMessage(err.message) + superAction.payload.uiObject.setValue('Execution Failed') + } + } +} diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js index 96f7bfef3..19f48fa43 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js @@ -189,6 +189,16 @@ function newUiObjectsFromNodes () { } } + /* Create Empty Arrays for properties of type Array */ + if (nodeDefinition.properties !== undefined) { + for (let i = 0; i < nodeDefinition.properties.length; i++) { + let property = nodeDefinition.properties[i] + if (property.type === 'array') { + object[property.name] = [] + } + } + } + if (nodeDefinition !== undefined) { if (nodeDefinition.initialValues !== undefined) { if (nodeDefinition.initialValues.code !== undefined) { diff --git a/CanvasApp/DesignSpace/Workspace/Workspace.js b/CanvasApp/DesignSpace/Workspace/Workspace.js index e9075d8a7..033f8ed0b 100644 --- a/CanvasApp/DesignSpace/Workspace/Workspace.js +++ b/CanvasApp/DesignSpace/Workspace/Workspace.js @@ -56,6 +56,7 @@ function newWorkspace () { let functionLibrarySessionFunctions = newSessionFunctions() let functionLibraryShortcutKeys = newShortcutKeys() let functionLibraryOnFocus = newOnFocus() + let functionLibrarySuperScripts = newSuperScriptsFunctions() thisObject.nodeChildren = newNodeChildren() @@ -366,6 +367,21 @@ function newWorkspace () { functionLibrarySessionFunctions.stopSession(payload.node, functionLibraryProtocolNode, callBackFunction) } break + case 'Run Super Action': + { + functionLibrarySuperScripts.runSuperScript(payload.node, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes) + } + break + case 'Remove Parent': + { + chainDetachNode(payload.node) + } + break + case 'Remove Reference': + { + referenceDetachNode(payload.node) + } + break } } } diff --git a/CanvasApp/FloatingSpace/CircularMenuItem.js b/CanvasApp/FloatingSpace/CircularMenuItem.js index b54779f50..af5c83a95 100644 --- a/CanvasApp/FloatingSpace/CircularMenuItem.js +++ b/CanvasApp/FloatingSpace/CircularMenuItem.js @@ -150,15 +150,15 @@ function newCircularMenuItem () { if (thisObject.type === 'Icon Only') { switch (thisObject.ring) { case 1: { - radiusGrowthFactor = 5 + radiusGrowthFactor = 6 break } case 2: { - radiusGrowthFactor = 3.5 + radiusGrowthFactor = 4.5 break } case 3: { - radiusGrowthFactor = 2 + radiusGrowthFactor = 3 break } } @@ -275,6 +275,7 @@ function newCircularMenuItem () { /* A Click during confirmation executes the pre-defined action. */ if (temporaryStatus === STATUS_WAITING_CONFIRMATION || temporaryStatus === STATUS_PRIMARY_WORK_DONE) { executeAction() + setStatus(thisObject.workDoneLabel, UI_COLOR.PATINATED_TURQUOISE, 100, STATUS_SECONDARY_WORK_DONE) return } } diff --git a/CanvasApp/FloatingSpace/UiObjectConstructor.js b/CanvasApp/FloatingSpace/UiObjectConstructor.js index ac5ee4dd3..fa20f3cb6 100644 --- a/CanvasApp/FloatingSpace/UiObjectConstructor.js +++ b/CanvasApp/FloatingSpace/UiObjectConstructor.js @@ -246,6 +246,34 @@ function newUiObjectConstructor () { } ) } + menuItemsInitialValues.push( + { + action: 'Remove Parent', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'detach', + iconPathOff: 'detach', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + ring: 3 + } + ) + menuItemsInitialValues.push( + { + action: 'Remove Reference', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: true, + iconPathOn: 'delink', + iconPathOff: 'delink', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + ring: 3 + } + ) } function getMenuItemsInitialValues (uiObject, floatingObject, payload) { diff --git a/CanvasApp/FloatingSpace/UiObjectTitle.js b/CanvasApp/FloatingSpace/UiObjectTitle.js index efb8a1da2..00f7984cd 100644 --- a/CanvasApp/FloatingSpace/UiObjectTitle.js +++ b/CanvasApp/FloatingSpace/UiObjectTitle.js @@ -141,6 +141,11 @@ function newUiObjectTitle () { } } + /* The name becomes the title. */ + if (thisObject.payload.node.name !== undefined) { + thisObject.payload.title = thisObject.payload.node.name + } + let title = trimTitle(thisObject.payload.title) /* Here we set the dimensions and position of this object */ diff --git a/CanvasApp/Spaces/DesignSpace.js b/CanvasApp/Spaces/DesignSpace.js index d1c1f7faf..c727b5a7b 100644 --- a/CanvasApp/Spaces/DesignSpace.js +++ b/CanvasApp/Spaces/DesignSpace.js @@ -265,7 +265,16 @@ function newDesignSpace () { 'key-down', 'key-left', 'key-right', - 'key-up' + 'key-up', + 'master-script', + 'scripts-library', + 'super-action', + 'super-scripts', + 'template-script', + 'template-structure', + 'template-target', + 'delink', + 'detach' ] for (let i = 0; i < iconsNames.length; i++) { diff --git a/Inter-Process-Files/AppSchema.json b/Inter-Process-Files/AppSchema.json index c4fd20aba..d7d6fa4f0 100644 --- a/Inter-Process-Files/AppSchema.json +++ b/Inter-Process-Files/AppSchema.json @@ -280,7 +280,7 @@ "code": "// Type you code here" }, "chainAttachesTo": { - "compatibleTypes": "->Condition->Procedure Initialization->Procedure Loop->Plotter Module->Plotter Panel->" + "compatibleTypes": "->Condition->Procedure Initialization->Procedure Loop->Plotter Module->Plotter Panel->Master Script->" }, "menuItems": [ { @@ -728,6 +728,12 @@ "relatedUiObject": "Charting Space", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Super Scripts", + "relatedUiObject": "Super Scripts", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Share Workspace", "label": "Share", @@ -825,6 +831,298 @@ ], "propertyNameAtParent": "conditions" }, + { + "type": "Super Scripts", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Scripts Library", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "scriptsLibrary", + "relatedUiObject": "Scripts Library", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Super Scripts", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "isTitleAllwaysVisible": false, + "isHierarchyHead": true, + "addLeftIcons": true, + "level": 1, + "icon": "super-scripts", + "properties": [ + { + "name": "scriptsLibrary", + "type": "node", + "childType": "Scripts Library", + "autoAdd": true + } + ] + }, + { + "type": "Scripts Library", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Master Script", + "relatedUiObject": "Master Script", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Scripts Library", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "propertyNameAtParent": "scriptsLibrary", + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "level": 1, + "chainAttachesTo": { + "compatibleTypes": "->Super Scripts->" + }, + "icon": "scripts-library", + "properties": [ + { + "name": "masterScripts", + "type": "array", + "childType": "Master Script", + "autoAdd": true + } + ] + }, + { + "type": "Master Script", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Template Script", + "relatedUiObject": "Template Script", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Javascript Code", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "javascriptCode", + "relatedUiObject": "Javascript Code", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Master Script", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "propertyNameAtParent": "masterScripts", + "isTitleAllwaysVisible": true, + "addLeftIcons": true, + "level": 2, + "chainAttachesTo": { + "compatibleTypes": "->Scripts Library->" + }, + "icon": "master-script", + "properties": [ + { + "name": "templateScripts", + "type": "array", + "childType": "Template Script" + }, + { + "name": "javascriptCode", + "type": "node", + "childType": "Javascript Code", + "autoAdd": true + } + ] + }, + { + "type": "Template Script", + "menuItems": [ + { + "action": "Add UI Object", + "label": "Add Template Structure", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "templateStructure", + "relatedUiObject": "Template Structure", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Template Target", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "templateTarget", + "relatedUiObject": "Template Target", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Add UI Object", + "label": "Add Javascript Code", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "javascriptCode", + "relatedUiObject": "Javascript Code", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Template Script", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "propertyNameAtParent": "templateScripts", + "isTitleAllwaysVisible": true, + "addLeftIcons": true, + "level": 3, + "chainAttachesTo": { + "compatibleTypes": "->Master Script->" + }, + "icon": "template-script", + "properties": [ + { + "name": "templateStructure", + "type": "node", + "childType": "Template Structure", + "autoAdd": true + }, + { + "name": "templateTarget", + "type": "node", + "childType": "Template Target", + "autoAdd": true + }, + { + "name": "javascriptCode", + "type": "node", + "childType": "Javascript Code", + "autoAdd": true + } + ] + }, + { + "type": "Template Structure", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Template Structure", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "propertyNameAtParent": "templateStructure", + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Template Script->" + }, + "icon": "template-structure", + "properties": [ + { + "name": "taskManagers", + "type": "node", + "childType": "Task Manager" + }, + { + "name": "singleMarketData", + "type": "node", + "childType": "Single Market Data" + }, + { + "name": "sessionReferences", + "type": "node", + "childType": "Session Reference" + }, + { + "name": "timeMachines", + "type": "node", + "childType": "Time Machine" + } + ] + }, + { + "type": "Template Target", + "menuItems": [ + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Template Target", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "propertyNameAtParent": "templateTarget", + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Template Script->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Dashboard->Session Independent Data->Session Based Data->Data Mining->Testing Environment->Production Environment->" + }, + "icon": "template-target", + "properties": [] + }, + { + "type": "Super Action", + "menuItems": [ + { + "action": "Run Super Action", + "label": "Run", + "askConfirmation": true, + "confirmationLabel": "Confirm to Run", + "workDoneLabel": "Super Action Executed", + "iconPathOn": "paper-plane", + "iconPathOff": "paper-plane", + "actionFunction": "payload.onMenuItemClick" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete Super Action", + "iconPathOn": "delete", + "iconPathOff": "delete", + "actionFunction": "payload.onMenuItemClick" + } + ], + "propertyNameAtParent": "superActions", + "isTitleAllwaysVisible": true, + "addLeftIcons": true, + "level": 4, + "chainAttachesTo": { + "compatibleTypes": "->Market->" + }, + "referenceAttachesTo": { + "compatibleTypes": "->Master Script->" + }, + "icon": "super-action", + "properties": [] + }, { "type": "Network", "menuItems": [ @@ -974,7 +1272,7 @@ "addLeftIcons": true, "level": 1, "chainAttachesTo": { - "compatibleTypes": "->Data Mining->Testing Environment->Production Environment->" + "compatibleTypes": "->Data Mining->Testing Environment->Production Environment->Template Structure->" }, "icon": "task-manager", "properties": [ @@ -4495,6 +4793,12 @@ "relatedUiObject": "Market Quoted Asset", "actionFunction": "payload.onMenuItemClick" }, + { + "action": "Add UI Object", + "label": "Add Super Action", + "relatedUiObject": "Super Action", + "actionFunction": "payload.onMenuItemClick" + }, { "action": "Config Market", "actionFunction": "uiObject.configEditor.activate", @@ -4524,6 +4828,11 @@ "type": "node", "childType": "Market Quoted Asset", "autoAdd": true + }, + { + "name": "superActions", + "type": "array", + "childType": "Super Action" } ], "addLeftIcons": true, @@ -4912,7 +5221,7 @@ "isTitleAllwaysVisible": true, "icon": "time-machine", "chainAttachesTo": { - "compatibleTypes": "->Dashboard->" + "compatibleTypes": "->Dashboard->Template Structure->" }, "propertyNameAtParent": "timeMachines", "properties": [ @@ -5474,7 +5783,7 @@ "propertyNameAtParent": "sessionBasedData", "properties": [ { - "name": "sessionReference", + "name": "sessionReferences", "type": "array", "childType": "Session Reference", "autoAdd": true @@ -5487,6 +5796,8 @@ { "action": "Add UI Object", "label": "Add Single Market Data", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "singleMarketData", "relatedUiObject": "Single Market Data", "actionFunction": "payload.onMenuItemClick" }, @@ -5512,13 +5823,13 @@ "compatibleTypes": "->Backtesting Session->Paper Trading Session->Fordward Testing Session->Live Trading Session->" }, "chainAttachesTo": { - "compatibleTypes": "->Session Based Data->" + "compatibleTypes": "->Session Based Data->Template Structure->" }, - "propertyNameAtParent": "sessionReference", + "propertyNameAtParent": "sessionReferences", "properties": [ { "name": "singleMarketData", - "type": "array", + "type": "node", "childType": "Single Market Data", "autoAdd": true } @@ -5555,7 +5866,7 @@ "compatibleTypes": "->Market->" }, "chainAttachesTo": { - "compatibleTypes": "->Session Independent Data->Session Reference->" + "compatibleTypes": "->Session Independent Data->Session Reference->Template Structure->" }, "propertyNameAtParent": "singleMarketData", "properties": [ diff --git a/Legacy-Code/AAMasters/plotters/Plotters-Trading-Simulation/Conditions.js b/Legacy-Code/AAMasters/plotters/Plotters-Trading-Simulation/Conditions.js index 4e77bac9f..bab56a965 100644 --- a/Legacy-Code/AAMasters/plotters/Plotters-Trading-Simulation/Conditions.js +++ b/Legacy-Code/AAMasters/plotters/Plotters-Trading-Simulation/Conditions.js @@ -34,7 +34,7 @@ container.initialize(); thisObject.container = container; - let coordinateSystem = newCoordinateSystem(); // Needed to be able to plot on the timeline, otherwise not. + let coordinateSystem let timeFrame; // This will hold the current Time Frame the user is at. let datetime; // This will hold the current Datetime the user is at. @@ -58,6 +58,7 @@ let dimmensionsChangedEventSubscriptionId let marketFilesUpdatedEventSubscriptionId let dailyFilesUpdatedEventSubscriptionId + let scaleChangedEventSubscriptionId return thisObject; @@ -86,13 +87,15 @@ marketFile = undefined; fileCursor = undefined; + finalizeCoordinateSystem() + coordinateSystem = undefined } catch (err) { if (ERROR_LOG === true) { logger.write("[ERROR] finalize -> err = " + err.stack); } } } - function initialize(pStorage, pDatetime, pTimeFrame, callBackFunction) { + function initialize(pStorage, pDatetime, pTimeFrame, pCoordinateSystem, callBackFunction) { try { @@ -105,6 +108,8 @@ datetime = pDatetime; timeFrame = pTimeFrame; + coordinateSystem = pCoordinateSystem + initializeCoordinateSystem() /* We need a Market File in order to calculate the Y scale, since this scale depends on actual data. */ @@ -141,6 +146,23 @@ } } + function initializeCoordinateSystem() { + scaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged) + } + + function finalizeCoordinateSystem() { + coordinateSystem.eventHandler.stopListening(scaleChangedEventSubscriptionId) + } + + function onScaleChanged() { + recalculate(); + } + + function onMouseOver(event) { + let userPosition = getDateFromPointAtBrowserCanvas(event, thisObject.container, coordinateSystem) + userPositionDate = userPosition.valueOf() + } + function getContainer(point) { try { @@ -230,6 +252,12 @@ } + function setCoordinateSystem(pCoordinateSystem) { + finalizeCoordinateSystem() + coordinateSystem = pCoordinateSystem + initializeCoordinateSystem() + } + function onDailyFileLoaded(event) { try { @@ -350,7 +378,10 @@ record.formulaErrors = dailyFile[1][i][7]; record.formulaValues = dailyFile[1][i][8]; - if (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) { + if ( + (record.begin >= farLeftDate.valueOf() && record.end <= farRightDate.valueOf()) && + (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) + ) { conditions.push(record); @@ -419,7 +450,10 @@ record.formulaErrors = marketFile[1][i][7]; record.formulaValues = marketFile[1][i][8]; - if (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) { + if ( + (record.begin >= leftDate.valueOf() && record.end <= rightDate.valueOf()) && + (record.begin >= coordinateSystem.min.x && record.end <= coordinateSystem.max.x) + ) { conditions.push(record); @@ -444,9 +478,6 @@ try { - let userPosition = getUserPosition() - let userPositionDate = userPosition.point.x - thisObject.container.eventHandler.raiseEvent("Current Condition Record Changed", undefined); let conditionRecord; diff --git a/WebServer/Images/Icons/style-01/delink.png b/WebServer/Images/Icons/style-01/delink.png new file mode 100644 index 000000000..b5807d379 Binary files /dev/null and b/WebServer/Images/Icons/style-01/delink.png differ diff --git a/WebServer/Images/Icons/style-01/detach.png b/WebServer/Images/Icons/style-01/detach.png new file mode 100644 index 000000000..31aa781a3 Binary files /dev/null and b/WebServer/Images/Icons/style-01/detach.png differ diff --git a/WebServer/Images/Icons/style-01/master-script.png b/WebServer/Images/Icons/style-01/master-script.png new file mode 100644 index 000000000..9afac1eb8 Binary files /dev/null and b/WebServer/Images/Icons/style-01/master-script.png differ diff --git a/WebServer/Images/Icons/style-01/scripts-library.png b/WebServer/Images/Icons/style-01/scripts-library.png new file mode 100644 index 000000000..8133ebb5b Binary files /dev/null and b/WebServer/Images/Icons/style-01/scripts-library.png differ diff --git a/WebServer/Images/Icons/style-01/super-action.png b/WebServer/Images/Icons/style-01/super-action.png new file mode 100644 index 000000000..a3dc332fd Binary files /dev/null and b/WebServer/Images/Icons/style-01/super-action.png differ diff --git a/WebServer/Images/Icons/style-01/super-scripts.png b/WebServer/Images/Icons/style-01/super-scripts.png new file mode 100644 index 000000000..12e17e118 Binary files /dev/null and b/WebServer/Images/Icons/style-01/super-scripts.png differ diff --git a/WebServer/Images/Icons/style-01/template-script.png b/WebServer/Images/Icons/style-01/template-script.png new file mode 100644 index 000000000..fbbc921f1 Binary files /dev/null and b/WebServer/Images/Icons/style-01/template-script.png differ diff --git a/WebServer/Images/Icons/style-01/template-structure.png b/WebServer/Images/Icons/style-01/template-structure.png new file mode 100644 index 000000000..212baedf4 Binary files /dev/null and b/WebServer/Images/Icons/style-01/template-structure.png differ diff --git a/WebServer/Images/Icons/style-01/template-target.png b/WebServer/Images/Icons/style-01/template-target.png new file mode 100644 index 000000000..233628a94 Binary files /dev/null and b/WebServer/Images/Icons/style-01/template-target.png differ diff --git a/WebServer/Scripts/AppLoader.js b/WebServer/Scripts/AppLoader.js index 5e4c43edd..7cbf924cc 100644 --- a/WebServer/Scripts/AppLoader.js +++ b/WebServer/Scripts/AppLoader.js @@ -53,6 +53,7 @@ function newAppLoader() { 'DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js', 'DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js', 'DesignSpace/Workspace/FunctionLibraries/OnFocus.js', + 'DesignSpace/Workspace/FunctionLibraries/SuperScripts.js', 'Utilities/RoundedCornersBackground.js',