From 0798257b97f041fecac7b6bb0a805a67acf6d7b3 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 9 Sep 2020 17:01:06 +0200 Subject: [PATCH] Update DesignSpace.js --- Spaces/DesignSpace.js | 335 +++++++----------------------------------- 1 file changed, 52 insertions(+), 283 deletions(-) diff --git a/Spaces/DesignSpace.js b/Spaces/DesignSpace.js index a9566741f..82edb996c 100644 --- a/Spaces/DesignSpace.js +++ b/Spaces/DesignSpace.js @@ -26,298 +26,68 @@ function newDesignSpace() { return thisObject function initialize() { - loadIconCollection() - buildIconByUiObjectTypeMap() + loadIconCollection(onIconsReady) - thisObject.workspace = newWorkspace() - thisObject.workspace.initialize() - } + function onIconsReady() { + buildIconByUiObjectTypeMap() + thisObject.workspace = newWorkspace() + thisObject.workspace.initialize() + } - function buildIconByUiObjectTypeMap() { - /* Take types-icons relationships defined at the schema */ - for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { - let nodeDefinition = APP_SCHEMA_ARRAY[i] - let iconName = nodeDefinition.icon - if (iconName !== undefined) { - let icon = thisObject.iconCollection.get(iconName) - thisObject.iconByUiObjectType.set(nodeDefinition.type, icon) + function buildIconByUiObjectTypeMap() { + /* Take types-icons relationships defined at the schema */ + for (let i = 0; i < APP_SCHEMA_ARRAY.length; i++) { + let nodeDefinition = APP_SCHEMA_ARRAY[i] + let iconName = nodeDefinition.icon + if (iconName !== undefined) { + let icon = thisObject.iconCollection.get(iconName) + thisObject.iconByUiObjectType.set(nodeDefinition.type, icon) + } } } } - function loadIconCollection() { - const iconsNames = [ - 'analysis', - 'analysis-1', - 'approve', - 'attach', - 'attractive', - 'pyramid', - 'brainstorming', - 'broken-link', - 'chat', - 'chronometer', - 'compass', - 'competition', - 'content', - 'design-tool', - 'grid', - 'headphones', - 'html', - 'image', - 'layout', - 'loading', - 'login', - 'pantone', - 'paper-plane', - 'photo-camera', - 'piggy-bank', - 'pipette', - 'pixel', - 'placeholder', - 'planning', - 'promotion', - 'pyramid', - 'quality', - 'responsive', - 'schedule', - 'search', - 'security', - 'settings', - 'sitemap', - 'startup', - 'support', - 'tap', - 'menu-fix-pinned', - 'menu-fix-unpinned', - 'targeting', - 'task', - 'testing', - 'text', - 'timeline', - 'tools', - 'delete', - 'upload', - 'vector', - 'video-player', - 'menu-mobility-freeze', - 'menu-mobility-unfreeze', - 'menu-tree-minus', - 'menu-tree-plus', - 'menu-backup', - 'menu-share', - 'stop', - 'stage-open', - 'stage-close', - 'stage-trigger', - 'stage-trigger-trigger-on', - 'stage-trigger-trigger-off', - 'stage-trigger-take-position', - 'menu-tensor-fixed-angles', - 'menu-tensor-free-angles', - 'stage-open-position-size', - 'stage-open-take-profit', - 'stage-open-postion-rate', - 'session-live-trading', - 'session-paper-trading', - 'session-backtesting', - 'session-forward-testing', - 'network', - 'network-node', - 'bot-trading', - 'layer-manager', - 'process', - 'bot-indicator', - 'bot-sensor', - 'time-period', - 'data-mine', - 'procedure-loop', - 'calculations-procedure', - 'data-building-procedure', - 'procedure-initialization', - 'process-definition', - 'output-dataset', - 'data-dependency', - 'product-definition', - 'plotter-module', - 'status-dependency', - 'record-property', - 'record-definition', - 'plotter', - 'plotter-panel', - 'dataset-definition', - 'status-report', - 'execution-finished-event', - 'process-dependencies', - 'process-output', - 'social-bot', - 'execution-started-event', - 'shapes', - 'chart-point', - 'style', - 'chart-points', - 'shapes-polygon-vertex', - 'shapes-polygon-border', - 'shapes-polygon-body', - 'chart-point-formula', - 'style-condition', - 'shapes-polygon', - 'data-entry', - 'data-formula', - 'clone', - 'exchange-account-asset', - 'exchange-account-key', - 'user-keys', - 'user-assets', - 'asset', - 'exchange-accounts', - 'user-account', - 'market', - 'exchange-assets', - 'crypto-exchanges', - 'crypto-exchange', - 'exchange-markets', - 'charting-space', - 'time-line-chart', - 'time-frame-scale', - 'time-scale', - 'rate-scale', - 'time-machine', - 'data-product', - 'single-market-data', - 'data-storage', - 'dataset', - 'viewport', - 'bitfinex', - 'binance', - 'kucoin', - 'bittrex', - 'kraken', - 'poloniex', - 'upbit', - 'monero', - 'tether', - 'tron', - 'stellar', - 'qtum', - 'neo', - 'litecoin', - 'ethereum-classic', - 'ethereum', - 'eos', - 'dash', - 'cardano', - 'bitcoin-cash', - 'bitcoin', - 'binance-coin', - 'trend', - 'oscillator', - 'moving-average', - 'histogram', - 'band', - 'volume', - 'candles', - 'bitmex', - 'liquid', - 'hitbtc', - 'us-dollar', - 'distance-to-parent-200', - 'distance-to-parent-150', - 'distance-to-parent-100', - 'distance-to-parent-050', - 'distance-to-parent-025', - 'distance-to-parent-000', - 'angle-to-parent-360', - 'angle-to-parent-180', - 'angle-to-parent-090', - 'angle-to-parent-045', - 'angle-to-parent-000', - 'data-mining', - 'initial-definition', - 'next-phase-event', - 'testing-environment', - 'production-environment', - 'task-manager', - 'session-based-data', - 'session-independent-data', - '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', - 'mouse-pointer', - 'mouse-left-click', - 'mouse-right-click', - 'mouse-wheel-up', - 'mouse-wheel-down', - 'mouse-wheel-click', - 'key-alt', - 'key-shift', - 'key-ctrl', - 'hand-drag', - 'key-down', - 'key-left', - 'key-right', - 'key-up', - 'master-script', - 'scripts-library', - 'super-action', - 'super-scripts', - 'template-script', - 'template-structure', - 'template-target', - 'delink', - 'detach', - 'help', - 'key-a', - 'key-m', - 'key-r', - 'arrangement-horizontal-top', - 'arrangement-convex', - 'arrangement-horizontal-bottom', - 'arrangement-vertical-right', - 'arrangement-vertical-left', - 'arrangement-concave', - 'move-to-phase-event', - 'open-execution', - 'move-order', - 'market-order', - 'limit-order', - 'execution-algorithm', - 'cancel-order', - 'limit-sell-order', - 'close-execution', - 'market-sell-order', - 'limit-buy-order', - 'market-buy-order' - ] + function loadIconCollection(callBack) { - for (let i = 0; i < iconsNames.length; i++) { - let name = iconsNames[i] - loadImage(name) - } + callServer(undefined, 'ImagesNames', onResponse) - function loadImage(name) { - const PATH = 'Images/Icons/style-01/' - let image = new Image() - image.onload = onImageLoad - image.fileName = name - - function onImageLoad() { - image.canDrawIcon = true + function onResponse(err, data) { + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + console.log('Failed to Fetch Image Names from the Backend') + return + } + + let imageNames = JSON.parse(data) + let imageLoadedCounter = 0 + + for (let i = 0; i < imageNames.length; i++) { + let name = imageNames[i] + loadImage(name) + } + + function loadImage(name) { + imageLoadedCounter++ + const PATH = 'Images/Icons/style-01/' + let image = new Image() + image.onload = onImageLoad + image.fileName = name + + function onImageLoad() { + image.canDrawIcon = true + } + image.src = PATH + name + let key = name.substring(0, name.length - 4) + thisObject.iconCollection.set(key, image) + + if (imageLoadedCounter === imageNames.length) { + callBack() + } } - image.src = PATH + name + '.png' - thisObject.iconCollection.set(name, image) } } function physics() { + if (thisObject.workspace === undefined) { return } thisObject.workspace.physics() } @@ -330,13 +100,12 @@ function newDesignSpace() { } function getContainer(point) { - + } function draw() { + if (thisObject.workspace === undefined) { return } if (canWeDraw === false) { return } - if (thisObject.workspace !== undefined) { - thisObject.workspace.draw() - } + thisObject.workspace.draw() } }