Super Actions Implemented
No files matched your search
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,5 +20,8 @@ function newReferenceAttachDetach () {
|
||||
|
||||
function completeDetachment (node) {
|
||||
node.payload.referenceParent = undefined
|
||||
if (node.savedPayload !== undefined) {
|
||||
node.savedPayload.referenceParent = undefined
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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')
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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": [
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -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',
|
||||
|
||||
|
||||