Auto Scale fully implemented
No files matched your search
@@ -93,7 +93,7 @@ function newAnimation () {
|
||||
callBackFunction()
|
||||
let t1 = performance.now()
|
||||
timeConsumed = t1 - t0
|
||||
if (key === 'Chart Space Draw') {
|
||||
if (key === 'Charting Space Draw') {
|
||||
if (Math.random() * 100 > 99) {
|
||||
totalConsumption = 0
|
||||
totalCounter = 0
|
||||
|
||||
@@ -32,12 +32,12 @@ function newCanvas () {
|
||||
let thisObject = {
|
||||
eventHandler: undefined,
|
||||
topSpace: undefined,
|
||||
chartSpace: undefined,
|
||||
chartingSpace: undefined,
|
||||
floatingSpace: undefined,
|
||||
panelsSpace: undefined,
|
||||
cockpitSpace: undefined,
|
||||
bottomSpace: undefined,
|
||||
designerSpace: undefined,
|
||||
designSpace: undefined,
|
||||
animation: undefined,
|
||||
initialize: initialize,
|
||||
finalize: finalize
|
||||
@@ -53,7 +53,7 @@ function newCanvas () {
|
||||
|
||||
function finalize () {
|
||||
try {
|
||||
thisObject.chartSpace.finalize()
|
||||
thisObject.chartingSpace.finalize()
|
||||
thisObject.floatingSpace.finalize()
|
||||
|
||||
browserCanvas.removeEventListener('mousedown', onMouseDown, false)
|
||||
@@ -95,8 +95,8 @@ function newCanvas () {
|
||||
thisObject.topSpace = newTopSpace()
|
||||
thisObject.topSpace.initialize()
|
||||
|
||||
thisObject.designerSpace = newDesignerSpace()
|
||||
thisObject.designerSpace.initialize()
|
||||
thisObject.designSpace = newDesignSpace()
|
||||
thisObject.designSpace.initialize()
|
||||
|
||||
thisObject.cockpitSpace = newCockpitSpace()
|
||||
thisObject.cockpitSpace.initialize()
|
||||
@@ -104,8 +104,8 @@ function newCanvas () {
|
||||
thisObject.panelsSpace = newPanelsSpace()
|
||||
thisObject.panelsSpace.initialize()
|
||||
|
||||
thisObject.chartSpace = newChartSpace()
|
||||
thisObject.chartSpace.initialize()
|
||||
thisObject.chartingSpace = newChartingSpace()
|
||||
thisObject.chartingSpace.initialize()
|
||||
|
||||
thisObject.bottomSpace = thisObject.cockpitSpace
|
||||
|
||||
@@ -122,16 +122,16 @@ function newCanvas () {
|
||||
/* Spcaces Physics */
|
||||
animation.addCallBackFunction('CockpitSpace Physics', thisObject.cockpitSpace.physics)
|
||||
animation.addCallBackFunction('Floating Space Physics', thisObject.floatingSpace.physics)
|
||||
animation.addCallBackFunction('Chart Space Physics', thisObject.chartSpace.physics)
|
||||
animation.addCallBackFunction('Designer Space Physics', thisObject.designerSpace.physics)
|
||||
animation.addCallBackFunction('Charting Space Physics', thisObject.chartingSpace.physics)
|
||||
animation.addCallBackFunction('Design Space Physics', thisObject.designSpace.physics)
|
||||
animation.addCallBackFunction('Panels Space Physics', thisObject.panelsSpace.physics)
|
||||
|
||||
/* Spcaces Drawing */
|
||||
animation.addCallBackFunction('Floating Space Draw', thisObject.floatingSpace.draw)
|
||||
animation.addCallBackFunction('Chart Space Draw', thisObject.chartSpace.draw)
|
||||
animation.addCallBackFunction('Charting Space Draw', thisObject.chartingSpace.draw)
|
||||
animation.addCallBackFunction('Panels Space', thisObject.panelsSpace.draw)
|
||||
animation.addCallBackFunction('CockpitSpace Draw', thisObject.cockpitSpace.draw)
|
||||
animation.addCallBackFunction('Designer Space Draw', thisObject.designerSpace.draw)
|
||||
animation.addCallBackFunction('Design Space Draw', thisObject.designSpace.draw)
|
||||
animation.addCallBackFunction('Top Space Draw', thisObject.topSpace.draw)
|
||||
animation.addCallBackFunction('Splash Screen Draw', splashScreen.draw)
|
||||
animation.start()
|
||||
@@ -231,7 +231,7 @@ function newCanvas () {
|
||||
function onKeyDown (event) {
|
||||
checkMediaRecording(event)
|
||||
|
||||
let nodeOnFocus = canvas.designerSpace.workspace.getNodeThatIsOnFocus()
|
||||
let nodeOnFocus = canvas.designSpace.workspace.getNodeThatIsOnFocus()
|
||||
if (nodeOnFocus !== undefined) {
|
||||
if (nodeOnFocus.payload.uiObject.codeEditor !== undefined) {
|
||||
if (nodeOnFocus.payload.uiObject.codeEditor.visible === true) {
|
||||
@@ -297,22 +297,22 @@ function newCanvas () {
|
||||
}
|
||||
|
||||
if (event.shiftKey === true && event.ctrlKey === false && event.code === 'ArrowLeft') {
|
||||
canvas.chartSpace.oneScreenLeft()
|
||||
canvas.chartingSpace.oneScreenLeft()
|
||||
return
|
||||
}
|
||||
|
||||
if (event.shiftKey === true && event.ctrlKey === false && event.code === 'ArrowRight') {
|
||||
canvas.chartSpace.oneScreenRight()
|
||||
canvas.chartingSpace.oneScreenRight()
|
||||
return
|
||||
}
|
||||
|
||||
if (event.shiftKey === true && event.code === 'ArrowUp') {
|
||||
canvas.chartSpace.oneScreenUp()
|
||||
canvas.chartingSpace.oneScreenUp()
|
||||
return
|
||||
}
|
||||
|
||||
if (event.shiftKey === true && event.code === 'ArrowDown') {
|
||||
canvas.chartSpace.oneScreenDown()
|
||||
canvas.chartingSpace.oneScreenDown()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -360,7 +360,7 @@ function newCanvas () {
|
||||
/* From here we prevent the default behaviour */
|
||||
event.preventDefault()
|
||||
|
||||
let nodeUsingThisKey = canvas.designerSpace.workspace.getNodeByShortcutKey(event.key)
|
||||
let nodeUsingThisKey = canvas.designSpace.workspace.getNodeByShortcutKey(event.key)
|
||||
|
||||
if (nodeOnFocus === undefined && nodeUsingThisKey !== undefined) {
|
||||
/* Then we displace the whole workspace to center it at the node using this key */
|
||||
@@ -451,7 +451,7 @@ function newCanvas () {
|
||||
x: event.x,
|
||||
y: event.y
|
||||
}
|
||||
thisObject.designerSpace.workspace.spawn(reader.result, mousePosition)
|
||||
thisObject.designSpace.workspace.spawn(reader.result, mousePosition)
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
@@ -470,9 +470,9 @@ function newCanvas () {
|
||||
|
||||
let container
|
||||
|
||||
/* We check if the mouse is over an element of the Designer Space / */
|
||||
/* We check if the mouse is over an element of the Design Space / */
|
||||
|
||||
container = thisObject.designerSpace.getContainer(point)
|
||||
container = thisObject.designSpace.getContainer(point)
|
||||
|
||||
if (container !== undefined && container.isDraggeable === true) {
|
||||
containerBeingDragged = container
|
||||
@@ -528,9 +528,9 @@ function newCanvas () {
|
||||
return
|
||||
}
|
||||
|
||||
/* we check if it is over any of the existing containers at the Chart Space. */
|
||||
/* we check if it is over any of the existing containers at the Charting Space. */
|
||||
|
||||
container = thisObject.chartSpace.getContainer(point, GET_CONTAINER_PURPOSE.DRAGGING)
|
||||
container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.DRAGGING)
|
||||
|
||||
if (container !== undefined) {
|
||||
if (container.isDraggeable === true) {
|
||||
@@ -567,7 +567,6 @@ function newCanvas () {
|
||||
|
||||
function onMouseClick (event) {
|
||||
try {
|
||||
console.log('ignoreNextClick', ignoreNextClick)
|
||||
if (ignoreNextClick === true) {
|
||||
ignoreNextClick = false
|
||||
return
|
||||
@@ -578,9 +577,9 @@ function newCanvas () {
|
||||
|
||||
let container
|
||||
|
||||
/* We check if the mouse is over an element of the Designer Space / */
|
||||
/* We check if the mouse is over an element of the Design Space / */
|
||||
|
||||
container = thisObject.designerSpace.getContainer(point)
|
||||
container = thisObject.designSpace.getContainer(point)
|
||||
|
||||
if (container !== undefined && container.isClickeable === true) {
|
||||
container.eventHandler.raiseEvent('onMouseClick', point)
|
||||
@@ -614,9 +613,9 @@ function newCanvas () {
|
||||
return
|
||||
}
|
||||
|
||||
/* If it is not, then we check if it is over any of the existing containers at the Chart Space. */
|
||||
/* If it is not, then we check if it is over any of the existing containers at the Charting Space. */
|
||||
|
||||
container = thisObject.chartSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK)
|
||||
container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_CLICK)
|
||||
|
||||
if (container !== undefined && container.isClickeable === true) {
|
||||
container.eventHandler.raiseEvent('onMouseClick', point)
|
||||
@@ -657,9 +656,9 @@ function newCanvas () {
|
||||
point.x = event.pageX
|
||||
point.y = event.pageY - CURRENT_TOP_MARGIN
|
||||
|
||||
if (canvas.chartSpace.viewport !== undefined) {
|
||||
canvas.chartSpace.viewport.mousePosition.x = point.x
|
||||
canvas.chartSpace.viewport.mousePosition.y = point.y
|
||||
if (canvas.chartingSpace.viewport !== undefined) {
|
||||
canvas.chartingSpace.viewport.mousePosition.x = point.x
|
||||
canvas.chartingSpace.viewport.mousePosition.y = point.y
|
||||
}
|
||||
|
||||
if (containerDragStarted === true || floatingObjectDragStarted === true || viewPortBeingDragged === true) {
|
||||
@@ -713,8 +712,8 @@ function newCanvas () {
|
||||
let container
|
||||
|
||||
/* We check if the mouse is over an element of the Strategy Space / */
|
||||
if (thisObject.designerSpace !== undefined) {
|
||||
container = thisObject.designerSpace.getContainer(point)
|
||||
if (thisObject.designSpace !== undefined) {
|
||||
container = thisObject.designSpace.getContainer(point)
|
||||
|
||||
if (container !== undefined && container.detectMouseOver === true) {
|
||||
containerFound()
|
||||
@@ -752,9 +751,9 @@ function newCanvas () {
|
||||
}
|
||||
}
|
||||
|
||||
/* If it is not, then we check if it is over any of the existing containers at the Chart Space. */
|
||||
if (thisObject.chartSpace !== undefined) {
|
||||
container = thisObject.chartSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER)
|
||||
/* If it is not, then we check if it is over any of the existing containers at the Charting Space. */
|
||||
if (thisObject.chartingSpace !== undefined) {
|
||||
container = thisObject.chartingSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER)
|
||||
|
||||
if (container !== undefined && container.detectMouseOver === true) {
|
||||
containerFound()
|
||||
@@ -817,16 +816,16 @@ function newCanvas () {
|
||||
return false // This instructs the browser not to take the event and scroll the page.
|
||||
}
|
||||
|
||||
/* Chart Space. */
|
||||
/* Charting Space. */
|
||||
|
||||
container = canvas.chartSpace.getContainer({ x: point.x, y: point.y }, GET_CONTAINER_PURPOSE.MOUSE_WHEEL)
|
||||
container = canvas.chartingSpace.getContainer({ x: point.x, y: point.y }, GET_CONTAINER_PURPOSE.MOUSE_WHEEL)
|
||||
if (container !== undefined && container.isWheelable === true) {
|
||||
container.eventHandler.raiseEvent('onMouseWheel', event)
|
||||
return false // This instructs the browser not to take the event and scroll the page.
|
||||
}
|
||||
|
||||
if (container !== undefined) {
|
||||
canvas.chartSpace.viewport.onMouseWheel(event)
|
||||
canvas.chartingSpace.viewport.onMouseWheel(event)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -887,7 +886,7 @@ function newCanvas () {
|
||||
y: dragVector.upY - dragVector.downY
|
||||
}
|
||||
|
||||
canvas.chartSpace.viewport.displace(displaceVector)
|
||||
canvas.chartingSpace.viewport.displace(displaceVector)
|
||||
}
|
||||
if (containerDragStarted) {
|
||||
if (containerBeingDragged !== undefined) {
|
||||
@@ -898,7 +897,7 @@ function newCanvas () {
|
||||
}
|
||||
|
||||
let downNoZoom
|
||||
downNoZoom = canvas.chartSpace.viewport.unTransformThisPoint(downCopy)
|
||||
downNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(downCopy)
|
||||
|
||||
let upCopy = {
|
||||
x: dragVector.upX,
|
||||
@@ -906,7 +905,7 @@ function newCanvas () {
|
||||
}
|
||||
|
||||
let upNoZoom
|
||||
upNoZoom = canvas.chartSpace.viewport.unTransformThisPoint(upCopy)
|
||||
upNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(upCopy)
|
||||
|
||||
displaceVector = {
|
||||
x: upNoZoom.x - downNoZoom.x,
|
||||
|
||||
@@ -15,10 +15,13 @@ function newCoordinateSystem () {
|
||||
maxWidth: undefined,
|
||||
scale: undefined,
|
||||
eventHandler: undefined,
|
||||
autoMinScale: true,
|
||||
autoMaxScale: true,
|
||||
autoMinXScale: true,
|
||||
autoMaxXScale: true,
|
||||
autoMinYScale: true,
|
||||
autoMaxYScale: true,
|
||||
physics: physics,
|
||||
reportValue: reportValue,
|
||||
reportXValue: reportXValue,
|
||||
reportYValue: reportYValue,
|
||||
zoomX: zoomX,
|
||||
zoomY: zoomY,
|
||||
recalculateScale: recalculateScale,
|
||||
@@ -48,9 +51,13 @@ function newCoordinateSystem () {
|
||||
thisObject.eventHandler = newEventHandler()
|
||||
thisObject.eventHandler.name = 'Coordinate System'
|
||||
|
||||
let newMax = -VERY_LARGE_NUMBER
|
||||
let newMin = VERY_LARGE_NUMBER
|
||||
let notValueReported = true
|
||||
let newXMax = -VERY_LARGE_NUMBER
|
||||
let newXMin = VERY_LARGE_NUMBER
|
||||
let noXValueReported = true
|
||||
|
||||
let newYMax = -VERY_LARGE_NUMBER
|
||||
let newYMin = VERY_LARGE_NUMBER
|
||||
let noYValueReported = true
|
||||
|
||||
return thisObject
|
||||
|
||||
@@ -74,46 +81,80 @@ function newCoordinateSystem () {
|
||||
}
|
||||
|
||||
function physics () {
|
||||
if ((thisObject.autoMinScale === true || thisObject.autoMaxScale === true) && notValueReported === false) {
|
||||
let mustRecalculate = false
|
||||
let mustRecalculate = false
|
||||
|
||||
if (thisObject.autoMaxScale === true && thisObject.max.y !== newMax) {
|
||||
thisObject.max.y = newMax
|
||||
if ((thisObject.autoMinXScale === true || thisObject.autoMaxXScale === true) && noXValueReported === false) {
|
||||
if (thisObject.autoMaxXScale === true && thisObject.max.x !== newXMax) {
|
||||
thisObject.max.x = newXMax
|
||||
mustRecalculate = true
|
||||
}
|
||||
|
||||
if (thisObject.autoMaxScale === true) {
|
||||
newMax = -VERY_LARGE_NUMBER
|
||||
if (thisObject.autoMaxXScale === true) {
|
||||
newXMax = -VERY_LARGE_NUMBER
|
||||
}
|
||||
|
||||
if (thisObject.autoMinScale === true && thisObject.min.y !== newMin) {
|
||||
thisObject.min.y = newMin
|
||||
newMin = VERY_LARGE_NUMBER
|
||||
if (thisObject.autoMinXScale === true && thisObject.min.x !== newXMin) {
|
||||
thisObject.min.x = newXMin
|
||||
newXMin = VERY_LARGE_NUMBER
|
||||
mustRecalculate = true
|
||||
}
|
||||
|
||||
if (thisObject.autoMinScale === true) {
|
||||
newMin = VERY_LARGE_NUMBER
|
||||
}
|
||||
|
||||
if (mustRecalculate === true) {
|
||||
recalculateScale()
|
||||
if (thisObject.autoMinXScale === true) {
|
||||
newXMin = VERY_LARGE_NUMBER
|
||||
}
|
||||
|
||||
/* Reseting this to start over at each cycle. */
|
||||
noXValueReported = true
|
||||
}
|
||||
|
||||
notValueReported = true
|
||||
if ((thisObject.autoMinYScale === true || thisObject.autoMaxYScale === true) && noYValueReported === false) {
|
||||
if (thisObject.autoMaxYScale === true && thisObject.max.y !== newYMax) {
|
||||
thisObject.max.y = newYMax
|
||||
mustRecalculate = true
|
||||
}
|
||||
|
||||
if (thisObject.autoMaxYScale === true) {
|
||||
newYMax = -VERY_LARGE_NUMBER
|
||||
}
|
||||
|
||||
if (thisObject.autoMinYScale === true && thisObject.min.y !== newYMin) {
|
||||
thisObject.min.y = newYMin
|
||||
newYMin = VERY_LARGE_NUMBER
|
||||
mustRecalculate = true
|
||||
}
|
||||
|
||||
if (thisObject.autoMinYScale === true) {
|
||||
newYMin = VERY_LARGE_NUMBER
|
||||
}
|
||||
|
||||
/* Reseting this to start over at each cycle. */
|
||||
noYValueReported = true
|
||||
}
|
||||
|
||||
if (mustRecalculate === true) {
|
||||
recalculateScale()
|
||||
}
|
||||
}
|
||||
|
||||
function reportValue (value) {
|
||||
if (thisObject.autoMinScale === true) {
|
||||
if (value < newMin) { newMin = value }
|
||||
notValueReported = false
|
||||
function reportXValue (value) {
|
||||
if (thisObject.autoMinXScale === true) {
|
||||
if (value < newXMin) { newXMin = value }
|
||||
noXValueReported = false
|
||||
}
|
||||
if (thisObject.autoMaxScale === true) {
|
||||
if (value > newMax) { newMax = value }
|
||||
notValueReported = false
|
||||
if (thisObject.autoMaxXScale === true) {
|
||||
if (value > newXMax) { newXMax = value }
|
||||
noXValueReported = false
|
||||
}
|
||||
}
|
||||
|
||||
function reportYValue (value) {
|
||||
if (thisObject.autoMinYScale === true) {
|
||||
if (value < newYMin) { newYMin = value }
|
||||
noYValueReported = false
|
||||
}
|
||||
if (thisObject.autoMaxYScale === true) {
|
||||
if (value > newYMax) { newYMax = value }
|
||||
noYValueReported = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,15 +402,15 @@ function newEdgeEditor () {
|
||||
y: pointB4.y + edgeSize
|
||||
}
|
||||
|
||||
pointA1 = canvas.chartSpace.viewport.fitIntoViewport(pointA1)
|
||||
pointA2 = canvas.chartSpace.viewport.fitIntoViewport(pointA2)
|
||||
pointA3 = canvas.chartSpace.viewport.fitIntoViewport(pointA3)
|
||||
pointA4 = canvas.chartSpace.viewport.fitIntoViewport(pointA4)
|
||||
pointA1 = canvas.chartingSpace.viewport.fitIntoViewport(pointA1)
|
||||
pointA2 = canvas.chartingSpace.viewport.fitIntoViewport(pointA2)
|
||||
pointA3 = canvas.chartingSpace.viewport.fitIntoViewport(pointA3)
|
||||
pointA4 = canvas.chartingSpace.viewport.fitIntoViewport(pointA4)
|
||||
|
||||
pointB1 = canvas.chartSpace.viewport.fitIntoViewport(pointB1)
|
||||
pointB2 = canvas.chartSpace.viewport.fitIntoViewport(pointB2)
|
||||
pointB3 = canvas.chartSpace.viewport.fitIntoViewport(pointB3)
|
||||
pointB4 = canvas.chartSpace.viewport.fitIntoViewport(pointB4)
|
||||
pointB1 = canvas.chartingSpace.viewport.fitIntoViewport(pointB1)
|
||||
pointB2 = canvas.chartingSpace.viewport.fitIntoViewport(pointB2)
|
||||
pointB3 = canvas.chartingSpace.viewport.fitIntoViewport(pointB3)
|
||||
pointB4 = canvas.chartingSpace.viewport.fitIntoViewport(pointB4)
|
||||
|
||||
browserCanvasContext.setLineDash([0, 0])
|
||||
|
||||
@@ -54,6 +54,7 @@ function newTimeMachine () {
|
||||
let rateScaleMouseOverEventSuscriptionId
|
||||
let timeFrameScaleEventSuscriptionId
|
||||
let timeFrameScaleMouseOverEventSuscriptionId
|
||||
let onScaleChangedEventSubscriptionId
|
||||
|
||||
setupContainer()
|
||||
return thisObject
|
||||
@@ -71,8 +72,9 @@ function newTimeMachine () {
|
||||
}
|
||||
|
||||
function finalize () {
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(onViewportPositionChangedEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(onViewportZoomChangedEventSuscriptionId)
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(onViewportPositionChangedEventSuscriptionId)
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(onViewportZoomChangedEventSuscriptionId)
|
||||
timeMachineCoordinateSystem.eventHandler.stopListening(onScaleChangedEventSubscriptionId)
|
||||
|
||||
if (thisObject.timeScale !== undefined) {
|
||||
finalizeTimeScale()
|
||||
@@ -146,15 +148,15 @@ function newTimeMachine () {
|
||||
|
||||
onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver)
|
||||
onMouseNotOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver)
|
||||
|
||||
onViewportPositionChangedEventSuscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent('Position Changed', onViewportPositionChanged)
|
||||
onViewportZoomChangedEventSuscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged)
|
||||
onViewportPositionChangedEventSuscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Position Changed', onViewportPositionChanged)
|
||||
onViewportZoomChangedEventSuscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged)
|
||||
onScaleChangedEventSubscriptionId = timeMachineCoordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged)
|
||||
|
||||
thisObject.edgeEditor = newEdgeEditor()
|
||||
thisObject.edgeEditor.initialize(timeMachineCoordinateSystem)
|
||||
thisObject.edgeEditor.container.connectToParent(thisObject.container, true, true, false, true, true, true)
|
||||
|
||||
callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE)
|
||||
callBackFunction()
|
||||
}
|
||||
|
||||
function onMouseOver (event) {
|
||||
@@ -262,6 +264,10 @@ function newTimeMachine () {
|
||||
if (container !== undefined) {
|
||||
if (container.isForThisPurpose(purpose)) {
|
||||
return container
|
||||
} else {
|
||||
if (purpose === GET_CONTAINER_PURPOSE.DRAGGING && container.isClickeable === true) {
|
||||
return container
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -278,7 +284,6 @@ function newTimeMachine () {
|
||||
for (let i = 0; i < thisObject.timelineCharts.length; i++) {
|
||||
container = thisObject.timelineCharts[i].getContainer(point, purpose)
|
||||
if (container !== undefined) {
|
||||
console.log('IN TIME MACHINE GOT THIS CONTAINER: ' + container.name)
|
||||
if (container.isForThisPurpose(purpose)) {
|
||||
if (thisObject.container.frame.isThisPointHere(point) === true) {
|
||||
return container
|
||||
@@ -317,14 +322,18 @@ function newTimeMachine () {
|
||||
}
|
||||
}
|
||||
|
||||
function onScaleChanged () {
|
||||
recalculateCurrentDatetime()
|
||||
}
|
||||
|
||||
function recalculateCurrentDatetime () {
|
||||
/*
|
||||
The view port was moved or the view port zoom level was changed and the center of the screen points to a different datetime that we
|
||||
must calculate.
|
||||
*/
|
||||
let center = {
|
||||
x: (canvas.chartSpace.viewport.visibleArea.bottomRight.x - canvas.chartSpace.viewport.visibleArea.bottomLeft.x) / 2,
|
||||
y: (canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topRight.y) / 2
|
||||
x: (canvas.chartingSpace.viewport.visibleArea.bottomRight.x - canvas.chartingSpace.viewport.visibleArea.bottomLeft.x) / 2,
|
||||
y: (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) / 2
|
||||
}
|
||||
|
||||
center = unTransformThisPoint(center, thisObject.container)
|
||||
@@ -339,7 +348,7 @@ function newTimeMachine () {
|
||||
}
|
||||
|
||||
function fitFunction (point, fullVisible, margin, topMargin, bottomMargin) {
|
||||
/* We prevent a point to be out of the container AND out of the Chart Space in general */
|
||||
/* We prevent a point to be out of the container AND out of the Charting Space in general */
|
||||
|
||||
let returnPoint = {
|
||||
x: point.x,
|
||||
@@ -369,7 +378,7 @@ function newTimeMachine () {
|
||||
if (returnPoint.y - margin - topMargin < upCorner.y) { returnPoint.y = upCorner.y + margin + topMargin }
|
||||
if (returnPoint.y + margin + bottomMargin > bottonCorner.y) { returnPoint.y = bottonCorner.y - margin - bottomMargin }
|
||||
|
||||
returnPoint = canvas.chartSpace.fitFunction(returnPoint, fullVisible)
|
||||
returnPoint = canvas.chartingSpace.fitFunction(returnPoint, fullVisible)
|
||||
|
||||
return returnPoint
|
||||
}
|
||||
@@ -387,7 +396,7 @@ function newTimeMachine () {
|
||||
}
|
||||
|
||||
function panelPhysics () {
|
||||
if (thisObject.container.frame.isInViewPort() && canvas.chartSpace.viewport.zoomTargetLevel > ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS) {
|
||||
if (thisObject.container.frame.isInViewPort() && canvas.chartingSpace.viewport.zoomTargetLevel > ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS) {
|
||||
canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Layers Panel')
|
||||
canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Plotter Panel')
|
||||
} else {
|
||||
@@ -531,7 +540,7 @@ function newTimeMachine () {
|
||||
if (thisObject.rateScale !== undefined && thisObject.rateScale.isVisible === true) { thisObject.rateScale.draw() }
|
||||
}
|
||||
} else {
|
||||
let icon = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
let icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
if (icon !== undefined) {
|
||||
if (icon.canDrawIcon === true) {
|
||||
let imageSize = 40
|
||||
@@ -581,7 +590,7 @@ function newTimeMachine () {
|
||||
let imageSize = 25
|
||||
let fontSize = 25
|
||||
let opacity = 1
|
||||
let icon = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
let icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
|
||||
position = transformThisPoint(position, thisObject.container)
|
||||
printLabel(thisObject.payload.node.name, position.x + 30, position.y - 10, opacity, fontSize)
|
||||
@@ -239,6 +239,8 @@ function newTimelineChart () {
|
||||
timelineChartCoordinateSystem.max.x = timeMachineCoordinateSystem.max.x
|
||||
timelineChartCoordinateSystem.maxHeight = timeMachineCoordinateSystem.maxHeight
|
||||
timelineChartCoordinateSystem.maxWidth = timeMachineCoordinateSystem.maxWidth
|
||||
timelineChartCoordinateSystem.autoMinXScale = timeMachineCoordinateSystem.autoMinXScale
|
||||
timelineChartCoordinateSystem.autoMaxXScale = timeMachineCoordinateSystem.autoMaxXScale
|
||||
timelineChartCoordinateSystem.recalculateScale()
|
||||
}
|
||||
|
||||
@@ -384,7 +384,7 @@ function newUiObjectsFromNodes () {
|
||||
payload.node = node
|
||||
payload.parentNode = parentNode
|
||||
payload.chainParent = chainParent
|
||||
payload.onMenuItemClick = canvas.designerSpace.workspace.onMenuItemClick
|
||||
payload.onMenuItemClick = canvas.designSpace.workspace.onMenuItemClick
|
||||
|
||||
node.payload = payload
|
||||
node.type = uiObjectType
|
||||
@@ -140,7 +140,7 @@ function newWorkspace () {
|
||||
workingAtTask++
|
||||
break
|
||||
case 5:
|
||||
canvas.chartSpace.reset()
|
||||
canvas.chartingSpace.reset()
|
||||
workingAtTask++
|
||||
break
|
||||
case 6:
|
||||
@@ -203,19 +203,19 @@ function newCircularMenuItem () {
|
||||
temporaryStatus === STATUS_SECONDARY_WORK_FAILED
|
||||
) && thisObject.secondaryAction !== undefined
|
||||
) {
|
||||
thisObject.iconOn = canvas.designerSpace.iconCollection.get(thisObject.secondaryIcon)
|
||||
thisObject.iconOff = canvas.designerSpace.iconCollection.get(thisObject.secondaryIcon)
|
||||
thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.secondaryIcon)
|
||||
thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.secondaryIcon)
|
||||
} else {
|
||||
if (thisObject.relatedUiObject !== undefined) {
|
||||
thisObject.iconOn = canvas.designerSpace.iconByUiObjectType.get(thisObject.relatedUiObject)
|
||||
thisObject.iconOff = canvas.designerSpace.iconByUiObjectType.get(thisObject.relatedUiObject)
|
||||
thisObject.iconOn = canvas.designSpace.iconByUiObjectType.get(thisObject.relatedUiObject)
|
||||
thisObject.iconOff = canvas.designSpace.iconByUiObjectType.get(thisObject.relatedUiObject)
|
||||
} else {
|
||||
if (thisObject.iconPathOn !== undefined && thisObject.iconPathOff !== undefined) {
|
||||
thisObject.iconOn = canvas.designerSpace.iconCollection.get(thisObject.iconPathOn)
|
||||
thisObject.iconOff = canvas.designerSpace.iconCollection.get(thisObject.iconPathOff)
|
||||
thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.iconPathOn)
|
||||
thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.iconPathOff)
|
||||
} else {
|
||||
thisObject.iconOn = canvas.designerSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()])
|
||||
thisObject.iconOff = canvas.designerSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()])
|
||||
thisObject.iconOn = canvas.designSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()])
|
||||
thisObject.iconOff = canvas.designSpace.iconCollection.get(thisObject.icons[thisObject.actionStatus()])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ function newFloatingObject () {
|
||||
if (parent.payload.position === undefined) { return }
|
||||
|
||||
let distanceToParent = Math.sqrt(Math.pow(parent.payload.position.x - thisObject.container.frame.position.x, 2) + Math.pow(parent.payload.position.y - thisObject.container.frame.position.y, 2)) // ... we calculate the distance ...
|
||||
let parentChildren = canvas.designerSpace.workspace.nodeChildren.childrenCount(parent, thisObject.payload.node)
|
||||
let parentChildren = canvas.designSpace.workspace.nodeChildren.childrenCount(parent, thisObject.payload.node)
|
||||
let axisCount = parentChildren.childrenCount
|
||||
let axisIndex = parentChildren.childIndex
|
||||
let baseAngle = 0
|
||||
|
||||
@@ -427,7 +427,7 @@ function newUiObject () {
|
||||
|
||||
if (previousDistanceToChainParent !== undefined) {
|
||||
if (ratio > THRESHOLD) {
|
||||
canvas.designerSpace.workspace.chainDetachNode(thisObject.payload.node)
|
||||
canvas.designSpace.workspace.chainDetachNode(thisObject.payload.node)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -534,7 +534,7 @@ function newUiObject () {
|
||||
|
||||
if (previousDistanceToReferenceParent !== undefined) {
|
||||
if (ratio > THRESHOLD) {
|
||||
canvas.designerSpace.workspace.referenceDetachNode(thisObject.payload.node)
|
||||
canvas.designSpace.workspace.referenceDetachNode(thisObject.payload.node)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -657,7 +657,7 @@ function newUiObject () {
|
||||
}
|
||||
|
||||
function iconPhysics () {
|
||||
icon = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
icon = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
let nodeDefinition = APP_SCHEMA_MAP.get(thisObject.payload.node.type)
|
||||
if (nodeDefinition.alternativeIcons !== undefined) {
|
||||
let nodeToUse = thisObject.payload.node
|
||||
@@ -685,7 +685,7 @@ function newUiObject () {
|
||||
iconName = alternativeIcon.iconName
|
||||
}
|
||||
}
|
||||
let newIcon = canvas.designerSpace.iconCollection.get(iconName)
|
||||
let newIcon = canvas.designSpace.iconCollection.get(iconName)
|
||||
if (newIcon !== undefined) {
|
||||
icon = newIcon
|
||||
}
|
||||
@@ -694,7 +694,7 @@ function newUiObject () {
|
||||
}
|
||||
}
|
||||
|
||||
executingIcon = canvas.designerSpace.iconCollection.get('attractive')
|
||||
executingIcon = canvas.designSpace.iconCollection.get('attractive')
|
||||
}
|
||||
|
||||
function onFocus () {
|
||||
@@ -748,12 +748,12 @@ function newUiObject () {
|
||||
|
||||
function onDragFinished (event) {
|
||||
if (isChainAttaching === true) {
|
||||
canvas.designerSpace.workspace.chainAttachNode(thisObject.payload.node, chainAttachToNode)
|
||||
canvas.designSpace.workspace.chainAttachNode(thisObject.payload.node, chainAttachToNode)
|
||||
chainAttachToNode = undefined
|
||||
isChainAttaching = false
|
||||
}
|
||||
if (isReferenceAttaching === true) {
|
||||
canvas.designerSpace.workspace.referenceAttachNode(thisObject.payload.node, referenceAttachToNode)
|
||||
canvas.designSpace.workspace.referenceAttachNode(thisObject.payload.node, referenceAttachToNode)
|
||||
referenceAttachToNode = undefined
|
||||
isReferenceAttaching = false
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ function newFrame () {
|
||||
}
|
||||
|
||||
function isInViewPort () {
|
||||
/* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartSpace.viewport */
|
||||
/* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartingSpace.viewport */
|
||||
|
||||
point1 = {
|
||||
x: 0,
|
||||
@@ -69,7 +69,7 @@ function newFrame () {
|
||||
point1 = transformThisPoint(point1, thisObject.container)
|
||||
point3 = transformThisPoint(point3, thisObject.container)
|
||||
|
||||
if (point1.x < canvas.chartSpace.viewport.visibleArea.topRight.x && point1.y < canvas.chartSpace.viewport.visibleArea.bottomRight.y && point3.x > canvas.chartSpace.viewport.visibleArea.bottomLeft.x && point3.y > canvas.chartSpace.viewport.visibleArea.topLeft.y) {
|
||||
if (point1.x < canvas.chartingSpace.viewport.visibleArea.topRight.x && point1.y < canvas.chartingSpace.viewport.visibleArea.bottomRight.y && point3.x > canvas.chartingSpace.viewport.visibleArea.bottomLeft.x && point3.y > canvas.chartingSpace.viewport.visibleArea.topLeft.y) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
|
||||
@@ -44,6 +44,7 @@ UI_FONT = {
|
||||
const DEBUG = {}
|
||||
const ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS = 5 // This regulates some behavious changes that happens when the user zoom out below this level.
|
||||
const ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME = 5 // This help regulate when to change the Time Frame base on the level of zoom out.
|
||||
const ZOOM_OUT_THRESHOLD_FOR_PACKING_OBJECTS_AT_THE_BOTTOM_OR_TOP_OF_VIEWPORT = 5
|
||||
|
||||
let FONT_ASPECT_RATIO = 0.32;
|
||||
|
||||
@@ -164,10 +165,10 @@ const _3_MINUTES_IN_MILISECONDS = 3 * 60 * 1000;
|
||||
const _2_MINUTES_IN_MILISECONDS = 2 * 60 * 1000;
|
||||
const _1_MINUTE_IN_MILISECONDS = 1 * 60 * 1000;
|
||||
|
||||
let NEW_SESSION_INITIAL_DATE = new Date(); // This value will be overwritten at the canvas.chartSpace.viewport.initialize if the user had a prevous session with this same browser.
|
||||
let NEW_SESSION_INITIAL_DATE = new Date(); // This value will be overwritten at the canvas.chartingSpace.viewport.initialize if the user had a prevous session with this same browser.
|
||||
let INITIAL_ZOOM_LEVEL = -28.25 // This is the zoom level at the view port in which the APP starts.
|
||||
let INITIAL_TIME_PERIOD = ONE_DAY_IN_MILISECONDS // This value will be overwritten at the canvas.chartSpace.viewport.initialize if the user had a prevous session with this same browser.
|
||||
let VERY_LARGE_NUMBER = 100000000000
|
||||
let INITIAL_TIME_PERIOD = ONE_DAY_IN_MILISECONDS // This value will be overwritten at the canvas.chartingSpace.viewport.initialize if the user had a prevous session with this same browser.
|
||||
let VERY_LARGE_NUMBER = 100000000000000
|
||||
|
||||
let CURRENT_TOP_MARGIN = window.canvasApp.topMargin
|
||||
let AT_FULL_SCREEN_MODE = false
|
||||
@@ -206,7 +207,7 @@ const PERIOD_05_MIN = "05-min";
|
||||
const PERIOD_01_MIN = "01-min";
|
||||
|
||||
/*
|
||||
We define here the size of the chartSpace. It has to bee enough big in order to accomodate all the charts we expect to display in this space.
|
||||
We define here the size of the chartingSpace. It has to bee enough big in order to accomodate all the charts we expect to display in this space.
|
||||
*/
|
||||
|
||||
const TIME_MACHINE_WIDTH = 320;
|
||||
|
||||
@@ -472,7 +472,7 @@ function newLayer () {
|
||||
|
||||
let icon2
|
||||
if (plotterModule.code.icon !== undefined) {
|
||||
icon2 = canvas.designerSpace.iconCollection.get(plotterModule.code.icon)
|
||||
icon2 = canvas.designSpace.iconCollection.get(plotterModule.code.icon)
|
||||
}
|
||||
|
||||
let icon3 = getIcon(baseAsset)
|
||||
@@ -490,9 +490,9 @@ function newLayer () {
|
||||
}
|
||||
}
|
||||
if (iconName !== undefined) {
|
||||
icon = canvas.designerSpace.iconCollection.get(iconName)
|
||||
icon = canvas.designSpace.iconCollection.get(iconName)
|
||||
} else {
|
||||
icon = canvas.designerSpace.iconCollection.get(nodeDefinition.icon)
|
||||
icon = canvas.designSpace.iconCollection.get(nodeDefinition.icon)
|
||||
}
|
||||
return icon
|
||||
}
|
||||
|
||||
@@ -60,8 +60,8 @@ function newLayersPanel () {
|
||||
thisObject.container.frame.height = headerHeight
|
||||
|
||||
let position = { // Default position
|
||||
x: canvas.chartSpace.viewport.visibleArea.topLeft.x,
|
||||
y: canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
x: canvas.chartingSpace.viewport.visibleArea.topLeft.x,
|
||||
y: canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
}
|
||||
|
||||
thisObject.container.frame.position = position
|
||||
@@ -189,7 +189,7 @@ function newLayersPanel () {
|
||||
function panelSizePhysics () {
|
||||
if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return }
|
||||
|
||||
let viewPortHeight = canvas.chartSpace.viewport.visibleArea.bottomLeft.y - canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
let viewPortHeight = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
|
||||
if (viewPortHeight < headerHeight) {
|
||||
thisObject.visible = false
|
||||
@@ -386,8 +386,8 @@ function newLayersPanel () {
|
||||
let label2 = thisObject.payload.node.payload.parentNode.name.substring(0, 18)
|
||||
let label3 = ''
|
||||
|
||||
let icon1 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.payload.parentNode.type)
|
||||
let icon2 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.payload.parentNode.type)
|
||||
let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
|
||||
let backgroundColor = UI_COLOR.BLACK
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ function newPanelTabButton () {
|
||||
upPosition.y = thisObject.parentContainer.frame.position.y
|
||||
|
||||
downPosition.x = thisObject.parentContainer.frame.position.x
|
||||
downPosition.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y
|
||||
downPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y
|
||||
|
||||
transitionPosition.x = upPosition.x
|
||||
transitionPosition.y = upPosition.y
|
||||
@@ -96,10 +96,10 @@ function newPanelTabButton () {
|
||||
if (isInitialized === false) { return }
|
||||
|
||||
upPosition.x = thisObject.parentContainer.frame.position.x
|
||||
upPosition.y = canvas.chartSpace.viewport.visibleArea.topRight.y
|
||||
upPosition.y = canvas.chartingSpace.viewport.visibleArea.topRight.y
|
||||
|
||||
downPosition.x = thisObject.parentContainer.frame.position.x
|
||||
downPosition.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y
|
||||
downPosition.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y
|
||||
|
||||
if (thisObject.status === 'going down') {
|
||||
if (transitionPosition.y < downPosition.y) {
|
||||
|
||||
@@ -74,9 +74,9 @@ function newPanelsVisibleButton () {
|
||||
function draw () {
|
||||
let icon
|
||||
if (thisObject.showPanels === true) {
|
||||
icon = canvas.designerSpace.iconCollection.get('plotter-panel')
|
||||
icon = canvas.designSpace.iconCollection.get('plotter-panel')
|
||||
} else {
|
||||
icon = canvas.designerSpace.iconCollection.get('social-bot')
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-panel-off')
|
||||
}
|
||||
|
||||
drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 14, thisObject.container)
|
||||
|
||||
@@ -47,8 +47,8 @@ function newPlotterPanel () {
|
||||
thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL
|
||||
thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL
|
||||
|
||||
thisObject.container.frame.position.x = canvas.chartSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width - thisObject.container.frame.width * Math.random() * 8
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height - thisObject.container.frame.height * Math.random() * 1.5
|
||||
thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width - thisObject.container.frame.width * Math.random() * 8
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height - thisObject.container.frame.height * Math.random() * 1.5
|
||||
|
||||
panelTabButton = newPanelTabButton()
|
||||
panelTabButton.parentContainer = thisObject.container
|
||||
|
||||
@@ -25,7 +25,7 @@ function newPlotter () {
|
||||
|
||||
let coordinateSystem
|
||||
let plotterModuleConfig
|
||||
let slotHeight = (canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topLeft.y) / 10 // This is the amount of slots available
|
||||
let slotHeight = (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y) / 10 // This is the amount of slots available
|
||||
let mustRecalculateDataPoints = false
|
||||
let atMousePositionFillStyles = new Map()
|
||||
let atMousePositionStrokeStyles = new Map()
|
||||
@@ -61,8 +61,8 @@ function newPlotter () {
|
||||
try {
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId)
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId)
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId)
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId)
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId)
|
||||
@@ -113,8 +113,8 @@ function newPlotter () {
|
||||
fileCursor = dailyFiles.getFileCursor(pTimeFrame)
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged)
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent('Position Changed', onViewportPositionChanged)
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged)
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Position Changed', onViewportPositionChanged)
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent('Drag Finished', onDragFinished)
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent('Files Updated', onMarketFilesUpdated)
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent('Files Updated', onDailyFilesUpdated)
|
||||
@@ -376,8 +376,8 @@ function newPlotter () {
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame)
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem)
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem)
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem)
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem)
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf()
|
||||
|
||||
@@ -429,8 +429,8 @@ function newPlotter () {
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame)
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem)
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem)
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem)
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem)
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf()
|
||||
|
||||
@@ -520,13 +520,13 @@ function newPlotter () {
|
||||
beginPoint = transformThisPoint(beginPoint, thisObject.container)
|
||||
endPoint = transformThisPoint(endPoint, thisObject.container)
|
||||
|
||||
beginPoint = canvas.chartSpace.viewport.fitIntoVisibleArea(beginPoint)
|
||||
endPoint = canvas.chartSpace.viewport.fitIntoVisibleArea(endPoint)
|
||||
beginPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(beginPoint)
|
||||
endPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(endPoint)
|
||||
|
||||
beginPoint = thisObject.fitFunction(beginPoint)
|
||||
endPoint = thisObject.fitFunction(endPoint)
|
||||
|
||||
if (endPoint.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || beginPoint.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (endPoint.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || beginPoint.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -569,7 +569,7 @@ function newPlotter () {
|
||||
y: y
|
||||
}
|
||||
/* Contributing to Auto-Scale */
|
||||
coordinateSystem.reportValue(dataPoint.y)
|
||||
coordinateSystem.reportYValue(dataPoint.y)
|
||||
|
||||
/*
|
||||
The information we store in files is independent from the charing system and its coordinate systems.
|
||||
@@ -577,7 +577,7 @@ function newPlotter () {
|
||||
*/
|
||||
dataPoint = coordinateSystem.transformThisPoint(dataPoint)
|
||||
dataPoint = transformThisPoint(dataPoint, thisObject.container)
|
||||
dataPoint = canvas.chartSpace.viewport.fitIntoVisibleArea(dataPoint)
|
||||
dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint)
|
||||
dataPoint = thisObject.fitFunction(dataPoint)
|
||||
|
||||
/* Store the data point at the local map */
|
||||
@@ -586,7 +586,7 @@ function newPlotter () {
|
||||
if (plotterModuleConfig !== undefined) {
|
||||
if (plotterModuleConfig.slot !== undefined) {
|
||||
/* We reset the y coordinate since it will be transformed with another coordinate system to fit into a slot. */
|
||||
dataPoint.y = (-1) * y * coordinateSystem.scale.y + (plotterModuleConfig.slot.number - 1) * slotHeight + canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
dataPoint.y = (-1) * y * coordinateSystem.scale.y + (plotterModuleConfig.slot.number - 1) * slotHeight + canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -726,7 +726,7 @@ function newPlotter () {
|
||||
y: dataPointObject.y
|
||||
}
|
||||
/* We make sure the points do not fall outside the viewport visible area. This step allways need to be done. */
|
||||
dataPoint = canvas.chartSpace.viewport.fitIntoVisibleArea(dataPoint)
|
||||
dataPoint = canvas.chartingSpace.viewport.fitIntoVisibleArea(dataPoint)
|
||||
dataPoint = thisObject.fitFunction(dataPoint)
|
||||
if (k === 0) {
|
||||
browserCanvasContext.moveTo(dataPoint.x, dataPoint.y)
|
||||
@@ -769,7 +769,7 @@ function newPlotter () {
|
||||
}
|
||||
}
|
||||
|
||||
if (coordinateSystem.autoMinScale === true || coordinateSystem.autosMaxScale === true) {
|
||||
if (coordinateSystem.autoMinYScale === true || coordinateSystem.autosMaxScale === true) {
|
||||
mustRecalculateDataPoints = true
|
||||
} else {
|
||||
mustRecalculateDataPoints = false
|
||||
|
||||
@@ -88,7 +88,7 @@ function newDashboard () {
|
||||
function setBrowserEvents () {
|
||||
window.onbeforeunload = onBrowserClosed
|
||||
function onBrowserClosed () {
|
||||
// canvas.designerSpace.workspace.stopAllRunningTasks()
|
||||
// canvas.designSpace.workspace.stopAllRunningTasks()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ function newAutoScaleButton () {
|
||||
parentContainer: undefined,
|
||||
autoMinScale: undefined,
|
||||
autoMaxScale: undefined,
|
||||
setStatus: setStatus,
|
||||
draw: draw,
|
||||
getContainer: getContainer, // returns the inner most container that holds the point received by parameter.
|
||||
initialize: initialize,
|
||||
@@ -19,13 +20,15 @@ function newAutoScaleButton () {
|
||||
thisObject.container.isDraggeable = false
|
||||
thisObject.container.frame.containerName = 'Auto Scale Button'
|
||||
|
||||
let onMouseClickEventSuscriptionId
|
||||
const ICON_SIZE = 36
|
||||
let onMouseWheelEventSubscriptionId
|
||||
let coordinateSystem
|
||||
|
||||
let axis
|
||||
let currentStatus
|
||||
return thisObject
|
||||
|
||||
function finalize () {
|
||||
thisObject.container.eventHandler.stopListening(onMouseClickEventSuscriptionId)
|
||||
thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId)
|
||||
thisObject.container.finalize()
|
||||
thisObject.container = undefined
|
||||
thisObject.fitFunction = undefined
|
||||
@@ -33,83 +36,159 @@ function newAutoScaleButton () {
|
||||
thisObject.panels = undefined
|
||||
|
||||
coordinateSystem = undefined
|
||||
axis = undefined
|
||||
}
|
||||
|
||||
function initialize (pCoordinateSystem) {
|
||||
function initialize (pAxis, pCoordinateSystem) {
|
||||
axis = pAxis
|
||||
coordinateSystem = pCoordinateSystem
|
||||
thisObject.autoMinScale = coordinateSystem.autoMinScale
|
||||
thisObject.autoMaxScale = coordinateSystem.autoMaxScale
|
||||
thisObject.autoMinScale = coordinateSystem.autoMinYScale
|
||||
thisObject.autoMaxScale = coordinateSystem.autoMaxYScale
|
||||
|
||||
thisObject.container.frame.width = 25
|
||||
thisObject.container.frame.height = 25
|
||||
switch (axis) {
|
||||
case 'X': {
|
||||
thisObject.container.frame.width = ICON_SIZE
|
||||
thisObject.container.frame.height = ICON_SIZE
|
||||
|
||||
let position = {
|
||||
x: thisObject.container.parentContainer.frame.width * 5 / 8,
|
||||
y: thisObject.container.parentContainer.frame.height / 2 - thisObject.container.frame.height / 2
|
||||
let position = {
|
||||
x: thisObject.container.parentContainer.frame.width * 7 / 8,
|
||||
y: thisObject.container.parentContainer.frame.height / 2
|
||||
}
|
||||
|
||||
thisObject.container.frame.position = position
|
||||
break
|
||||
}
|
||||
case 'Y': {
|
||||
thisObject.container.frame.width = ICON_SIZE
|
||||
thisObject.container.frame.height = ICON_SIZE
|
||||
|
||||
let position = {
|
||||
x: thisObject.container.parentContainer.frame.width * 7 / 8,
|
||||
y: thisObject.container.parentContainer.frame.height / 2
|
||||
}
|
||||
|
||||
thisObject.container.frame.position = position
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
thisObject.container.frame.position = position
|
||||
|
||||
/* Lets listen to our own events to react when we have a Mouse Click */
|
||||
onMouseClickEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick)
|
||||
onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel)
|
||||
}
|
||||
|
||||
function onMouseClick (event) {
|
||||
function setStatus (autoMinScale, autoMaxScale) {
|
||||
thisObject.autoMinScale = autoMinScale
|
||||
thisObject.autoMaxScale = autoMaxScale
|
||||
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) {
|
||||
thisObject.autoMinScale = true
|
||||
thisObject.autoMaxScale = false
|
||||
update()
|
||||
return
|
||||
currentStatus = 1
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) {
|
||||
thisObject.autoMinScale = false
|
||||
thisObject.autoMaxScale = true
|
||||
update()
|
||||
return
|
||||
currentStatus = 2
|
||||
}
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) {
|
||||
thisObject.autoMinScale = true
|
||||
thisObject.autoMaxScale = true
|
||||
update()
|
||||
return
|
||||
currentStatus = 3
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) {
|
||||
thisObject.autoMinScale = false
|
||||
thisObject.autoMaxScale = false
|
||||
update()
|
||||
return
|
||||
currentStatus = 4
|
||||
}
|
||||
}
|
||||
function onMouseWheel (event) {
|
||||
let factor
|
||||
let delta = event.wheelDelta
|
||||
if (delta < 0) {
|
||||
delta = -1
|
||||
} else {
|
||||
delta = 1
|
||||
}
|
||||
currentStatus = currentStatus + delta
|
||||
if (currentStatus === 5) { currentStatus = 1 }
|
||||
if (currentStatus === 0) { currentStatus = 4 }
|
||||
|
||||
switch (currentStatus) {
|
||||
case 1: {
|
||||
thisObject.autoMinScale = false
|
||||
thisObject.autoMaxScale = false
|
||||
update()
|
||||
return
|
||||
}
|
||||
case 2: {
|
||||
thisObject.autoMinScale = true
|
||||
thisObject.autoMaxScale = false
|
||||
update()
|
||||
return
|
||||
}
|
||||
case 3: {
|
||||
thisObject.autoMinScale = false
|
||||
thisObject.autoMaxScale = true
|
||||
update()
|
||||
return
|
||||
}
|
||||
case 4: {
|
||||
thisObject.autoMinScale = true
|
||||
thisObject.autoMaxScale = true
|
||||
update()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
function update () {
|
||||
coordinateSystem.autoMinScale = thisObject.autoMinScale
|
||||
coordinateSystem.autoMaxScale = thisObject.autoMaxScale
|
||||
switch (axis) {
|
||||
case 'X': {
|
||||
coordinateSystem.autoMinXScale = thisObject.autoMinScale
|
||||
coordinateSystem.autoMaxXScale = thisObject.autoMaxScale
|
||||
break
|
||||
}
|
||||
case 'Y': {
|
||||
coordinateSystem.autoMinYScale = thisObject.autoMinScale
|
||||
coordinateSystem.autoMaxYScale = thisObject.autoMaxScale
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
coordinateSystem.recalculateScale()
|
||||
}
|
||||
}
|
||||
|
||||
function getContainer (point, purpose) {
|
||||
console.log('INSIDE BUTTON')
|
||||
if (thisObject.container.frame.isThisPointHere(point, true) === true) {
|
||||
console.log('RETURNING BUTTON FROM BUTTON')
|
||||
return thisObject.container
|
||||
}
|
||||
}
|
||||
|
||||
function draw () {
|
||||
let icon
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) {
|
||||
icon = canvas.designerSpace.iconCollection.get('plotter-panel')
|
||||
switch (axis) {
|
||||
case 'X': {
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-manual')
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-min')
|
||||
}
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-max')
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-time-scale-auto-min-max')
|
||||
}
|
||||
drawIcon(icon, 0, 0, 0, 0, ICON_SIZE, thisObject.container)
|
||||
break
|
||||
}
|
||||
case 'Y': {
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === false) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-manual')
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-min')
|
||||
}
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-max')
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) {
|
||||
icon = canvas.designSpace.iconCollection.get('toggle-auto-scale-auto-min-max')
|
||||
}
|
||||
drawIcon(icon, 0, 0, 0, 0, ICON_SIZE, thisObject.container)
|
||||
break
|
||||
}
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === false) {
|
||||
icon = canvas.designerSpace.iconCollection.get('shapes-polygon-body')
|
||||
}
|
||||
if (thisObject.autoMinScale === false && thisObject.autoMaxScale === true) {
|
||||
icon = canvas.designerSpace.iconCollection.get('social-bot')
|
||||
}
|
||||
if (thisObject.autoMinScale === true && thisObject.autoMaxScale === true) {
|
||||
icon = canvas.designerSpace.iconCollection.get('startup')
|
||||
}
|
||||
|
||||
drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 14, thisObject.container)
|
||||
}
|
||||
}
|
||||
@@ -91,11 +91,11 @@ function newRateScale () {
|
||||
onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver)
|
||||
onScaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged)
|
||||
|
||||
readObjectState()
|
||||
|
||||
autoScaleButton = newAutoScaleButton()
|
||||
autoScaleButton.container.connectToParent(thisObject.container)
|
||||
autoScaleButton.initialize(coordinateSystem)
|
||||
autoScaleButton.initialize('Y', coordinateSystem)
|
||||
|
||||
readObjectState()
|
||||
}
|
||||
|
||||
function onMouseOverSomeTimeMachineContainer (event) {
|
||||
@@ -134,6 +134,11 @@ function newRateScale () {
|
||||
}
|
||||
|
||||
function onMouseWheel (event) {
|
||||
if (event.shiftKey === true) {
|
||||
autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event)
|
||||
return
|
||||
}
|
||||
|
||||
let factor
|
||||
let morePower = 10
|
||||
if (event.buttons === 4) { morePower = 1 } // Mouse wheel pressed.
|
||||
@@ -150,15 +155,7 @@ function newRateScale () {
|
||||
}
|
||||
|
||||
function getContainer (point, purpose) {
|
||||
console.log(purpose, point.x, point.y)
|
||||
if (thisObject.container.frame.isThisPointHere(point, true) === true) {
|
||||
console.log('INSIDE')
|
||||
let container = autoScaleButton.getContainer(point, purpose)
|
||||
if (container !== undefined) {
|
||||
console.log('RETURNING BUTTON FROM SCALE')
|
||||
return container
|
||||
}
|
||||
|
||||
if (purpose === GET_CONTAINER_PURPOSE.DRAGGING) {
|
||||
return draggeableContainer
|
||||
}
|
||||
@@ -172,8 +169,8 @@ function newRateScale () {
|
||||
let code = JSON.parse(thisObject.payload.node.code)
|
||||
code.minValue = coordinateSystem.min.y
|
||||
code.maxValue = coordinateSystem.max.y
|
||||
code.autoMinScale = coordinateSystem.autoMinScale
|
||||
code.autoMaxScale = coordinateSystem.autoMaxScale
|
||||
code.autoMinScale = coordinateSystem.autoMinYScale
|
||||
code.autoMaxScale = coordinateSystem.autoMaxYScale
|
||||
thisObject.payload.node.code = JSON.stringify(code, null, 4)
|
||||
} catch (err) {
|
||||
// we ignore errors here since most likely they will be parsing errors.
|
||||
@@ -193,19 +190,20 @@ function newRateScale () {
|
||||
if (
|
||||
thisObject.minValue !== code.minValue ||
|
||||
thisObject.maxValue !== code.maxValue ||
|
||||
coordinateSystem.autoMinScale !== code.autoMinScale ||
|
||||
coordinateSystem.autoMaxScale !== code.autoMaxScale
|
||||
coordinateSystem.autoMinYScale !== code.autoMinScale ||
|
||||
coordinateSystem.autoMaxYScale !== code.autoMaxScale
|
||||
) {
|
||||
thisObject.minValue = code.minValue
|
||||
thisObject.maxValue = code.maxValue
|
||||
coordinateSystem.min.y = thisObject.minValue
|
||||
coordinateSystem.max.y = thisObject.maxValue
|
||||
if (code.autoMinScale !== undefined && (code.autoMinScale === true || code.autoMinScale === false)) {
|
||||
coordinateSystem.autoMinScale = code.autoMinScale
|
||||
}
|
||||
if (code.autoMaxScale !== undefined && (code.autoMaxScale === true || code.autoMaxScale === false)) {
|
||||
coordinateSystem.autoMaxScale = code.autoMaxScale
|
||||
|
||||
if (code.autoMinScale !== undefined && (code.autoMinScale === true || code.autoMinScale === false) && code.autoMaxScale !== undefined && (code.autoMaxScale === true || code.autoMaxScale === false)) {
|
||||
coordinateSystem.autoMinYScale = code.autoMinScale
|
||||
coordinateSystem.autoMaxYScale = code.autoMaxScale
|
||||
autoScaleButton.setStatus(code.autoMinScale, code.autoMaxScale)
|
||||
}
|
||||
|
||||
coordinateSystem.recalculateScale()
|
||||
}
|
||||
}
|
||||
@@ -394,8 +392,8 @@ function newRateScale () {
|
||||
let label3 = labelArray[1]
|
||||
if (label3 === undefined) { label3 = '00' }
|
||||
|
||||
let icon1 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon2 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
|
||||
let backgroundColor = UI_COLOR.BLACK
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ function newTimeFrameScale () {
|
||||
|
||||
function finalize () {
|
||||
thisObject.container.eventHandler.stopListening(onMouseWheelEventSubscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(onViewportZoomChangedEventSubscriptionId)
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(onViewportZoomChangedEventSubscriptionId)
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSubscriptionId)
|
||||
thisObject.container.eventHandler.stopListening(onMouseNotOverEventSubscriptionId)
|
||||
|
||||
@@ -81,7 +81,7 @@ function newTimeFrameScale () {
|
||||
newTimeFrame()
|
||||
|
||||
onMouseWheelEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel)
|
||||
onViewportZoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged)
|
||||
onViewportZoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent('Zoom Changed', onViewportZoomChanged)
|
||||
onMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver)
|
||||
onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver)
|
||||
}
|
||||
@@ -123,13 +123,13 @@ function newTimeFrameScale () {
|
||||
}
|
||||
|
||||
function zoomOutPhysics () {
|
||||
if ((thisObject.isVisible === true && previousIsVisible === false) && (canvas.chartSpace.viewport.zoomTargetLevel >= ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME)) {
|
||||
if ((thisObject.isVisible === true && previousIsVisible === false) && (canvas.chartingSpace.viewport.zoomTargetLevel >= ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME)) {
|
||||
let event = {}
|
||||
event.timeFrame = thisObject.timeFrame
|
||||
thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event)
|
||||
previousIsVisible = true
|
||||
}
|
||||
if ((thisObject.isVisible === false && previousIsVisible === true) || (canvas.chartSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME)) {
|
||||
if ((thisObject.isVisible === false && previousIsVisible === true) || (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_CHANGING_TIME_FRAME)) {
|
||||
let event = {}
|
||||
event.timeFrame = ONE_DAY_IN_MILISECONDS
|
||||
thisObject.container.eventHandler.raiseEvent('Time Frame Value Changed', event)
|
||||
@@ -340,8 +340,8 @@ function newTimeFrameScale () {
|
||||
let label2 = label[0]
|
||||
let label3 = label[1].toUpperCase()
|
||||
|
||||
let icon1 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon2 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
|
||||
let backgroundColor = UI_COLOR.BLACK
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ function newTimeScale () {
|
||||
thisObject.container.frame.height = 40
|
||||
|
||||
let visible = true
|
||||
let autoScaleButton
|
||||
let isMouseOver
|
||||
|
||||
let onMouseWheelEventSubscriptionId
|
||||
@@ -63,6 +64,9 @@ function newTimeScale () {
|
||||
coordinateSystem = undefined
|
||||
limitingContainer = undefined
|
||||
mouse = undefined
|
||||
|
||||
autoScaleButton.finalize()
|
||||
autoScaleButton = undefined
|
||||
}
|
||||
|
||||
function initialize (pCoordinateSystem, pLimitingContainer) {
|
||||
@@ -74,6 +78,10 @@ function newTimeScale () {
|
||||
onMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver)
|
||||
onScaleChangedEventSubscriptionId = coordinateSystem.eventHandler.listenToEvent('Scale Changed', onScaleChanged)
|
||||
|
||||
autoScaleButton = newAutoScaleButton()
|
||||
autoScaleButton.container.connectToParent(thisObject.container)
|
||||
autoScaleButton.initialize('X', coordinateSystem)
|
||||
|
||||
readObjectState()
|
||||
}
|
||||
|
||||
@@ -108,6 +116,10 @@ function newTimeScale () {
|
||||
}
|
||||
|
||||
function onMouseWheel (event) {
|
||||
if (event.shiftKey === true) {
|
||||
autoScaleButton.container.eventHandler.raiseEvent('onMouseWheel', event)
|
||||
return
|
||||
}
|
||||
let factor
|
||||
let morePower = 10
|
||||
if (event.buttons === 4) { morePower = 1 } // Mouse wheel pressed.
|
||||
@@ -126,7 +138,7 @@ function newTimeScale () {
|
||||
saveObjectState()
|
||||
}
|
||||
|
||||
function getContainer (point) {
|
||||
function getContainer (point, purpose) {
|
||||
if (thisObject.container.frame.isThisPointHere(point, true) === true) {
|
||||
return thisObject.container
|
||||
}
|
||||
@@ -137,6 +149,8 @@ function newTimeScale () {
|
||||
let code = JSON.parse(thisObject.payload.node.code)
|
||||
code.fromDate = (new Date(coordinateSystem.min.x)).toISOString()
|
||||
code.toDate = (new Date(coordinateSystem.max.x)).toISOString()
|
||||
code.autoMinScale = coordinateSystem.autoMinXScale
|
||||
code.autoMaxScale = coordinateSystem.autoMaxXScale
|
||||
thisObject.payload.node.code = JSON.stringify(code, null, 4)
|
||||
} catch (err) {
|
||||
// we ignore errors here since most likely they will be parsing errors.
|
||||
@@ -158,6 +172,12 @@ function newTimeScale () {
|
||||
thisObject.toDate = Date.parse(code.toDate)
|
||||
coordinateSystem.min.x = thisObject.fromDate
|
||||
coordinateSystem.max.x = thisObject.toDate
|
||||
|
||||
if (code.autoMinScale !== undefined && (code.autoMinScale === true || code.autoMinScale === false) && code.autoMaxScale !== undefined && (code.autoMaxScale === true || code.autoMaxScale === false)) {
|
||||
coordinateSystem.autoMinXScale = code.autoMinScale
|
||||
coordinateSystem.autoMaxXScale = code.autoMaxScale
|
||||
autoScaleButton.setStatus(code.autoMinScale, code.autoMaxScale)
|
||||
}
|
||||
coordinateSystem.recalculateScale()
|
||||
}
|
||||
}
|
||||
@@ -229,6 +249,7 @@ function newTimeScale () {
|
||||
|
||||
function draw () {
|
||||
drawScaleBox()
|
||||
autoScaleButton.draw()
|
||||
if (visible === false) {
|
||||
drawScaleDisplayCover(thisObject.container)
|
||||
}
|
||||
@@ -237,6 +258,7 @@ function newTimeScale () {
|
||||
function drawForeground () {
|
||||
if (isMouseOver === true) {
|
||||
drawScaleBox()
|
||||
autoScaleButton.draw()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,8 +271,8 @@ function newTimeScale () {
|
||||
let label2 = labelArray[1] + ' ' + labelArray[2] + ' ' + labelArray[3]
|
||||
let label3 = labelArray[4]
|
||||
|
||||
let icon1 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon2 = canvas.designerSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
let icon1 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.payload.parentNode.type)
|
||||
let icon2 = canvas.designSpace.iconByUiObjectType.get(thisObject.payload.node.type)
|
||||
|
||||
let backgroundColor = UI_COLOR.BLACK
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ changes, then all charts in it are replotted with the corresponging data.
|
||||
|
||||
*/
|
||||
|
||||
function newChartSpace () {
|
||||
const MODULE_NAME = 'Chart Space'
|
||||
function newChartingSpace () {
|
||||
const MODULE_NAME = 'Charting Space'
|
||||
const ERROR_LOG = true
|
||||
const logger = newWebDebugLog()
|
||||
logger.fileName = MODULE_NAME
|
||||
@@ -84,7 +84,7 @@ function newChartSpace () {
|
||||
}
|
||||
|
||||
function initialize () {
|
||||
let rootNodes = canvas.designerSpace.workspace.workspaceNode.rootNodes
|
||||
let rootNodes = canvas.designSpace.workspace.workspaceNode.rootNodes
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Charting Space') {
|
||||
@@ -93,7 +93,7 @@ function newChartSpace () {
|
||||
}
|
||||
|
||||
if (thisObject.payload === undefined) {
|
||||
if (ERROR_LOG === true) { logger.write('[WARN] initialize -> There must exist a Charting Space at the Designer Space in order to enable Charts. PLease create one and refreash your browser. ') }
|
||||
if (ERROR_LOG === true) { logger.write('[WARN] initialize -> There must exist a Charting Space at the Design Space in order to enable Charts. PLease create one and refreash your browser. ') }
|
||||
return
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ function newChartSpace () {
|
||||
y: browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100
|
||||
}
|
||||
|
||||
canvas.chartSpace.viewport.displace(displaceVector)
|
||||
canvas.chartingSpace.viewport.displace(displaceVector)
|
||||
}
|
||||
|
||||
function oneScreenDown () {
|
||||
@@ -176,7 +176,7 @@ function newChartSpace () {
|
||||
y: -browserCanvas.height * PERCENTAGE_OF_SCREEN_FOR_DISPLACEMENT / 100
|
||||
}
|
||||
|
||||
canvas.chartSpace.viewport.displace(displaceVector)
|
||||
canvas.chartingSpace.viewport.displace(displaceVector)
|
||||
}
|
||||
|
||||
function oneScreenLeft () {
|
||||
@@ -185,7 +185,7 @@ function newChartSpace () {
|
||||
y: 0
|
||||
}
|
||||
|
||||
canvas.chartSpace.viewport.displace(displaceVector, true)
|
||||
canvas.chartingSpace.viewport.displace(displaceVector, true)
|
||||
}
|
||||
|
||||
function oneScreenRight () {
|
||||
@@ -194,7 +194,7 @@ function newChartSpace () {
|
||||
y: 0
|
||||
}
|
||||
|
||||
canvas.chartSpace.viewport.displace(displaceVector, true)
|
||||
canvas.chartingSpace.viewport.displace(displaceVector, true)
|
||||
}
|
||||
|
||||
function fitFunction (point, fullVisible) {
|
||||
@@ -265,16 +265,21 @@ function newChartSpace () {
|
||||
if (thisObject.payload.node === undefined) { return }
|
||||
syncWithDesignerLoop = syncWithDesignerLoop + 0.00000000001
|
||||
|
||||
if (thisObject.payload.node.timeMachines !== undefined) {
|
||||
for (let j = 0; j < thisObject.payload.node.timeMachines.length; j++) {
|
||||
let node = thisObject.payload.node.timeMachines[j]
|
||||
let timeMachine = timeMachinesMap.get(node.id)
|
||||
if (timeMachine === undefined) {
|
||||
if (thisObject.payload.node.dashboards !== undefined) {
|
||||
for (let i = 0; i < thisObject.payload.node.dashboards.length; i++) {
|
||||
let dashboard = thisObject.payload.node.dashboards[i]
|
||||
if (dashboard.timeMachines !== undefined) {
|
||||
for (let j = 0; j < dashboard.timeMachines.length; j++) {
|
||||
let node = dashboard.timeMachines[j]
|
||||
let timeMachine = timeMachinesMap.get(node.id)
|
||||
if (timeMachine === undefined) {
|
||||
/* The time machine node is new, thus we need to initialize a new timeMachine */
|
||||
initializeTimeMachine(node, syncWithDesignerLoop)
|
||||
} else {
|
||||
initializeTimeMachine(node, syncWithDesignerLoop)
|
||||
} else {
|
||||
/* The time machine already exists, we tag it as existing at the current loop. */
|
||||
timeMachine.syncWithDesignerLoop = syncWithDesignerLoop
|
||||
timeMachine.syncWithDesignerLoop = syncWithDesignerLoop
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -309,16 +314,11 @@ function newChartSpace () {
|
||||
timeMachine.container.frame.position.y = browserCanvas.height / 2 - TIME_MACHINE_HEIGHT / 2
|
||||
timeMachine.initialize(onTimeMachineInitialized)
|
||||
|
||||
function onTimeMachineInitialized (err) {
|
||||
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
if (ERROR_LOG === true) { logger.write('[ERROR] syncWithDesigner -> initializeTimeMachine -> Initialization Failed. -> Err ' + err.message) }
|
||||
return
|
||||
}
|
||||
|
||||
function onTimeMachineInitialized () {
|
||||
thisObject.timeMachines.push(timeMachine)
|
||||
timeMachine.payload.uiObject.setValue('')
|
||||
if (canvas.chartSpace.viewport !== undefined) {
|
||||
canvas.chartSpace.viewport.raiseEvents() // These events will impacts on objects just initialized.
|
||||
if (canvas.chartingSpace.viewport !== undefined) {
|
||||
canvas.chartingSpace.viewport.raiseEvents() // These events will impacts on objects just initialized.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -333,8 +333,8 @@ function newChartSpace () {
|
||||
thisObject.visible = true
|
||||
}
|
||||
|
||||
if (canvas.chartSpace.viewport !== undefined) {
|
||||
canvas.chartSpace.viewport.resize()
|
||||
if (canvas.chartingSpace.viewport !== undefined) {
|
||||
canvas.chartingSpace.viewport.resize()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
thisObject.container.frame.position.x = 0
|
||||
|
||||
let INITIAL_POSITION
|
||||
if (canvas.designerSpace.workspace.enabled === true) {
|
||||
if (canvas.designSpace.workspace.enabled === true) {
|
||||
let localStorage = window.localStorage.getItem(MODULE_NAME)
|
||||
if (localStorage !== null) {
|
||||
storage = JSON.parse(localStorage)
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
thisObject.status = 'MIDDLE'
|
||||
|
||||
if (canvas.designerSpace.workspace.enabled === true) {
|
||||
if (canvas.designSpace.workspace.enabled === true) {
|
||||
thisObject.container.isDraggeable = true
|
||||
} else {
|
||||
thisObject.container.isDraggeable = false
|
||||
@@ -141,10 +141,10 @@
|
||||
if (thisObject.container.frame.position.y > browserCanvas.height * 99.5 / 100 - COCKPIT_SPACE_HEIGHT) {
|
||||
thisObject.container.frame.position.y = browserCanvas.height - COCKPIT_SPACE_HEIGHT
|
||||
thisObject.status = 'BOTTOM'
|
||||
canvas.designerSpace.makeInvisible()
|
||||
canvas.designSpace.makeInvisible()
|
||||
canvas.floatingSpace.makeInvisible()
|
||||
} else {
|
||||
canvas.designerSpace.makeVisible()
|
||||
canvas.designSpace.makeVisible()
|
||||
canvas.floatingSpace.makeVisible()
|
||||
}
|
||||
|
||||
@@ -161,8 +161,8 @@
|
||||
spacePosition: COCKPIT_SPACE_POSITION
|
||||
}
|
||||
window.localStorage.setItem(MODULE_NAME, JSON.stringify(storage))
|
||||
if (canvas.chartSpace.viewport !== undefined) {
|
||||
canvas.chartSpace.viewport.resize()
|
||||
if (canvas.chartingSpace.viewport !== undefined) {
|
||||
canvas.chartingSpace.viewport.resize()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
browserCanvasContext.closePath()
|
||||
browserCanvasContext.fill()
|
||||
|
||||
if (canvas.designerSpace.workspace.enabled === true) {
|
||||
if (canvas.designSpace.workspace.enabled === true) {
|
||||
arrow()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
function newDesignerSpace () {
|
||||
function newDesignSpace () {
|
||||
const MODULE_NAME = 'Strategy Space'
|
||||
let thisObject = {
|
||||
sidePanel: undefined,
|
||||
@@ -241,7 +241,17 @@ function newDesignerSpace () {
|
||||
'task-manager',
|
||||
'session-based-data',
|
||||
'session-independent-data',
|
||||
'session-reference'
|
||||
'session-reference',
|
||||
'dashboard',
|
||||
'toggle-auto-scale-manual',
|
||||
'toggle-auto-scale-auto-min-max',
|
||||
'toggle-auto-scale-auto-max',
|
||||
'toggle-auto-scale-auto-min',
|
||||
'toggle-panel-off',
|
||||
'toggle-auto-time-scale-auto-min',
|
||||
'toggle-auto-time-scale-auto-max',
|
||||
'toggle-auto-time-scale-auto-min-max',
|
||||
'toggle-auto-time-scale-manual'
|
||||
]
|
||||
|
||||
for (let i = 0; i < iconsNames.length; i++) {
|
||||
@@ -281,7 +291,7 @@ function newDesignerSpace () {
|
||||
if (thisObject.sidePanel !== undefined) {
|
||||
container = thisObject.sidePanel.getContainer(point)
|
||||
if (container !== undefined) {
|
||||
container.space = 'Designer Space'
|
||||
container.space = 'Design Space'
|
||||
return container
|
||||
}
|
||||
}
|
||||
@@ -43,8 +43,8 @@ function newPanelsSpace () {
|
||||
case 'Layers Panel':
|
||||
{
|
||||
panel = newLayersPanel()
|
||||
panel.fitFunction = canvas.chartSpace.fitFunction
|
||||
panel.container.isVisibleFunction = canvas.chartSpace.isThisPointVisible
|
||||
panel.fitFunction = canvas.chartingSpace.fitFunction
|
||||
panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible
|
||||
panel.type = 'Layers Panel'
|
||||
break
|
||||
}
|
||||
@@ -52,14 +52,14 @@ function newPanelsSpace () {
|
||||
{
|
||||
if (pParameters.panelNode.code.isLegacy !== true) {
|
||||
panel = newPlotterPanel()
|
||||
panel.fitFunction = canvas.chartSpace.fitFunction
|
||||
panel.container.isVisibleFunction = canvas.chartSpace.isThisPointVisible
|
||||
panel.fitFunction = canvas.chartingSpace.fitFunction
|
||||
panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible
|
||||
panel.session = pSession
|
||||
panel.initialize(pParameters.panelNode)
|
||||
} else {
|
||||
panel = getNewPlotterPanel(pParameters.dataMine, pParameters.plotterCodeName, pParameters.moduleCodeName, pParameters.panelNode.code.codeName)
|
||||
panel.fitFunction = canvas.chartSpace.fitFunction
|
||||
panel.container.isVisibleFunction = canvas.chartSpace.isThisPointVisible
|
||||
panel.fitFunction = canvas.chartingSpace.fitFunction
|
||||
panel.container.isVisibleFunction = canvas.chartingSpace.isThisPointVisible
|
||||
panel.session = pSession
|
||||
panel.initialize()
|
||||
}
|
||||
@@ -130,7 +130,7 @@ function newPanelsSpace () {
|
||||
if (thisObject.panels !== undefined) {
|
||||
for (let i = 0; i < thisObject.panels.length; i++) {
|
||||
let panel = thisObject.panels[i]
|
||||
let owner = canvas.chartSpace.inViewport.get(panel.owner)
|
||||
let owner = canvas.chartingSpace.inViewport.get(panel.owner)
|
||||
if (owner !== undefined) {
|
||||
if (panel.physics !== undefined) {
|
||||
panel.physics()
|
||||
@@ -162,8 +162,8 @@ function newPanelsSpace () {
|
||||
centerPoint.y = centerPoint.y + panel.container.frame.height / 2
|
||||
|
||||
/* Lets see which quadrant the panel is at */
|
||||
let verticalLine = (canvas.chartSpace.viewport.visibleArea.topRight.x - canvas.chartSpace.viewport.visibleArea.topLeft.x) / 2 + canvas.chartSpace.viewport.visibleArea.topLeft.x
|
||||
let horizontalLine = (canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topRight.y) / 2 + canvas.chartSpace.viewport.visibleArea.topRight.y
|
||||
let verticalLine = (canvas.chartingSpace.viewport.visibleArea.topRight.x - canvas.chartingSpace.viewport.visibleArea.topLeft.x) / 2 + canvas.chartingSpace.viewport.visibleArea.topLeft.x
|
||||
let horizontalLine = (canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) / 2 + canvas.chartingSpace.viewport.visibleArea.topRight.y
|
||||
|
||||
if (panel.panelTabButton !== undefined) {
|
||||
if (panel.panelTabButton.status === 'up') {
|
||||
@@ -208,18 +208,18 @@ function newPanelsSpace () {
|
||||
panel.container.frame.position.x = browserCanvas.width - panel.container.frame.width
|
||||
}
|
||||
}
|
||||
if (panel.container.frame.height <= canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topRight.y) {
|
||||
if (panel.container.frame.height <= canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topRight.y) {
|
||||
if (panel.gravitatesTowards === 'topLeft' || panel.gravitatesTowards === 'topRight') {
|
||||
panel.container.frame.position.y = panel.container.frame.position.y - panel.container.speed.y
|
||||
isOverlapping(i, panel.container)
|
||||
if (panel.container.frame.position.y < canvas.chartSpace.viewport.visibleArea.topLeft.y) {
|
||||
panel.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
if (panel.container.frame.position.y < canvas.chartingSpace.viewport.visibleArea.topLeft.y) {
|
||||
panel.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
}
|
||||
} else {
|
||||
panel.container.frame.position.y = panel.container.frame.position.y + panel.container.speed.y
|
||||
isOverlapping(i, panel.container)
|
||||
if (panel.container.frame.position.y + panel.container.frame.height > canvas.chartSpace.viewport.visibleArea.bottomRight.y) {
|
||||
panel.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - panel.container.frame.height
|
||||
if (panel.container.frame.position.y + panel.container.frame.height > canvas.chartingSpace.viewport.visibleArea.bottomRight.y) {
|
||||
panel.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - panel.container.frame.height
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -317,7 +317,7 @@ function newPanelsSpace () {
|
||||
|
||||
for (let i = 0; i < thisObject.panels.length; i++) {
|
||||
let panel = thisObject.panels[i]
|
||||
let owner = canvas.chartSpace.inViewport.get(panel.owner)
|
||||
let owner = canvas.chartingSpace.inViewport.get(panel.owner)
|
||||
if (owner !== undefined) {
|
||||
if (panel.isVisible === true && panel.isHidden === false) {
|
||||
panel.draw()
|
||||
@@ -336,7 +336,7 @@ function newPanelsSpace () {
|
||||
*/
|
||||
for (let i = thisObject.panels.length - 1; i >= 0; i--) {
|
||||
let panel = thisObject.panels[i]
|
||||
let owner = canvas.chartSpace.inViewport.get(panel.owner)
|
||||
let owner = canvas.chartingSpace.inViewport.get(panel.owner)
|
||||
if (owner !== undefined) {
|
||||
if (panel.isVisible === true && panel.isHidden === false) {
|
||||
container = panel.getContainer(point)
|
||||
|
||||
@@ -45,7 +45,7 @@ function newTopSpace () {
|
||||
|
||||
thisObject.container.frame.position.x = 0
|
||||
try {
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.bottomLeft.y
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y
|
||||
} catch (e) { }
|
||||
}
|
||||
|
||||
|
||||
@@ -114,15 +114,15 @@ function transformThisPoint (point, container) {
|
||||
|
||||
point = container.frame.frameThisPoint(point)
|
||||
|
||||
/* We pass this point through the canvas.chartSpace.viewport lends, meaning we apply the canvas.chartSpace.viewport zoom and displacement. */
|
||||
/* We pass this point through the canvas.chartingSpace.viewport lends, meaning we apply the canvas.chartingSpace.viewport zoom and displacement. */
|
||||
|
||||
point = canvas.chartSpace.viewport.transformThisPoint(point)
|
||||
point = canvas.chartingSpace.viewport.transformThisPoint(point)
|
||||
|
||||
return point
|
||||
}
|
||||
|
||||
function unTransformThisPoint (point, container) {
|
||||
point = canvas.chartSpace.viewport.unTransformThisPoint(point)
|
||||
point = canvas.chartingSpace.viewport.unTransformThisPoint(point)
|
||||
point = container.frame.unframeThisPoint(point)
|
||||
|
||||
return point
|
||||
@@ -174,7 +174,7 @@ function getRateFromPointAtBrowserCanvas (point, container, coordinateSystem) {
|
||||
return point.y
|
||||
}
|
||||
|
||||
function getRateFromPointAtChartSpace (point, container, coordinateSystem) {
|
||||
function getRateFromPointAtChartingSpace (point, container, coordinateSystem) {
|
||||
point = container.frame.unframeThisPoint(point)
|
||||
point = coordinateSystem.unInverseTransform(point, container.frame.height)
|
||||
|
||||
@@ -200,14 +200,14 @@ function moveToUserPosition (container, currentDate, currentRate, coordinateSyst
|
||||
y: currentRate
|
||||
}
|
||||
|
||||
/* Put this point in the coordinate system of the canvas.chartSpace.viewport */
|
||||
/* Put this point in the coordinate system of the canvas.chartingSpace.viewport */
|
||||
targetPoint = coordinateSystem.transformThisPoint(targetPoint)
|
||||
targetPoint = transformThisPoint(targetPoint, container)
|
||||
|
||||
let displaceVector
|
||||
|
||||
let targetNoZoom = canvas.chartSpace.viewport.unTransformThisPoint(targetPoint)
|
||||
let mouseNoZoom = canvas.chartSpace.viewport.unTransformThisPoint(mousePosition)
|
||||
let targetNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(targetPoint)
|
||||
let mouseNoZoom = canvas.chartingSpace.viewport.unTransformThisPoint(mousePosition)
|
||||
|
||||
displaceVector = {
|
||||
x: mouseNoZoom.x - targetNoZoom.x,
|
||||
|
||||
@@ -4784,8 +4784,8 @@
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Time Machine",
|
||||
"relatedUiObject": "Time Machine",
|
||||
"label": "Add Dashboard",
|
||||
"relatedUiObject": "Dashboard",
|
||||
"actionFunction": "payload.onMenuItemClick"
|
||||
},
|
||||
{
|
||||
@@ -4809,6 +4809,40 @@
|
||||
"childType": "Viewport",
|
||||
"autoAdd": true
|
||||
},
|
||||
{
|
||||
"name": "dashboards",
|
||||
"type": "array",
|
||||
"childType": "Dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Dashboard",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Time Machine",
|
||||
"relatedUiObject": "Time Machine",
|
||||
"actionFunction": "payload.onMenuItemClick"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete Dashboard",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete",
|
||||
"actionFunction": "payload.onMenuItemClick"
|
||||
}
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"icon": "dashboard",
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Charting Space->"
|
||||
},
|
||||
"propertyNameAtParent": "dashboards",
|
||||
"properties": [
|
||||
{
|
||||
"name": "timeMachines",
|
||||
"type": "array",
|
||||
@@ -4878,7 +4912,7 @@
|
||||
"isTitleAllwaysVisible": true,
|
||||
"icon": "time-machine",
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Charting Space->"
|
||||
"compatibleTypes": "->Dashboard->"
|
||||
},
|
||||
"propertyNameAtParent": "timeMachines",
|
||||
"properties": [
|
||||
@@ -4965,7 +4999,7 @@
|
||||
}
|
||||
],
|
||||
"initialValues": {
|
||||
"code": "{ \n\"fromDate\": \"2018-01-01\",\n\"toDate\": \"2020-12-31\"\n}"
|
||||
"code": "{ \n\"autoMinScale\": true,\n\"autoMaxScale\": true,\n\"fromDate\": \"2018-01-01\",\n\"toDate\": \"2020-12-31\"\n}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"editors": {
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -121,8 +121,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -320,8 +320,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -408,8 +408,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -518,36 +518,38 @@
|
||||
bandPoint5 = transformThisPoint(bandPoint5, thisObject.container);
|
||||
bandPoint6 = transformThisPoint(bandPoint6, thisObject.container);
|
||||
|
||||
if (bandPoint2.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || bandPoint1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (bandPoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || bandPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let diffA = bandPoint1.y - canvas.chartSpace.viewport.visibleArea.bottomLeft.y
|
||||
if (diffA > 0) {
|
||||
bandPoint1.y = bandPoint1.y - diffA
|
||||
bandPoint2.y = bandPoint2.y - diffA
|
||||
bandPoint3.y = bandPoint3.y - diffA
|
||||
bandPoint4.y = bandPoint4.y - diffA
|
||||
bandPoint5.y = bandPoint5.y - diffA
|
||||
bandPoint6.y = bandPoint6.y - diffA
|
||||
if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_PACKING_OBJECTS_AT_THE_BOTTOM_OR_TOP_OF_VIEWPORT) {
|
||||
let diffA = bandPoint1.y - canvas.chartingSpace.viewport.visibleArea.bottomLeft.y
|
||||
if (diffA > 0) {
|
||||
bandPoint1.y = bandPoint1.y - diffA
|
||||
bandPoint2.y = bandPoint2.y - diffA
|
||||
bandPoint3.y = bandPoint3.y - diffA
|
||||
bandPoint4.y = bandPoint4.y - diffA
|
||||
bandPoint5.y = bandPoint5.y - diffA
|
||||
bandPoint6.y = bandPoint6.y - diffA
|
||||
}
|
||||
|
||||
let diffB = bandPoint2.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
if (diffB < 0) {
|
||||
bandPoint1.y = bandPoint1.y - diffB
|
||||
bandPoint2.y = bandPoint2.y - diffB
|
||||
bandPoint3.y = bandPoint3.y - diffB
|
||||
bandPoint4.y = bandPoint4.y - diffB
|
||||
bandPoint5.y = bandPoint5.y - diffB
|
||||
bandPoint6.y = bandPoint6.y - diffB
|
||||
}
|
||||
}
|
||||
|
||||
let diffB = bandPoint2.y - canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
if (diffB < 0) {
|
||||
bandPoint1.y = bandPoint1.y - diffB
|
||||
bandPoint2.y = bandPoint2.y - diffB
|
||||
bandPoint3.y = bandPoint3.y - diffB
|
||||
bandPoint4.y = bandPoint4.y - diffB
|
||||
bandPoint5.y = bandPoint5.y - diffB
|
||||
bandPoint6.y = bandPoint6.y - diffB
|
||||
}
|
||||
|
||||
bandPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(bandPoint1);
|
||||
bandPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(bandPoint2);
|
||||
bandPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(bandPoint3);
|
||||
bandPoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(bandPoint4);
|
||||
bandPoint5 = canvas.chartSpace.viewport.fitIntoVisibleArea(bandPoint5);
|
||||
bandPoint6 = canvas.chartSpace.viewport.fitIntoVisibleArea(bandPoint6);
|
||||
bandPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(bandPoint1);
|
||||
bandPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(bandPoint2);
|
||||
bandPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(bandPoint3);
|
||||
bandPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(bandPoint4);
|
||||
bandPoint5 = canvas.chartingSpace.viewport.fitIntoVisibleArea(bandPoint5);
|
||||
bandPoint6 = canvas.chartingSpace.viewport.fitIntoVisibleArea(bandPoint6);
|
||||
|
||||
bandPoint1 = thisObject.fitFunction(bandPoint1);
|
||||
bandPoint2 = thisObject.fitFunction(bandPoint2);
|
||||
@@ -576,9 +578,9 @@
|
||||
}
|
||||
|
||||
if (
|
||||
bandPoint1.x < canvas.chartSpace.viewport.visibleArea.topLeft.x + 50
|
||||
bandPoint1.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50
|
||||
||
|
||||
bandPoint1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x - 50
|
||||
bandPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50
|
||||
) {
|
||||
// we leave this bands without fill.
|
||||
} else {
|
||||
@@ -651,8 +653,8 @@
|
||||
browserCanvasContext.stroke();
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
coordinateSystem.reportValue(band.movingAverage + band.deviation)
|
||||
coordinateSystem.reportValue(band.movingAverage - band.deviation)
|
||||
coordinateSystem.reportYValue(band.movingAverage + band.deviation)
|
||||
coordinateSystem.reportYValue(band.movingAverage - band.deviation)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@ function newAAMastersPlottersBollingerBandsBollingerBandsBollingerBandsPanel ()
|
||||
thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL;
|
||||
thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL;
|
||||
|
||||
thisObject.container.frame.position.x = canvas.chartSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 3;
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height;
|
||||
thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 3;
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height;
|
||||
|
||||
panelTabButton = newPanelTabButton()
|
||||
panelTabButton.parentContainer = thisObject.container
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -115,8 +115,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -301,8 +301,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, plotAreaFrame);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, plotAreaFrame);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, plotAreaFrame);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, plotAreaFrame);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -386,8 +386,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, plotAreaFrame);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, plotAreaFrame);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, plotAreaFrame);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, plotAreaFrame);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -480,7 +480,7 @@
|
||||
plotAreaViewport.initializeY(
|
||||
minValue,
|
||||
maxValue,
|
||||
canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
);
|
||||
|
||||
plotAreaFrame.initializeY(
|
||||
@@ -510,7 +510,7 @@
|
||||
|
||||
/* This next section is to get ready in order to be able to plot dinamically constrained to the viewport */
|
||||
|
||||
let visibleHeight = canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topLeft.y;
|
||||
let visibleHeight = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y;
|
||||
|
||||
let frameCorner1 = {
|
||||
x: 0,
|
||||
@@ -651,7 +651,7 @@
|
||||
pbPoint9 = transformThisPoint(pbPoint9, thisObject.container);
|
||||
pbPoint10 = transformThisPoint(pbPoint10, thisObject.container);
|
||||
|
||||
if (pbPoint1.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || pbPoint2.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (pbPoint1.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || pbPoint2.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -669,37 +669,37 @@
|
||||
|
||||
/* Now we set the real value of y. */
|
||||
|
||||
pbPoint1.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (previousPercentBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint2.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (currentPercentBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint1.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (previousPercentBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint2.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (currentPercentBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
|
||||
pbPoint3.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (0 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint4.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (30 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint5.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (70 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint6.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (100 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint3.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (0 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint4.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (30 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint5.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (70 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint6.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (100 * pbChartHeight / 100 + pbOffset) * plotAreaViewport.scale.y;
|
||||
|
||||
pbPoint7.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (previousMovingAverage + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint8.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (currentMovingAverage + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint7.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (previousMovingAverage + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint8.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (currentMovingAverage + pbOffset) * plotAreaViewport.scale.y;
|
||||
|
||||
pbPoint9.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (previousBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint10.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - (currentBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint9.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (previousBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
pbPoint10.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - (currentBandwidth + pbOffset) * plotAreaViewport.scale.y;
|
||||
|
||||
}
|
||||
|
||||
/* Everything must fit within the visible area */
|
||||
|
||||
pbPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint1);
|
||||
pbPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint2);
|
||||
pbPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint1);
|
||||
pbPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint2);
|
||||
|
||||
pbPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint3);
|
||||
pbPoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint4);
|
||||
pbPoint5 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint5);
|
||||
pbPoint6 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint6);
|
||||
pbPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint3);
|
||||
pbPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint4);
|
||||
pbPoint5 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint5);
|
||||
pbPoint6 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint6);
|
||||
|
||||
pbPoint7 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint7);
|
||||
pbPoint8 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint8);
|
||||
pbPoint7 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint7);
|
||||
pbPoint8 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint8);
|
||||
|
||||
pbPoint9 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint9);
|
||||
pbPoint10 = canvas.chartSpace.viewport.fitIntoVisibleArea(pbPoint10);
|
||||
pbPoint9 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint9);
|
||||
pbPoint10 = canvas.chartingSpace.viewport.fitIntoVisibleArea(pbPoint10);
|
||||
|
||||
|
||||
/* Now the drawing of the lines */
|
||||
|
||||
@@ -37,8 +37,8 @@ function newAAMastersPlottersCandlesVolumesCandlesCandlePanel() {
|
||||
thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL;
|
||||
thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL;
|
||||
|
||||
thisObject.container.frame.position.x = canvas.chartSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 2;
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height;
|
||||
thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 2;
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height;
|
||||
|
||||
panelTabButton = newPanelTabButton()
|
||||
panelTabButton.parentContainer = thisObject.container
|
||||
|
||||
@@ -57,8 +57,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -110,8 +110,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -303,8 +303,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -348,6 +348,13 @@
|
||||
if (candle.open < candle.close) { candle.direction = 'up'; }
|
||||
if (candle.open === candle.close) { candle.direction = 'side'; }
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
if (i === 0) {
|
||||
coordinateSystem.reportXValue(candle.begin)
|
||||
}
|
||||
if (i === dailyFile.length - 1) {
|
||||
coordinateSystem.reportXValue(candle.end)
|
||||
}
|
||||
|
||||
if (
|
||||
(candle.begin >= farLeftDate.valueOf() && candle.end <= farRightDate.valueOf()) &&
|
||||
@@ -393,8 +400,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -428,6 +435,14 @@
|
||||
if (candle.open < candle.close) { candle.direction = 'up'; }
|
||||
if (candle.open === candle.close) { candle.direction = 'side'; }
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
if (i === 0) {
|
||||
coordinateSystem.reportXValue(candle.begin)
|
||||
}
|
||||
if (i === marketFile.length - 1) {
|
||||
coordinateSystem.reportXValue(candle.end)
|
||||
}
|
||||
|
||||
if (
|
||||
(candle.begin >= leftDate.valueOf() && candle.end <= rightDate.valueOf()) &&
|
||||
(candle.begin >= coordinateSystem.min.x && candle.end <= coordinateSystem.max.x)
|
||||
@@ -522,46 +537,48 @@
|
||||
candle.stickPoint3 = transformThisPoint(candle.stickPoint3, thisObject.container);
|
||||
candle.stickPoint4 = transformThisPoint(candle.stickPoint4, thisObject.container);
|
||||
|
||||
let diffA = candle.stickPoint3.y - canvas.chartSpace.viewport.visibleArea.bottomLeft.y
|
||||
if (diffA > 0) {
|
||||
candle.candlePoint1.y = candle.candlePoint1.y - diffA
|
||||
candle.candlePoint2.y = candle.candlePoint2.y - diffA
|
||||
candle.candlePoint3.y = candle.candlePoint3.y - diffA
|
||||
candle.candlePoint4.y = candle.candlePoint4.y - diffA
|
||||
if (canvas.chartingSpace.viewport.zoomTargetLevel < ZOOM_OUT_THRESHOLD_FOR_PACKING_OBJECTS_AT_THE_BOTTOM_OR_TOP_OF_VIEWPORT) {
|
||||
let diffA = candle.stickPoint3.y - canvas.chartingSpace.viewport.visibleArea.bottomLeft.y
|
||||
if (diffA > 0) {
|
||||
candle.candlePoint1.y = candle.candlePoint1.y - diffA
|
||||
candle.candlePoint2.y = candle.candlePoint2.y - diffA
|
||||
candle.candlePoint3.y = candle.candlePoint3.y - diffA
|
||||
candle.candlePoint4.y = candle.candlePoint4.y - diffA
|
||||
|
||||
candle.stickPoint1.y = candle.stickPoint1.y - diffA
|
||||
candle.stickPoint2.y = candle.stickPoint2.y - diffA
|
||||
candle.stickPoint3.y = candle.stickPoint3.y - diffA
|
||||
candle.stickPoint4.y = candle.stickPoint4.y - diffA
|
||||
candle.stickPoint1.y = candle.stickPoint1.y - diffA
|
||||
candle.stickPoint2.y = candle.stickPoint2.y - diffA
|
||||
candle.stickPoint3.y = candle.stickPoint3.y - diffA
|
||||
candle.stickPoint4.y = candle.stickPoint4.y - diffA
|
||||
}
|
||||
|
||||
let diffB = candle.stickPoint1.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
if (diffB < 0) {
|
||||
candle.candlePoint1.y = candle.candlePoint1.y - diffB
|
||||
candle.candlePoint2.y = candle.candlePoint2.y - diffB
|
||||
candle.candlePoint3.y = candle.candlePoint3.y - diffB
|
||||
candle.candlePoint4.y = candle.candlePoint4.y - diffB
|
||||
|
||||
candle.stickPoint1.y = candle.stickPoint1.y - diffB
|
||||
candle.stickPoint2.y = candle.stickPoint2.y - diffB
|
||||
candle.stickPoint3.y = candle.stickPoint3.y - diffB
|
||||
candle.stickPoint4.y = candle.stickPoint4.y - diffB
|
||||
}
|
||||
}
|
||||
|
||||
let diffB = candle.stickPoint1.y - canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
if (diffB < 0) {
|
||||
candle.candlePoint1.y = candle.candlePoint1.y - diffB
|
||||
candle.candlePoint2.y = candle.candlePoint2.y - diffB
|
||||
candle.candlePoint3.y = candle.candlePoint3.y - diffB
|
||||
candle.candlePoint4.y = candle.candlePoint4.y - diffB
|
||||
|
||||
candle.stickPoint1.y = candle.stickPoint1.y - diffB
|
||||
candle.stickPoint2.y = candle.stickPoint2.y - diffB
|
||||
candle.stickPoint3.y = candle.stickPoint3.y - diffB
|
||||
candle.stickPoint4.y = candle.stickPoint4.y - diffB
|
||||
}
|
||||
|
||||
candle.candlePoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.candlePoint1);
|
||||
candle.candlePoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.candlePoint2);
|
||||
candle.candlePoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.candlePoint3);
|
||||
candle.candlePoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.candlePoint4);
|
||||
candle.candlePoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.candlePoint1);
|
||||
candle.candlePoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.candlePoint2);
|
||||
candle.candlePoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.candlePoint3);
|
||||
candle.candlePoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.candlePoint4);
|
||||
|
||||
candle.candlePoint1 = thisObject.fitFunction(candle.candlePoint1);
|
||||
candle.candlePoint2 = thisObject.fitFunction(candle.candlePoint2);
|
||||
candle.candlePoint3 = thisObject.fitFunction(candle.candlePoint3);
|
||||
candle.candlePoint4 = thisObject.fitFunction(candle.candlePoint4);
|
||||
|
||||
candle.stickPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.stickPoint1);
|
||||
candle.stickPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.stickPoint2);
|
||||
candle.stickPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.stickPoint3);
|
||||
candle.stickPoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(candle.stickPoint4);
|
||||
candle.stickPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.stickPoint1);
|
||||
candle.stickPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.stickPoint2);
|
||||
candle.stickPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.stickPoint3);
|
||||
candle.stickPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(candle.stickPoint4);
|
||||
|
||||
candle.stickPoint1 = thisObject.fitFunction(candle.stickPoint1);
|
||||
candle.stickPoint2 = thisObject.fitFunction(candle.stickPoint2);
|
||||
@@ -578,13 +595,13 @@
|
||||
|
||||
candle = candles[i];
|
||||
|
||||
if (candle.candlePoint2.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || candle.candlePoint1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (candle.candlePoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || candle.candlePoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue
|
||||
}
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
coordinateSystem.reportValue(candle.max)
|
||||
coordinateSystem.reportValue(candle.min)
|
||||
coordinateSystem.reportYValue(candle.max)
|
||||
coordinateSystem.reportYValue(candle.min)
|
||||
|
||||
|
||||
//if (onScreenCandles.length < 15000) {
|
||||
|
||||
@@ -37,8 +37,8 @@ function newAAMastersPlottersCandlesVolumesVolumesVolumePanel() {
|
||||
thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL;
|
||||
thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL;
|
||||
|
||||
thisObject.container.frame.position.x = canvas.chartSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width;
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height;
|
||||
thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width;
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.bottomLeft.y - thisObject.container.frame.height;
|
||||
|
||||
panelTabButton = newPanelTabButton()
|
||||
panelTabButton.parentContainer = thisObject.container
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -118,8 +118,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -298,8 +298,8 @@
|
||||
|
||||
if (fileCursor.files.size === 0) { return; } // We need to wait until there are files in the cursor
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -382,8 +382,8 @@
|
||||
|
||||
if (marketFile === undefined) { return; } // Initialization not complete yet.
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -438,7 +438,7 @@
|
||||
|
||||
/* Now we calculate and plot the volumes */
|
||||
|
||||
let visibleHeight = canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topLeft.y;
|
||||
let visibleHeight = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y;
|
||||
|
||||
let frameCorner1 = {
|
||||
x: 0,
|
||||
@@ -506,7 +506,7 @@
|
||||
volumePointA1.x = volumePointA1.x - baseIncrement;
|
||||
volumePointA4.x = volumePointA4.x + baseIncrement;
|
||||
|
||||
if (volumePointA4.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || volumePointA1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (volumePointA4.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || volumePointA1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
|
||||
if (calculateBuys(coordinateSystem, thisObject.container.frame.height) === false) { continue; } // We try to see if it fits in the visible area.
|
||||
|
||||
let diffA = volumePointA1.y - canvas.chartSpace.viewport.visibleArea.bottomLeft.y
|
||||
let diffA = volumePointA1.y - canvas.chartingSpace.viewport.visibleArea.bottomLeft.y
|
||||
if (diffA > 0) {
|
||||
volumePointA1.y = volumePointA1.y - diffA
|
||||
volumePointA2.y = volumePointA2.y - diffA
|
||||
@@ -565,7 +565,7 @@
|
||||
|
||||
calculateSells(coordinateSystem, thisObject.container.frame.height); // We try to see if it fits in the visible area.
|
||||
|
||||
let diffB = volumePointB1.y - canvas.chartSpace.viewport.visibleArea.topLeft.y
|
||||
let diffB = volumePointB1.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y
|
||||
if (diffB < 0) {
|
||||
volumePointB1.y = volumePointB1.y - diffB
|
||||
volumePointB2.y = volumePointB2.y - diffB
|
||||
@@ -593,15 +593,15 @@
|
||||
|
||||
/* Everything must fit within the visible area */
|
||||
|
||||
volumePointA1 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointA1);
|
||||
volumePointA2 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointA2);
|
||||
volumePointA3 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointA3);
|
||||
volumePointA4 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointA4);
|
||||
volumePointA1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointA1);
|
||||
volumePointA2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointA2);
|
||||
volumePointA3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointA3);
|
||||
volumePointA4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointA4);
|
||||
|
||||
volumePointB1 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointB1);
|
||||
volumePointB2 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointB2);
|
||||
volumePointB3 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointB3);
|
||||
volumePointB4 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumePointB4);
|
||||
volumePointB1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointB1);
|
||||
volumePointB2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointB2);
|
||||
volumePointB3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointB3);
|
||||
volumePointB4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumePointB4);
|
||||
|
||||
volumePointA1 = thisObject.fitFunction(volumePointA1);
|
||||
volumePointA2 = thisObject.fitFunction(volumePointA2);
|
||||
@@ -700,9 +700,9 @@
|
||||
|
||||
}
|
||||
/* Contributing to Auto-Scale*/
|
||||
coordinateSystem.reportValue(volume.amountBuy * 5)
|
||||
coordinateSystem.reportValue(volume.amountSell * 5)
|
||||
coordinateSystem.reportValue(0)
|
||||
coordinateSystem.reportYValue(volume.amountBuy * 5)
|
||||
coordinateSystem.reportYValue(volume.amountSell * 5)
|
||||
coordinateSystem.reportYValue(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -120,8 +120,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -328,8 +328,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -434,8 +434,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -572,14 +572,14 @@
|
||||
stairsPoint3 = transformThisPoint(stairsPoint3, thisObject.container);
|
||||
stairsPoint4 = transformThisPoint(stairsPoint4, thisObject.container);
|
||||
|
||||
if (stairsPoint2.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || stairsPoint1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (stairsPoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || stairsPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue;
|
||||
}
|
||||
|
||||
stairsPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(stairsPoint1);
|
||||
stairsPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(stairsPoint2);
|
||||
stairsPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(stairsPoint3);
|
||||
stairsPoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(stairsPoint4);
|
||||
stairsPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(stairsPoint1);
|
||||
stairsPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(stairsPoint2);
|
||||
stairsPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(stairsPoint3);
|
||||
stairsPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(stairsPoint4);
|
||||
|
||||
stairsPoint1 = thisObject.fitFunction(stairsPoint1);
|
||||
stairsPoint2 = thisObject.fitFunction(stairsPoint2);
|
||||
@@ -587,10 +587,10 @@
|
||||
stairsPoint4 = thisObject.fitFunction(stairsPoint4);
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
coordinateSystem.reportValue(stairs.firstMin)
|
||||
coordinateSystem.reportValue(stairs.firstMax)
|
||||
coordinateSystem.reportValue(stairs.lastMin)
|
||||
coordinateSystem.reportValue(stairs.lastMax)
|
||||
coordinateSystem.reportYValue(stairs.firstMin)
|
||||
coordinateSystem.reportYValue(stairs.firstMax)
|
||||
coordinateSystem.reportYValue(stairs.lastMin)
|
||||
coordinateSystem.reportYValue(stairs.lastMax)
|
||||
|
||||
browserCanvasContext.beginPath();
|
||||
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -118,8 +118,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -324,8 +324,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -418,8 +418,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -480,7 +480,7 @@
|
||||
|
||||
let opacity = '0.25';
|
||||
|
||||
let visibleHeight = canvas.chartSpace.viewport.visibleArea.bottomRight.y - canvas.chartSpace.viewport.visibleArea.topLeft.y;
|
||||
let visibleHeight = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - canvas.chartingSpace.viewport.visibleArea.topLeft.y;
|
||||
|
||||
let frameCorner1 = {
|
||||
x: 0,
|
||||
@@ -516,8 +516,8 @@
|
||||
function calculateBuys(plot, height) {
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
coordinateSystem.reportValue(stairs.firstAmount * 2)
|
||||
coordinateSystem.reportValue(stairs.lastAmount * 2)
|
||||
coordinateSystem.reportYValue(stairs.firstAmount * 2)
|
||||
coordinateSystem.reportYValue(stairs.lastAmount * 2)
|
||||
|
||||
volumeBarPointA1 = {
|
||||
x: stairs.begin + timeFrame / 2,
|
||||
@@ -550,7 +550,7 @@
|
||||
volumeBarPointA3 = transformThisPoint(volumeBarPointA3, thisObject.container);
|
||||
volumeBarPointA4 = transformThisPoint(volumeBarPointA4, thisObject.container);
|
||||
|
||||
if (volumeBarPointA4.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || volumeBarPointA1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (volumeBarPointA4.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || volumeBarPointA1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -559,16 +559,16 @@
|
||||
|
||||
if (calculateBuys(coordinateSystem, thisObject.container.frame.height) === false) { continue; } // We try to see if it fits in the visible area.
|
||||
|
||||
if (volumeBarPointA1.y > canvas.chartSpace.viewport.visibleArea.bottomLeft.y && frameHeightInViewPort > visibleHeight * 2 / 3) {
|
||||
if (volumeBarPointA1.y > canvas.chartingSpace.viewport.visibleArea.bottomLeft.y && frameHeightInViewPort > visibleHeight * 2 / 3) {
|
||||
|
||||
if (calculateBuys(coordinateSystem, visibleHeight) === false) { continue; } // We snap t to the view port.
|
||||
|
||||
/* Now we set the real value of y. */
|
||||
|
||||
volumeBarPointA1.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y;
|
||||
volumeBarPointA2.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - stairs.firstAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointA3.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y - stairs.lastAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointA4.y = canvas.chartSpace.viewport.visibleArea.bottomRight.y;
|
||||
volumeBarPointA1.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y;
|
||||
volumeBarPointA2.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - stairs.firstAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointA3.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y - stairs.lastAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointA4.y = canvas.chartingSpace.viewport.visibleArea.bottomRight.y;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -583,8 +583,8 @@
|
||||
function calculateSells(plot, height) {
|
||||
|
||||
/* Contributing to Auto-Scale*/
|
||||
coordinateSystem.reportValue(stairs.firstAmount * 2)
|
||||
coordinateSystem.reportValue(stairs.lastAmount * 2)
|
||||
coordinateSystem.reportYValue(stairs.firstAmount * 2)
|
||||
coordinateSystem.reportYValue(stairs.lastAmount * 2)
|
||||
|
||||
volumeBarPointB1 = {
|
||||
x: stairs.begin + timeFrame / 2,
|
||||
@@ -620,16 +620,16 @@
|
||||
|
||||
calculateSells(coordinateSystem, thisObject.container.frame.height); // We try to see if it fits in the visible area.
|
||||
|
||||
if (volumeBarPointB1.y < canvas.chartSpace.viewport.visibleArea.topLeft.y && frameHeightInViewPort > visibleHeight * 2 / 3) {
|
||||
if (volumeBarPointB1.y < canvas.chartingSpace.viewport.visibleArea.topLeft.y && frameHeightInViewPort > visibleHeight * 2 / 3) {
|
||||
|
||||
calculateSells(coordinateSystem, visibleHeight); // We snap it to the view port.
|
||||
|
||||
/* Now we set the real value of y. */
|
||||
|
||||
volumeBarPointB1.y = canvas.chartSpace.viewport.visibleArea.topLeft.y;
|
||||
volumeBarPointB2.y = canvas.chartSpace.viewport.visibleArea.topLeft.y + stairs.firstAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointB3.y = canvas.chartSpace.viewport.visibleArea.topLeft.y + stairs.lastAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointB4.y = canvas.chartSpace.viewport.visibleArea.topLeft.y;
|
||||
volumeBarPointB1.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y;
|
||||
volumeBarPointB2.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y + stairs.firstAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointB3.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y + stairs.lastAmount * 2 * coordinateSystem.scale.y;
|
||||
volumeBarPointB4.y = canvas.chartingSpace.viewport.visibleArea.topLeft.y;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -638,10 +638,10 @@
|
||||
|
||||
if (stairs.type === 'buy') {
|
||||
|
||||
volumeBarPointA1 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointA1);
|
||||
volumeBarPointA2 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointA2);
|
||||
volumeBarPointA3 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointA3);
|
||||
volumeBarPointA4 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointA4);
|
||||
volumeBarPointA1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointA1);
|
||||
volumeBarPointA2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointA2);
|
||||
volumeBarPointA3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointA3);
|
||||
volumeBarPointA4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointA4);
|
||||
|
||||
volumeBarPointA1 = thisObject.fitFunction(volumeBarPointA1);
|
||||
volumeBarPointA2 = thisObject.fitFunction(volumeBarPointA2);
|
||||
@@ -650,10 +650,10 @@
|
||||
|
||||
} else {
|
||||
|
||||
volumeBarPointB1 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointB1);
|
||||
volumeBarPointB2 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointB2);
|
||||
volumeBarPointB3 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointB3);
|
||||
volumeBarPointB4 = canvas.chartSpace.viewport.fitIntoVisibleArea(volumeBarPointB4);
|
||||
volumeBarPointB1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointB1);
|
||||
volumeBarPointB2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointB2);
|
||||
volumeBarPointB3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointB3);
|
||||
volumeBarPointB4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(volumeBarPointB4);
|
||||
|
||||
volumeBarPointB1 = thisObject.fitFunction(volumeBarPointB1);
|
||||
volumeBarPointB2 = thisObject.fitFunction(volumeBarPointB2);
|
||||
|
||||
@@ -68,8 +68,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -117,8 +117,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -308,8 +308,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -390,8 +390,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -484,14 +484,14 @@
|
||||
|
||||
if (currentRecord === undefined) { return; }
|
||||
if (currentRecord.conditionsNames === undefined) { return; }
|
||||
if (canvas.designerSpace.workspace === undefined) { return; }
|
||||
if (canvas.designSpace.workspace === undefined) { return; }
|
||||
|
||||
/* We will get now the designer trading system */
|
||||
let designerTradingSystem
|
||||
let fileTradingSystem = currentRecord.conditionsNames;
|
||||
|
||||
for (let i = 0; i < canvas.designerSpace.workspace.workspaceNode.rootNodes.length; i++) {
|
||||
let rootNode = canvas.designerSpace.workspace.workspaceNode.rootNodes[i]
|
||||
for (let i = 0; i < canvas.designSpace.workspace.workspaceNode.rootNodes.length; i++) {
|
||||
let rootNode = canvas.designSpace.workspace.workspaceNode.rootNodes[i]
|
||||
if (rootNode.type === 'Definition') {
|
||||
if (rootNode.tradingSystem.id === fileTradingSystem.id) {
|
||||
designerTradingSystem = rootNode.tradingSystem
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
fileSequence.eventHandler.stopListening(filesUpdatedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
recalculate();
|
||||
|
||||
filesUpdatedEventSubscriptionId = fileSequence.eventHandler.listenToEvent("Files Updated", onFilesUpdated); // Only the first sequence is supported right now.
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver)
|
||||
|
||||
/* Ready for when dimmension changes. */
|
||||
@@ -370,9 +370,9 @@
|
||||
point = coordinateSystem.transformThisPoint(point);
|
||||
point = transformThisPoint(point, thisObject.container);
|
||||
|
||||
if (point.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || point.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) { continue; }
|
||||
if (point.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) { continue; }
|
||||
|
||||
point = canvas.chartSpace.viewport.fitIntoVisibleArea(point);
|
||||
point = canvas.chartingSpace.viewport.fitIntoVisibleArea(point);
|
||||
point = thisObject.fitFunction(point);
|
||||
|
||||
let isCurrentRecord = false;
|
||||
@@ -410,17 +410,17 @@
|
||||
|
||||
point1 = coordinateSystem.transformThisPoint(point1);
|
||||
point1 = transformThisPoint(point1, thisObject.container);
|
||||
point1 = canvas.chartSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = thisObject.fitFunction(point1);
|
||||
|
||||
point2 = coordinateSystem.transformThisPoint(point2);
|
||||
point2 = transformThisPoint(point2, thisObject.container);
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
|
||||
point3 = coordinateSystem.transformThisPoint(point3);
|
||||
point3 = transformThisPoint(point3, thisObject.container);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
let diff = point2.x - point3.x;
|
||||
@@ -429,8 +429,8 @@
|
||||
|
||||
currentRecord.timeFrame = diff
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
@@ -485,17 +485,17 @@
|
||||
|
||||
point1 = coordinateSystem.transformThisPoint(point1);
|
||||
point1 = transformThisPoint(point1, thisObject.container);
|
||||
point1 = canvas.chartSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = thisObject.fitFunction(point1);
|
||||
|
||||
point2 = coordinateSystem.transformThisPoint(point2);
|
||||
point2 = transformThisPoint(point2, thisObject.container);
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
|
||||
point3 = coordinateSystem.transformThisPoint(point3);
|
||||
point3 = transformThisPoint(point3, thisObject.container);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
let diff = point2.x - point3.x;
|
||||
@@ -504,8 +504,8 @@
|
||||
|
||||
currentRecord.timeFrame = diff
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
@@ -558,17 +558,17 @@
|
||||
|
||||
point1 = coordinateSystem.transformThisPoint(point1);
|
||||
point1 = transformThisPoint(point1, thisObject.container);
|
||||
point1 = canvas.chartSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = thisObject.fitFunction(point1);
|
||||
|
||||
point2 = coordinateSystem.transformThisPoint(point2);
|
||||
point2 = transformThisPoint(point2, thisObject.container);
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
|
||||
point3 = coordinateSystem.transformThisPoint(point3);
|
||||
point3 = transformThisPoint(point3, thisObject.container);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
let diff = point2.x - point3.x;
|
||||
@@ -577,8 +577,8 @@
|
||||
|
||||
currentRecord.timeFrame = diff
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
@@ -632,17 +632,17 @@
|
||||
|
||||
point1 = coordinateSystem.transformThisPoint(point1);
|
||||
point1 = transformThisPoint(point1, thisObject.container);
|
||||
point1 = canvas.chartSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = thisObject.fitFunction(point1);
|
||||
|
||||
point2 = coordinateSystem.transformThisPoint(point2);
|
||||
point2 = transformThisPoint(point2, thisObject.container);
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
|
||||
point3 = coordinateSystem.transformThisPoint(point3);
|
||||
point3 = transformThisPoint(point3, thisObject.container);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
let diff = point2.x - point3.x;
|
||||
@@ -651,8 +651,8 @@
|
||||
|
||||
currentRecord.timeFrame = diff
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
point3 = thisObject.fitFunction(point3);
|
||||
|
||||
@@ -704,7 +704,7 @@
|
||||
browserCanvasContext.arc(point.x, point.y, currentRadius, 0, Math.PI * 2, true);
|
||||
browserCanvasContext.closePath();
|
||||
|
||||
if (point.x < canvas.chartSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
browserCanvasContext.fill();
|
||||
}
|
||||
|
||||
@@ -724,7 +724,7 @@
|
||||
browserCanvasContext.arc(point.x, point.y, radius, 0, Math.PI * 2, true);
|
||||
browserCanvasContext.closePath();
|
||||
|
||||
if (point.x < canvas.chartSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
browserCanvasContext.fill();
|
||||
}
|
||||
|
||||
@@ -755,12 +755,12 @@
|
||||
|
||||
point1 = coordinateSystem.transformThisPoint(point1);
|
||||
point1 = transformThisPoint(point1, thisObject.container);
|
||||
point1 = canvas.chartSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point1);
|
||||
point1 = thisObject.fitFunction(point1);
|
||||
|
||||
point2 = coordinateSystem.transformThisPoint(point2);
|
||||
point2 = transformThisPoint(point2, thisObject.container);
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point2 = thisObject.fitFunction(point2);
|
||||
|
||||
browserCanvasContext.beginPath();
|
||||
|
||||
@@ -40,8 +40,8 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL;
|
||||
thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 2.5;
|
||||
|
||||
thisObject.container.frame.position.x = canvas.chartSpace.viewport.visibleArea.topLeft.x + thisObject.container.frame.width * 4;
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.topRight.y;
|
||||
thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topLeft.x + thisObject.container.frame.width * 4;
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topRight.y;
|
||||
|
||||
panelTabButton = newPanelTabButton()
|
||||
panelTabButton.parentContainer = thisObject.container
|
||||
@@ -150,8 +150,8 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
point2.y = point2.y - diff;
|
||||
point3.y = point3.y - diff;
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
|
||||
browserCanvasContext.beginPath();
|
||||
|
||||
@@ -210,8 +210,8 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
point2.y = point2.y + diff;
|
||||
point3.y = point3.y + diff;
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
|
||||
browserCanvasContext.beginPath();
|
||||
|
||||
@@ -268,8 +268,8 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
point2.y = point2.y - diff;
|
||||
point3.y = point3.y - diff;
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
|
||||
browserCanvasContext.beginPath();
|
||||
|
||||
@@ -326,8 +326,8 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
point2.y = point2.y + diff;
|
||||
point3.y = point3.y + diff;
|
||||
|
||||
point2 = canvas.chartSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartSpace.viewport.fitIntoVisibleArea(point3);
|
||||
point2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point2);
|
||||
point3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(point3);
|
||||
|
||||
browserCanvasContext.beginPath();
|
||||
|
||||
@@ -366,7 +366,7 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
browserCanvasContext.arc(point.x, point.y, currentRadius, 0, Math.PI * 2, true);
|
||||
browserCanvasContext.closePath();
|
||||
|
||||
if (point.x < canvas.chartSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
browserCanvasContext.fill();
|
||||
}
|
||||
browserCanvasContext.setLineDash([0, 0])
|
||||
@@ -384,7 +384,7 @@ function newAAMastersPlottersTradingSimulationSimulationExecutionSimulationExecu
|
||||
browserCanvasContext.arc(point.x, point.y, radius, 0, Math.PI * 2, true);
|
||||
browserCanvasContext.closePath();
|
||||
|
||||
if (point.x < canvas.chartSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
if (point.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 50 || point.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 50) {/*we leave this history without fill. */ } else {
|
||||
browserCanvasContext.fill();
|
||||
}
|
||||
browserCanvasContext.setLineDash([0, 0])
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -128,8 +128,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -146,7 +146,7 @@
|
||||
})
|
||||
|
||||
for (let i = 1; i < 15; i++) {
|
||||
let strategyImage = canvas.designerSpace.iconByUiObjectType.get('Strategy');
|
||||
let strategyImage = canvas.designSpace.iconByUiObjectType.get('Strategy');
|
||||
strategyImages.push(strategyImage);
|
||||
}
|
||||
|
||||
@@ -344,8 +344,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -427,8 +427,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -521,17 +521,17 @@
|
||||
recordPoint3 = transformThisPoint(recordPoint3, thisObject.container);
|
||||
recordPoint4 = transformThisPoint(recordPoint4, thisObject.container);
|
||||
|
||||
if (recordPoint2.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || recordPoint1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (recordPoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || recordPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue;
|
||||
}
|
||||
|
||||
recordPoint3.y = recordPoint1.y + 2000;
|
||||
recordPoint4.y = recordPoint1.y + 2000;
|
||||
|
||||
recordPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint1);
|
||||
recordPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint2);
|
||||
recordPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint3);
|
||||
recordPoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint4);
|
||||
recordPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint1);
|
||||
recordPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint2);
|
||||
recordPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint3);
|
||||
recordPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint4);
|
||||
|
||||
recordPoint1 = thisObject.fitFunction(recordPoint1, undefined, 30);
|
||||
recordPoint2 = thisObject.fitFunction(recordPoint2, undefined, 30);
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -126,8 +126,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -337,8 +337,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -414,8 +414,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -504,13 +504,13 @@
|
||||
recordPoint2 = transformThisPoint(recordPoint2, thisObject.container);
|
||||
recordPoint3 = transformThisPoint(recordPoint3, thisObject.container);
|
||||
|
||||
if (recordPoint2.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || recordPoint1.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (recordPoint2.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || recordPoint1.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue;
|
||||
}
|
||||
|
||||
recordPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint1);
|
||||
recordPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint2);
|
||||
recordPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint3);
|
||||
recordPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint1);
|
||||
recordPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint2);
|
||||
recordPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint3);
|
||||
|
||||
recordPoint1 = thisObject.fitFunction(recordPoint1);
|
||||
recordPoint2 = thisObject.fitFunction(recordPoint2);
|
||||
@@ -580,17 +580,17 @@
|
||||
point.y = recordPoint3.y - 100
|
||||
}
|
||||
|
||||
point = canvas.chartSpace.viewport.fitIntoVisibleArea(point);
|
||||
point = canvas.chartingSpace.viewport.fitIntoVisibleArea(point);
|
||||
point = thisObject.fitFunction(point, undefined, 50);
|
||||
|
||||
if (
|
||||
recordPoint3.x < canvas.chartSpace.viewport.visibleArea.topLeft.x + 250
|
||||
recordPoint3.x < canvas.chartingSpace.viewport.visibleArea.topLeft.x + 250
|
||||
||
|
||||
recordPoint3.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x - 250
|
||||
recordPoint3.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x - 250
|
||||
||
|
||||
recordPoint3.y > canvas.chartSpace.viewport.visibleArea.bottomRight.y - 150
|
||||
recordPoint3.y > canvas.chartingSpace.viewport.visibleArea.bottomRight.y - 150
|
||||
||
|
||||
recordPoint3.y < canvas.chartSpace.viewport.visibleArea.topLeft.y + 150
|
||||
recordPoint3.y < canvas.chartingSpace.viewport.visibleArea.topLeft.y + 150
|
||||
) {
|
||||
// we do not write any text
|
||||
} else {
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
|
||||
/* Stop listening to the necesary events. */
|
||||
thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId)
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(zoomChangedEventSubscriptionId);
|
||||
canvas.chartingSpace.viewport.eventHandler.stopListening(offsetChangedEventSubscriptionId);
|
||||
canvas.eventHandler.stopListening(dragFinishedEventSubscriptionId);
|
||||
thisObject.container.eventHandler.stopListening(dimmensionsChangedEventSubscriptionId)
|
||||
marketFiles.eventHandler.stopListening(marketFilesUpdatedEventSubscriptionId);
|
||||
@@ -130,8 +130,8 @@
|
||||
|
||||
/* Listen to the necesary events. */
|
||||
|
||||
zoomChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
zoomChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Zoom Changed", onViewportZoomChanged);
|
||||
offsetChangedEventSubscriptionId = canvas.chartingSpace.viewport.eventHandler.listenToEvent("Position Changed", onViewportPositionChanged);
|
||||
dragFinishedEventSubscriptionId = canvas.eventHandler.listenToEvent("Drag Finished", onDragFinished);
|
||||
marketFilesUpdatedEventSubscriptionId = marketFiles.eventHandler.listenToEvent("Files Updated", onMarketFilesUpdated);
|
||||
dailyFilesUpdatedEventSubscriptionId = dailyFiles.eventHandler.listenToEvent("Files Updated", onDailyFilesUpdated);
|
||||
@@ -149,9 +149,9 @@
|
||||
|
||||
/* Loading a few icons */
|
||||
|
||||
imageStopLossPhase = canvas.designerSpace.iconByUiObjectType.get('Stop');
|
||||
imageTakeProfitPhase = canvas.designerSpace.iconByUiObjectType.get('Phase');
|
||||
imageRecord = canvas.designerSpace.iconByUiObjectType.get('Trading System');
|
||||
imageStopLossPhase = canvas.designSpace.iconByUiObjectType.get('Stop');
|
||||
imageTakeProfitPhase = canvas.designSpace.iconByUiObjectType.get('Phase');
|
||||
imageRecord = canvas.designSpace.iconByUiObjectType.get('Trading System');
|
||||
|
||||
callBackFunction();
|
||||
|
||||
@@ -327,8 +327,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -428,8 +428,8 @@
|
||||
|
||||
let daysOnSides = getSideDays(timeFrame);
|
||||
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
let leftDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topLeft, thisObject.container, coordinateSystem);
|
||||
let rightDate = getDateFromPointAtBrowserCanvas(canvas.chartingSpace.viewport.visibleArea.topRight, thisObject.container, coordinateSystem);
|
||||
|
||||
let dateDiff = rightDate.valueOf() - leftDate.valueOf();
|
||||
|
||||
@@ -627,16 +627,16 @@
|
||||
recordPoint9 = transformThisPoint(recordPoint9, thisObject.container);
|
||||
recordPoint10 = transformThisPoint(recordPoint10, thisObject.container);
|
||||
|
||||
recordPoint1 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint1);
|
||||
recordPoint2 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint2);
|
||||
recordPoint3 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint3);
|
||||
recordPoint4 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint4);
|
||||
recordPoint5 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint5);
|
||||
recordPoint6 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint6);
|
||||
recordPoint7 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint7);
|
||||
recordPoint8 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint8);
|
||||
recordPoint9 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint9);
|
||||
recordPoint10 = canvas.chartSpace.viewport.fitIntoVisibleArea(recordPoint10);
|
||||
recordPoint1 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint1);
|
||||
recordPoint2 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint2);
|
||||
recordPoint3 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint3);
|
||||
recordPoint4 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint4);
|
||||
recordPoint5 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint5);
|
||||
recordPoint6 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint6);
|
||||
recordPoint7 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint7);
|
||||
recordPoint8 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint8);
|
||||
recordPoint9 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint9);
|
||||
recordPoint10 = canvas.chartingSpace.viewport.fitIntoVisibleArea(recordPoint10);
|
||||
|
||||
recordPoint1 = thisObject.fitFunction(recordPoint1);
|
||||
recordPoint2 = thisObject.fitFunction(recordPoint2);
|
||||
@@ -671,7 +671,7 @@
|
||||
y: 0
|
||||
}
|
||||
|
||||
imagePosition = canvas.chartSpace.viewport.fitIntoVisibleArea(imagePosition)
|
||||
imagePosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(imagePosition)
|
||||
imagePosition = thisObject.fitFunction(imagePosition, undefined, 0, 0, imageSize)
|
||||
|
||||
if (imageRecord.canDrawIcon === true) {
|
||||
@@ -683,7 +683,7 @@
|
||||
browserCanvasContext.restore();
|
||||
}
|
||||
|
||||
if (recordPoint5.x < canvas.chartSpace.viewport.visibleArea.bottomLeft.x || recordPoint5.x > canvas.chartSpace.viewport.visibleArea.bottomRight.x) {
|
||||
if (recordPoint5.x < canvas.chartingSpace.viewport.visibleArea.bottomLeft.x || recordPoint5.x > canvas.chartingSpace.viewport.visibleArea.bottomRight.x) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -748,14 +748,14 @@
|
||||
y: recordPoint6.y - imageSize * 1.25 + yOffset
|
||||
}
|
||||
|
||||
imagePosition = canvas.chartSpace.viewport.fitIntoVisibleArea(imagePosition)
|
||||
imagePosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(imagePosition)
|
||||
imagePosition = thisObject.fitFunction(imagePosition, undefined, 0, 0, imageSize)
|
||||
|
||||
let labelPosition = {
|
||||
x: recordPoint6.x - imageSize / 2 - 3,
|
||||
y: recordPoint6.y - imageSize * 1.5 + yOffset * 2
|
||||
}
|
||||
labelPosition = canvas.chartSpace.viewport.fitIntoVisibleArea(labelPosition)
|
||||
labelPosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(labelPosition)
|
||||
labelPosition = thisObject.fitFunction(labelPosition, undefined, 30)
|
||||
|
||||
if (imageStopLossPhase.canDrawIcon === true && stopLossPhase > -1) {
|
||||
@@ -789,14 +789,14 @@
|
||||
x: recordPoint10.x - imageSize * 2 / 3,
|
||||
y: recordPoint10.y + imageSize / 4 - yOffset
|
||||
}
|
||||
imagePosition = canvas.chartSpace.viewport.fitIntoVisibleArea(imagePosition)
|
||||
imagePosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(imagePosition)
|
||||
imagePosition = thisObject.fitFunction(imagePosition, undefined, 0, 0, imageSize)
|
||||
|
||||
labelPosition = {
|
||||
x: recordPoint10.x - imageSize * 1 / 3,
|
||||
y: recordPoint10.y + imageSize * 1.9 - yOffset * 2
|
||||
}
|
||||
labelPosition = canvas.chartSpace.viewport.fitIntoVisibleArea(labelPosition)
|
||||
labelPosition = canvas.chartingSpace.viewport.fitIntoVisibleArea(labelPosition)
|
||||
labelPosition = thisObject.fitFunction(labelPosition, undefined, 30)
|
||||
|
||||
if (imageTakeProfitPhase.canDrawIcon === true && takeProfitPhase > -1) {
|
||||
|
||||
@@ -31,8 +31,8 @@ function newAAMastersPlottersTradingSimulationTradingSimulationTradingSimulation
|
||||
thisObject.container.frame.width = UI_PANEL.WIDTH.NORMAL * 1;
|
||||
thisObject.container.frame.height = UI_PANEL.HEIGHT.NORMAL * 2.5;
|
||||
|
||||
thisObject.container.frame.position.x = canvas.chartSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 1;
|
||||
thisObject.container.frame.position.y = canvas.chartSpace.viewport.visibleArea.topRight.y;
|
||||
thisObject.container.frame.position.x = canvas.chartingSpace.viewport.visibleArea.topRight.x - thisObject.container.frame.width * 1;
|
||||
thisObject.container.frame.position.y = canvas.chartingSpace.viewport.visibleArea.topRight.y;
|
||||
|
||||
panelTabButton = newPanelTabButton()
|
||||
panelTabButton.parentContainer = thisObject.container
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"type":"Workspace","name":"My Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","singleMarketData":[{"type":"Single Market Data","name":"Poloniex BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"55e735a5-60c9-4e2d-a582-a6c6eddf3502","savedPayload":{"position":{"x":21874.292166697058,"y":29963.544080527405},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candles","id":"36ae2d5d-6734-4526-b2f8-31c89a0c4fc1"}}},{"type":"Data Product","name":"Volumes","id":"ffaf5a8e-12d6-4040-922d-57845eb3377c","savedPayload":{"position":{"x":21770.838804369636,"y":30023.272907115715},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"b2d5ba69-67ac-490f-9e74-28239b35a92e"}}},{"type":"Data Product","name":"Candle-Stairs","id":"e1c46e1f-09d1-46a2-b738-e761b4e04cd9","savedPayload":{"position":{"x":21658.585329183163,"y":30064.129830776532},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candle-Stairs","id":"642474e9-da61-4168-97dc-7f7869bebc02"}}},{"type":"Data Product","name":"Volume-Stairs","id":"eefaf182-ffe4-457e-a7fa-f43dfabdc086","savedPayload":{"position":{"x":21540.942506178184,"y":30084.87343455902},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volume-Stairs","id":"846e9572-c4d6-4c7e-942e-c82402c5ecea"}}},{"type":"Data Product","name":"Bollinger Bands","id":"3576cfd0-1774-4094-b8a0-66e182fc4c41","savedPayload":{"position":{"x":21421.484853001562,"y":30084.87343455902},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4dfde44c-0bbf-4204-91de-ce99ecba4cf2","savedPayload":{"position":{"x":21303.842029996584,"y":30064.129830776532},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"6986bcb1-119c-48c9-a00b-d046e9e07951","savedPayload":{"position":{"x":21191.588554810114,"y":30023.272907115715},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"85098ab8-a125-49f1-b24d-416c2090c7a0","savedPayload":{"position":{"x":21088.13519248269,"y":29963.544080527405},"targetPosition":{"x":21481.213679589873,"y":29402.169822672073},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}}],"id":"49a747b4-2eb7-41d6-b0e2-493f43ceed44","savedPayload":{"position":{"x":21481.213679589873,"y":29402.169822672073},"targetPosition":{"x":21481.213679589873,"y":28716.858393897463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"d4098b73-7e25-434e-8fd9-342393cbb400"}}},{"type":"Single Market Data","name":"Kraken ETH/BTC","dataProducts":[{"type":"Data Product","name":"Candles","id":"fce50098-d674-4006-94ad-cce46f3d59a4","savedPayload":{"position":{"x":21048.079251220588,"y":30033.138046837903},"targetPosition":{"x":21178.00071348869,"y":29346.48660572473},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed"Line truncated
|
||||
{"type":"Workspace","name":"My Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","singleMarketData":[{"type":"Single Market Data","name":"Poloniex BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"55e735a5-60c9-4e2d-a582-a6c6eddf3502","savedPayload":{"position":{"x":21874.494367674444,"y":29964.185380096318},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candles","id":"36ae2d5d-6734-4526-b2f8-31c89a0c4fc1"}}},{"type":"Data Product","name":"Volumes","id":"ffaf5a8e-12d6-4040-922d-57845eb3377c","savedPayload":{"position":{"x":21770.987788568025,"y":30023.944931406306},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"b2d5ba69-67ac-490f-9e74-28239b35a92e"}}},{"type":"Data Product","name":"Candle-Stairs","id":"e1c46e1f-09d1-46a2-b738-e761b4e04cd9","savedPayload":{"position":{"x":21658.67656979308,"y":30064.822872014545},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candle-Stairs","id":"642474e9-da61-4168-97dc-7f7869bebc02"}}},{"type":"Data Product","name":"Volume-Stairs","id":"eefaf182-ffe4-457e-a7fa-f43dfabdc086","savedPayload":{"position":{"x":21540.97323089986,"y":30085.577146380892},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volume-Stairs","id":"846e9572-c4d6-4c7e-942e-c82402c5ecea"}}},{"type":"Data Product","name":"Bollinger Bands","id":"3576cfd0-1774-4094-b8a0-66e182fc4c41","savedPayload":{"position":{"x":21421.454128279885,"y":30085.577146380892},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4dfde44c-0bbf-4204-91de-ce99ecba4cf2","savedPayload":{"position":{"x":21303.750789386668,"y":30064.822872014545},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"6986bcb1-119c-48c9-a00b-d046e9e07951","savedPayload":{"position":{"x":21191.43957061172,"y":30023.944931406306},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"85098ab8-a125-49f1-b24d-416c2090c7a0","savedPayload":{"position":{"x":21087.932991505302,"y":29964.185380096318},"targetPosition":{"x":21481.213679589873,"y":29402.52234931817},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}}],"id":"49a747b4-2eb7-41d6-b0e2-493f43ceed44","savedPayload":{"position":{"x":21481.213679589873,"y":29402.52234931817},"targetPosition":{"x":21481.213679589873,"y":28716.858393897463},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"d4098b73-7e25-434e-8fd9-342393cbb400"}}},{"type":"Single Market Data","name":"Kraken ETH/BTC","dataProducts":[{"type":"Data Product","name":"Candles","id":"fce50098-d674-4006-94ad-cce46f3d59a4","savedPayload":{"position":{"x":21043.238614484988,"y":30047.848564462507},"targetPosition":{"x":21174.61205692785,"y":29353.523223578955},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"aLine truncated
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -26,7 +26,7 @@ function newAppLoader() {
|
||||
modulesArray = ['UserEcosystem.js']
|
||||
|
||||
modulesArray = modulesArray.concat([
|
||||
'ChartsSpace/Viewport.js',
|
||||
'ChartingSpace/Viewport.js',
|
||||
|
||||
'Globals.js',
|
||||
'Ecosystem.js',
|
||||
@@ -34,25 +34,25 @@ function newAppLoader() {
|
||||
'AppSchema.js',
|
||||
'MQService',
|
||||
|
||||
'ChartsSpace/EdgeEditor.js',
|
||||
'ChartsSpace/ChartUtilities.js',
|
||||
'ChartsSpace/PlottersManager.js',
|
||||
'ChartsSpace/TimelineChart.js',
|
||||
'ChartsSpace/TimeMachine.js',
|
||||
'ChartsSpace/CoordinateSystem.js',
|
||||
'ChartingSpace/EdgeEditor.js',
|
||||
'ChartingSpace/ChartUtilities.js',
|
||||
'ChartingSpace/PlottersManager.js',
|
||||
'ChartingSpace/TimelineChart.js',
|
||||
'ChartingSpace/TimeMachine.js',
|
||||
'ChartingSpace/CoordinateSystem.js',
|
||||
|
||||
'DesignerSpace/Workspace/Workspace.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/ChainAttachDetach.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/NodeDeleter.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/ProtocolNode.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/NodeCloning.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/NodeChildren.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/TaskFunctions.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/SessionFunctions.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/ShortcutKeys.js',
|
||||
'DesignerSpace/Workspace/FunctionLibraries/OnFocus.js',
|
||||
'DesignSpace/Workspace/Workspace.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/ChainAttachDetach.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/ReferenceAttachDetach.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/ProtocolNode.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/NodeCloning.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/NodeChildren.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/SessionFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/ShortcutKeys.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/OnFocus.js',
|
||||
|
||||
'Utilities/RoundedCornersBackground.js',
|
||||
|
||||
@@ -68,9 +68,9 @@ function newAppLoader() {
|
||||
'Spaces/CockpitSpace.js',
|
||||
'Spaces/TopSpace.js',
|
||||
'Spaces/PanelsSpace.js',
|
||||
'Spaces/ChartSpace.js',
|
||||
'Spaces/ChartingSpace.js',
|
||||
'Spaces/FloatingSpace.js',
|
||||
'Spaces/DesignerSpace.js',
|
||||
'Spaces/DesignSpace.js',
|
||||
|
||||
'Files/SingleFile.js',
|
||||
'Files/FileCloud.js',
|
||||
@@ -122,7 +122,7 @@ function newAppLoader() {
|
||||
'Container.js',
|
||||
|
||||
'Utilities.js',
|
||||
'Dashboard.js'
|
||||
'PostLoader.js'
|
||||
])
|
||||
|
||||
modulesArray = modulesArray.concat(plotters)
|
||||
|
||||
@@ -237,31 +237,31 @@ function onBrowserRequest (request, response) {
|
||||
}
|
||||
break
|
||||
|
||||
case 'DesignerSpace': // This means the DesignerSpace folder.
|
||||
case 'DesignSpace': // This means the DesignSpace folder.
|
||||
|
||||
{
|
||||
if (requestParameters[3] === undefined) {
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/DesignerSpace/' + requestParameters[2], response)
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/DesignSpace/' + requestParameters[2], response)
|
||||
return
|
||||
}
|
||||
if (requestParameters[4] === undefined) {
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/DesignerSpace/' + requestParameters[2] + '/' + requestParameters[3], response)
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/DesignSpace/' + requestParameters[2] + '/' + requestParameters[3], response)
|
||||
return
|
||||
}
|
||||
if (requestParameters[5] === undefined) {
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/DesignerSpace/' + requestParameters[2] + '/' + requestParameters[3] + '/' + requestParameters[4], response)
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/DesignSpace/' + requestParameters[2] + '/' + requestParameters[3] + '/' + requestParameters[4], response)
|
||||
return
|
||||
}
|
||||
}
|
||||
break
|
||||
|
||||
case 'ControlsToolBox': // This means the DesignerSpace folder.
|
||||
case 'ControlsToolBox': // This means the DesignSpace folder.
|
||||
{
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/ControlsToolBox/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'Utilities': // This means the DesignerSpace folder.
|
||||
case 'Utilities': // This means the DesignSpace folder.
|
||||
{
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/Utilities/' + requestParameters[2], response)
|
||||
}
|
||||
@@ -334,7 +334,7 @@ function onBrowserRequest (request, response) {
|
||||
}
|
||||
break
|
||||
|
||||
case 'ChartsSpace':
|
||||
case 'ChartingSpace':
|
||||
{
|
||||
respondWithFile(process.env.PATH_TO_CANVAS_APP + '/' + requestParameters[1] + '/' + requestParameters[2], response)
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ dataset_definition: "A dataset definition contains a configuration file that def
|
||||
|
||||
record_definition: "The record definition is where indicators define how many fields, what fields and in which order those fields will be stored in each record."
|
||||
|
||||
record: "A record is the compendium of information stored for each period of time, including the start and end datetime of the period along with the properties that provide the information the indicator is meant to generate."
|
||||
record_property: "A record is the compendium of information stored for each period of time, including the start and end datetime of the period along with the properties that provide the information the indicator is meant to generate."
|
||||
|
||||
formula: "In the context of a record definition, formulas are used to assign a value to the property, usually in the form of a variable declared in the calculation or data building procedure."
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ dataset_definition: "A dataset definition contains a configuration file that def
|
||||
|
||||
record_definition: "The record definition is where indicators define how many fields, what fields and in which order those fields will be stored in each record."
|
||||
|
||||
record: "A record is the compendium of information stored for each period of time, including the start and end datetime of the period along with the properties that provide the information the indicator is meant to generate."
|
||||
record_property: "A record is the compendium of information stored for each period of time, including the start and end datetime of the period along with the properties that provide the information the indicator is meant to generate."
|
||||
|
||||
formula: "In the context of a record definition, formulas are used to assign a value to the property, usually in the form of a variable declared in the calculation or data building procedure."
|
||||
|
||||
|
||||
@@ -271,14 +271,24 @@ entries:
|
||||
output: web
|
||||
class: childItem
|
||||
|
||||
# - title: Product definition
|
||||
# url: /suite-product-definition.html
|
||||
# output: web
|
||||
# class: childItem
|
||||
- title: Product definition
|
||||
url: /suite-product-definition.html
|
||||
output: web
|
||||
class: childItem
|
||||
|
||||
# - title: Input-to-output cycle
|
||||
# url: /suite-input-to-output-cycle.html
|
||||
# output: web
|
||||
- title: Plotters
|
||||
url: /suite-plotters.html
|
||||
output: web
|
||||
|
||||
- title: Plotter Panel
|
||||
url: /suite-plotter-panel.html
|
||||
output: web
|
||||
class: childItem
|
||||
|
||||
- title: Shapes
|
||||
url: /suite-shapes.html
|
||||
output: web
|
||||
class: childItem
|
||||
|
||||
# - title: Datasets
|
||||
# url: /suite-datasets.html
|
||||
|
||||
@@ -75,7 +75,7 @@ Those actions are performed recursively for each record, and the graphics are pl
|
||||
|
||||
<!--------------------------------------------- ADDING starts -->
|
||||
|
||||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
To add a plotter, select *Add Plotter* on the data mine node menu. An indicator bot is created along with the basic structure of nodes required to define it.
|
||||
|
||||
<!--------------------------------------------- ADDING ends -->
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: Plotter Panel
|
||||
summary: "A plotter panel allows building panels with numerical representations of data."
|
||||
sidebar: suite_sidebar
|
||||
permalink: suite-plotter-panel.html
|
||||
toc: false
|
||||
---
|
||||
|
||||
{% include /data_mine/plotter-panel.md heading="##" icon="150-" adding="####" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
<table class='hierarchyTable'><thead><tr><th><a href='#plotter-panel' data-toggle='tooltip' data-original-title='{{site.data.data_mine.plotter_panel}}'><img src='images/icons/plotter-panel.png' /><br />Plotter Panel</a></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>
|
||||
<tr><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#panel-data' data-toggle='tooltip' data-original-title='{{site.data.data_mine.panel_data}}'><img src='images/icons/panel-data.png' /><br />Panel Data</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-formula' data-toggle='tooltip' data-original-title='{{site.data.data_mine.data_formula}}'><img src='images/icons/data-formula.png' /><br />Data Formula</a></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>
|
||||
|
||||
|
||||
{% include /data_mine/panel-data.md heading="##" icon="150-" adding="####" configuring="####" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/data-formula.md heading="###" icon="" adding="#####" configuring="" starting="" content="no" definition="yes" table="yes" more="yes"%}
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Plotters
|
||||
summary: "Plotters read data products created by bots and map certain coordinate points to use them as vertices for polygons, which are assigned styles to create graphic representations of the underlying data."
|
||||
sidebar: suite_sidebar
|
||||
permalink: suite-plotters.html
|
||||
toc: false
|
||||
---
|
||||
|
||||
{% include /data_mine/plotter.md heading="" icon="150-" adding="####" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes" %}
|
||||
|
||||
<table class='hierarchyTable'><thead><tr><th><a href='#plotter' data-toggle='tooltip' data-original-title='{{site.data.data_mine.plotter}}'><img src='images/icons/plotter.png' /><br />Plotter</a></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>
|
||||
<tr><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#plotter-module' data-toggle='tooltip' data-original-title='{{site.data.data_mine.plotter_module}}'><img src='images/icons/plotter-module.png' /><br />Plotter Module</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#plotter-panel' data-toggle='tooltip' data-original-title='{{site.data.data_mine.plotter_panel}}'><img src='images/icons/plotter-panel.png' /><br />Plotter Panel</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#shapes' data-toggle='tooltip' data-original-title='{{site.data.data_mine.shapes}}'><img src='images/icons/shapes.png' /><br />Shapes</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>
|
||||
|
||||
|
||||
{% include /data_mine/plotter-module.md heading="##" icon="150-" adding="####" configuring="####" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/plotter-panel.md heading="###" icon="" adding="" configuring="" starting="" content="no" definition="yes" table="yes" more="no"%}
|
||||
|
||||
{% include /data_mine/shapes.md heading="###" icon="" adding="" configuring="" starting="" content="no" definition="yes" table="yes" more="no"%}
|
||||
@@ -1,190 +1,46 @@
|
||||
---
|
||||
title: Product Definition
|
||||
summary: ""
|
||||
summary: "The product definition is the compilation of configurations, references, and JavaScript code that make up the data product."
|
||||
sidebar: suite_sidebar
|
||||
permalink: suite-product-definition.html
|
||||
toc: false
|
||||
---
|
||||
|
||||
## Introduction
|
||||
{% include /data_mine/product-definition.md heading="" icon="150-" adding="####" configuring="####" starting="" content="yes" definition="bold" table="yes" more="yes" %}
|
||||
|
||||
Now that we have covered processes definitions, let's go back to the top level structure and do the same with the structure of *products definitions*.
|
||||
<table class='hierarchyTable'><thead><tr><th><a href='#product-definition' data-toggle='tooltip' data-original-title='{{site.data.data_mine.product_definition}}'><img src='images/icons/product-definition.png' /><br />Product Definition</a></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>
|
||||
<tr><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#dataset-definition' data-toggle='tooltip' data-original-title='{{site.data.data_mine.dataset_definition}}'><img src='images/icons/dataset-definition.png' /><br />Dataset Definition</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#record-definition' data-toggle='tooltip' data-original-title='{{site.data.data_mine.record_definition}}'><img src='images/icons/record-definition.png' /><br />Record Definition</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#record-property' data-toggle='tooltip' data-original-title='{{site.data.data_mine.record_property}}'><img src='images/icons/record-property.png' /><br />Record Property</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#formula' data-toggle='tooltip' data-original-title='{{site.data.data_mine.formula}}'><img src='images/icons/formula.png' /><br />Formula</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#calculations-procedure' data-toggle='tooltip' data-original-title='{{site.data.data_mine.calculations_procedure}}'><img src='images/icons/calculations-procedure.png' /><br />Calculations Procedure</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#procedure-loop' data-toggle='tooltip' data-original-title='{{site.data.data_mine.procedure_loop}}'><img src='images/icons/procedure-loop.png' /><br />Procedure Loop</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#javascript-code' data-toggle='tooltip' data-original-title='{{site.data.data_mine.javascript_code}}'><img src='images/icons/javascript-code.png' /><br />JavaScript Code</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#procedure-initialization' data-toggle='tooltip' data-original-title='{{site.data.data_mine.procedure_initialization}}'><img src='images/icons/procedure-initialization.png' /><br />Procedure Initialization</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#javascript-code' data-toggle='tooltip' data-original-title='{{site.data.data_mine.javascript_code}}'><img src='images/icons/javascript-code.png' /><br />JavaScript Code</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-building-procedure' data-toggle='tooltip' data-original-title='{{site.data.data_mine.data_building_procedure}}'><img src='images/icons/data-building-procedure.png' /><br />Data Building Procedure</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#procedure-loop' data-toggle='tooltip' data-original-title='{{site.data.data_mine.procedure_loop}}'><img src='images/icons/procedure-loop.png' /><br />Procedure Loop</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#javascript-code' data-toggle='tooltip' data-original-title='{{site.data.data_mine.javascript_code}}'><img src='images/icons/javascript-code.png' /><br />JavaScript Code</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#procedure-initialization' data-toggle='tooltip' data-original-title='{{site.data.data_mine.procedure_initialization}}'><img src='images/icons/procedure-initialization.png' /><br />Procedure Initialization</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#javascript-code' data-toggle='tooltip' data-original-title='{{site.data.data_mine.javascript_code}}'><img src='images/icons/javascript-code.png' /><br />JavaScript Code</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>
|
||||
|
||||
We will take a look into Paula's Bollinger Standard Channels product and explore the three main definitions required: *records definition*, *dataset definitions*, *calculation procedures* and *data building procedure*.
|
||||
|
||||
| Records Definition | Dataset Definition | Calculations Procedure | Data Building Procedure |
|
||||
| :---: | :---: | :---: | :---: |
|
||||
|  |  |  | 
|
||||
|
||||
But first, let's take a look at the image below, showing a piece of configuration available within the main *product definition* node.
|
||||
|
||||
[](https://user-images.githubusercontent.com/13994516/69140177-4a050e80-0ac2-11ea-8374-114ca00a0d08.gif)
|
||||
{% include /data_mine/dataset-definition.md heading="##" icon="150-" adding="###" configuring="###" starting="" content="yes" definition="bold" table="yes" more="yes" %}
|
||||
|
||||
```js
|
||||
{
|
||||
"codeName": "Bollinger-Standard-Channels",
|
||||
"singularVariableName": "bollingerStandardChannel",
|
||||
"pluralVariableName": "bollingerStandardChannels"
|
||||
}
|
||||
```
|
||||
{% include /data_mine/record-definition.md heading="##" icon="150-" adding="###" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes" %}
|
||||
|
||||
* ```codeName``` is the name of the product as it is used within the bot's code.
|
||||
{% include /data_mine/record-property.md heading="###" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes" %}
|
||||
|
||||
* ```singularVariableName``` is the singular form of the name of the variable representing the product, as it will later be used on strategies (*i.e.:* ```bollingerChannel.direction```, where *bollingerChannel* is the name of the product as defined in its configuration and *direction* is the name of the property, as you will see later on in the Records Definition section).
|
||||
{% include /data_mine/formula.md heading="####" icon="" adding="######" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes" %}
|
||||
|
||||
* ```pluralVariableName``` is the plural form of the variable.
|
||||
{% include /data_mine/calculations-procedure.md heading="##" icon="150-" adding="###" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes" %}
|
||||
|
||||
> **NOTE:** Remember that names set in configuration files are the ones used in the bot's code, not the label that may be set directly over the node. You may use a descriptive name on the label as a personal reference if you wish, but it will never be used in the code.
|
||||
{% include /data_mine/procedure-loop.md heading="###" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes" %}
|
||||
|
||||
## Records Definition
|
||||
{% include /data_mine/javascript-code.md heading="####" icon="" adding="######" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes" %}
|
||||
|
||||
This is where indicators define how many fields, what fields and in which order those fields will be stored in each record.
|
||||
{% include /data_mine/procedure-initialization.md heading="###" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes" %}
|
||||
|
||||
| Record Property |
|
||||
| :---: |
|
||||
|  |
|
||||
|
||||
Records may have as many properties as required. Remember that the order in which record properties are defined around the parent *record definition* node is the order in which they are stored in the actual record.
|
||||
|
||||
Record properties have an internal configuration:
|
||||
|
||||
```js
|
||||
{
|
||||
"codeName": "begin",
|
||||
"isString": false,
|
||||
"isCalculated": true
|
||||
}
|
||||
```
|
||||
|
||||
* ```codeName``` is the name of the record as it is used in the bot's code. Most record definitions will have a *begin* date and an *end* date.
|
||||
|
||||
* ```isString``` determines if the field is a text string or if, in turn, is a numeric field. Dates are stored in the *epoch* format, which is numeric. The reason why this configuration is important is because fields which are strings need to be stored between "double quotes".
|
||||
|
||||
* ```isCalculated``` determines if the field is stored in the dataset or if, instead, is calculated at a later stage, as explained in the *input to output cycle* earlier. A value *true* means that the record is not stored. In the case ```isCaculated``` is not defined in the configuration, it is assumed to be false.
|
||||
|
||||
[](https://user-images.githubusercontent.com/13994516/69139160-3ce72000-0ac0-11ea-9566-a259c9ea6194.gif)
|
||||
|
||||
The image above shows the four different record properties defined for Paula's Bollinger Standard Channels product.
|
||||
|
||||
You will notice some *record properties* may have a formula attached. **In this context, formulas are used to assign a value to the property.**
|
||||
|
||||
The formula may act in slightly different ways depending on the ```isCaculated``` attribute in the *property definition* configuration:
|
||||
|
||||
* When a property is calculated (```"isCalculated": true```), the formula assigns to the property a value that is calculated in the *calculations procedure* (we will study this procedure further down this explantion). Even if the property is not stored in the dataset, it is made available as a *calculated property* to other bots that may have the dataset as input.
|
||||
|
||||
* When a property is not calculated (```"isCalculated": false``` or the attribute is not defined in the configuration) the formula is applied in the *data building procedure* (we will get to that later on too).
|
||||
|
||||
[](https://user-images.githubusercontent.com/13994516/69168829-a6365580-0af7-11ea-8583-f39a19a6465b.gif)
|
||||
|
||||
The image above shows Chris' Bollinger Band product *record definitions*. Notice how the first five properties have no formula while the last two remaining properties do have formulas. These last two properties are calculated.
|
||||
|
||||
## Dataset Definition
|
||||
|
||||
Datasets are defined via a configuration script that contains roughly the following information:
|
||||
|
||||
```js
|
||||
{
|
||||
"codeName": "Multi-Period-Market",
|
||||
"type": "Market Files",
|
||||
"validPeriods": [ "24-hs", "12-hs", "08-hs", "06-hs", "04-hs", "03-hs", "02-hs", "01-hs" ],
|
||||
"filePath": "AAMasters/AAPaula.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Bollinger-Standard-Channels/Multi-Period-Market/@Period",
|
||||
"fileName": "@AssetA_@AssetB.json"
|
||||
}
|
||||
```
|
||||
|
||||
The code is pretty much self explanatory:
|
||||
|
||||
* ```codeName``` is the name of the dataset as used within the code.
|
||||
|
||||
* ```type``` refers to the type of dataset as described in the [Outputs](outputs#types-of-datasets) section.
|
||||
|
||||
* ```validPeriods``` refers to the timeperiods covered in the dataset.
|
||||
|
||||
* ```filePath``` sets the path on which files will be stored.
|
||||
|
||||
* ```fileName``` sets the name of the files that constitute the dataset.
|
||||
|
||||
[](https://user-images.githubusercontent.com/13994516/69176546-324f7980-0b06-11ea-91cb-1b421f62d466.gif)
|
||||
|
||||
The image above shows the reference that needs to be present between the *dataset definition* and the corresponding *output dataset* defined as the *process output*.
|
||||
|
||||
## Calculations Procedure
|
||||
|
||||
The calculations procedure is where the processing of calculated properties takes place.
|
||||
|
||||
| Procedure Initialization | Procedure Loop |
|
||||
| :---: | :---: |
|
||||
|  |  |
|
||||
|
||||
The procedure has two structure of nodes:
|
||||
|
||||
* **Procedure initialization** allows running a piece of code before the recursive process starts, and it is mostly used to initialize variables.
|
||||
|
||||
* **Procedure loop** holds the code that will be applied to calculate the properties for each record in a recursive manner.
|
||||
|
||||
Let's take Chris' Bollinger Bands *calculation procedure* as an example.
|
||||
|
||||
The code for its *procedure initialization* is:
|
||||
|
||||
```js
|
||||
variable.lastMovingAverage = 0
|
||||
variable.SIDE_TOLERANCE = 0.5 * system.timePeriod / system.ONE_DAY_IN_MILISECONDS
|
||||
variable.SMALL_SLOPE = 1.0 * system.timePeriod / system.ONE_DAY_IN_MILISECONDS
|
||||
variable.MEDIUM_SLOPE = 2.0 * system.timePeriod / system.ONE_DAY_IN_MILISECONDS
|
||||
variable.HIGH_SLOPE = 4.0 * system.timePeriod / system.ONE_DAY_IN_MILISECONDS
|
||||
```
|
||||
|
||||
As you may be able to gather from the code snippet above, five different variables are being initialized with simple calculations.
|
||||
|
||||
The code for the *procedure loop* section is:
|
||||
|
||||
```js
|
||||
if (variable.lastMovingAverage > product.bollingerBand.movingAverage) { variable.direction = "Down" }
|
||||
if (variable.lastMovingAverage < product.bollingerBand.movingAverage) { variable.direction = "Up" }
|
||||
if (variable.lastMovingAverage === product.bollingerBand.movingAverage) { variable.direction = "Side" }
|
||||
|
||||
variable.delta = Math.abs(product.bollingerBand.movingAverage - variable.lastMovingAverage)
|
||||
|
||||
variable.slope = "Extreme"
|
||||
if (variable.delta < product.bollingerBand.movingAverage * variable.HIGH_SLOPE / 100) { variable.slope = "Steep" }
|
||||
if (variable.delta < product.bollingerBand.movingAverage * variable.MEDIUM_SLOPE / 100) { variable.slope = "Medium" }
|
||||
if (variable.delta < product.bollingerBand.movingAverage * variable.SMALL_SLOPE / 100) { variable.slope = "Gentle" }
|
||||
if (variable.delta < product.bollingerBand.movingAverage * variable.SIDE_TOLERANCE / 100) { variable.slope = "Side" }
|
||||
|
||||
variable.lastMovingAverage = product.bollingerBand.movingAverage
|
||||
```
|
||||
|
||||
As you may see, the first block of code determines the direction of the channel (Down, Up or Side), while the second section determines the inclination of the slope of the Moving Average (Extreme, Steep, Medium, Gentle, side).
|
||||
|
||||
## Data Building Procedure
|
||||
|
||||
The *data building procedure* is the section in which the operations the bot will perform on the input dataset are defined. These operations should result in the values of the properties previously defined.
|
||||
|
||||
| Procedure Initialization | Procedure Loop |
|
||||
| :---: | :---: |
|
||||
|  |  |
|
||||
|
||||
As you may figure, the *data building procedure* works pretty much like the *calculations procedure*, with a *procedure initialization* structure of nodes and a *procedure loop* structure of nodes.
|
||||
|
||||
Let's take a peek at the code Paula uses to build the Bollinger Standard Channels out of the Bollinger Bands dataset offered by Chris.
|
||||
|
||||
Procedure initialization:
|
||||
|
||||
```js
|
||||
variable.period = 1
|
||||
```
|
||||
|
||||
Procedure loop:
|
||||
|
||||
```js
|
||||
if (record.previous !== undefined) {
|
||||
if (record.current.direction === record.previous.direction) {
|
||||
variable.period++
|
||||
} else {
|
||||
variable.period = 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Simple right?
|
||||
|
||||
Indeed. You may recall that the Bollinger Standard Channel product has four different *record properties* defined: *begin* and *end*, which are dates taken directly from the input data source, *direction*, which is handed by Chris as a calculated property, and *period*, which is all Paula needs to calculate to build this new dataset.
|
||||
{% include /data_mine/data-building-procedure.md heading="##" icon="150-" adding="###" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes" %}
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: Shapes
|
||||
summary: "Shapes define coordinate points to use as vertex for polygons, which are assigned styles."
|
||||
sidebar: suite_sidebar
|
||||
permalink: suite-shapes.html
|
||||
toc: false
|
||||
---
|
||||
|
||||
{% include /data_mine/shapes.md heading="" icon="150-" adding="####" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
<table class='hierarchyTable'><thead><tr><th><a href='#shapes' data-toggle='tooltip' data-original-title='{{site.data.data_mine.shapes}}'><img src='images/icons/shapes.png' /><br />Shapes</a></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>
|
||||
<tr><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#chart-points' data-toggle='tooltip' data-original-title='{{site.data.data_mine.chart_points}}'><img src='images/icons/chart-points.png' /><br />Chart Points</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#point' data-toggle='tooltip' data-original-title='{{site.data.data_mine.point}}'><img src='images/icons/point.png' /><br />Point</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#point-formula' data-toggle='tooltip' data-original-title='{{site.data.data_mine.point_formula}}'><img src='images/icons/point-formula.png' /><br />Point Formula</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#polygon' data-toggle='tooltip' data-original-title='{{site.data.data_mine.polygon}}'><img src='images/icons/polygon.png' /><br />Polygon</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#polygon-vertex' data-toggle='tooltip' data-original-title='{{site.data.data_mine.polygon_vertex}}'><img src='images/icons/polygon-vertex.png' /><br />Polygon Vertex</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#polygon-border' data-toggle='tooltip' data-original-title='{{site.data.data_mine.polygon_border}}'><img src='images/icons/polygon-border.png' /><br />Polygon Border</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#style' data-toggle='tooltip' data-original-title='{{site.data.data_mine.style}}'><img src='images/icons/style.png' /><br />Style</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#style-condition' data-toggle='tooltip' data-original-title='{{site.data.data_mine.style_condition}}'><img src='images/icons/style-condition.png' /><br />Style Condition</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#style' data-toggle='tooltip' data-original-title='{{site.data.data_mine.style}}'><img src='images/icons/style.png' /><br />Style</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#polygon-body' data-toggle='tooltip' data-original-title='{{site.data.data_mine.polygon_body}}'><img src='images/icons/polygon-body.png' /><br />Polygon Body</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#style' data-toggle='tooltip' data-original-title='{{site.data.data_mine.style}}'><img src='images/icons/style.png' /><br />Style</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#style-condition' data-toggle='tooltip' data-original-title='{{site.data.data_mine.style_condition}}'><img src='images/icons/style-condition.png' /><br />Style Condition</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#style' data-toggle='tooltip' data-original-title='{{site.data.data_mine.style}}'><img src='images/icons/style.png' /><br />Style</a></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>
|
||||
|
||||
|
||||
{% include /data_mine/chart-points.md heading="##" icon="150-" adding="####" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/point.md heading="####" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/point-formula.md heading="#####" icon="" adding="######" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/polygon.md heading="##" icon="150-" adding="####" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/polygon-vertex.md heading="###" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/polygon-border.md heading="###" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/style.md heading="#####" icon="" adding="######" configuring="######" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/style-condition.md heading="#####" icon="" adding="######" configuring="####" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /data_mine/polygon-body.md heading="###" icon="" adding="#####" configuring="" starting="" content="yes" definition="yes" table="yes" more="yes"%}
|
||||