diff --git a/UI/Utilities.js b/UI/Utilities.js index 2a0e1db54..1f32e3c5c 100644 --- a/UI/Utilities.js +++ b/UI/Utilities.js @@ -1,141 +1,131 @@ -function getSchemaDocument(node, project) { - if (node === null || node === undefined) { - console.log('[Error] Can not get the schema document of a null or undefined node ') - return - } - if (project === undefined) { project = node.project } +function getSchemaDocument (node, project) { + if (node === null || node === undefined) { + console.log('[Error] Can not get the schema document of a null or undefined node ') + return + } + if (project === undefined) { project = node.project } - let APP_SCHEMA = SCHEMAS_BY_PROJECT.get(project) - if (APP_SCHEMA !== undefined) { - return SCHEMAS_BY_PROJECT.get(project).map.appSchema.get(node.type) - } else { - console.log('[Error] Could not get APP Scchema for project ' + node.project) - } + let APP_SCHEMA = SCHEMAS_BY_PROJECT.get(project) + if (APP_SCHEMA !== undefined) { + return SCHEMAS_BY_PROJECT.get(project).map.appSchema.get(node.type) + } else { + console.log('[Error] Could not get APP Scchema for project ' + node.project) + } } -function dynamicDecimals(value, minDecimals) { - if (minDecimals === undefined) { - minDecimals = 0 - } - let decimals = 0 - if (value < 1) { decimals = 3 } - else if (value < 10) { decimals = 2 } - else if (value < 100) { decimals = 1 } - else if (Math.abs(Math.trunc(value * 10)) < 1) { decimals = 4 } - else if (Math.abs(Math.trunc(value * 100)) < 1) { decimals = 5 } - else if (Math.abs(Math.trunc(value * 1000)) < 1) { decimals = 6 } - else if (Math.abs(Math.trunc(value * 10000)) < 1) { decimals = 7 } - else if (Math.abs(Math.trunc(value * 100000)) < 1) { decimals = 8 } - else if (Math.abs(Math.trunc(value * 1000000)) < 1) { decimals = 9 } - else if (Math.abs(Math.trunc(value * 10000000)) < 1) { decimals = 10 } - else if (Math.abs(Math.trunc(value * 100000000000)) < 1) { value = 0; decimals = 0 } +function dynamicDecimals (value, minDecimals) { + if (minDecimals === undefined) { + minDecimals = 0 + } + let decimals = 0 + if (value < 1) { decimals = 3 } else if (value < 10) { decimals = 2 } else if (value < 100) { decimals = 1 } else if (Math.abs(Math.trunc(value * 10)) < 1) { decimals = 4 } else if (Math.abs(Math.trunc(value * 100)) < 1) { decimals = 5 } else if (Math.abs(Math.trunc(value * 1000)) < 1) { decimals = 6 } else if (Math.abs(Math.trunc(value * 10000)) < 1) { decimals = 7 } else if (Math.abs(Math.trunc(value * 100000)) < 1) { decimals = 8 } else if (Math.abs(Math.trunc(value * 1000000)) < 1) { decimals = 9 } else if (Math.abs(Math.trunc(value * 10000000)) < 1) { decimals = 10 } else if (Math.abs(Math.trunc(value * 100000000000)) < 1) { value = 0; decimals = 0 } - if (decimals < minDecimals) { decimals = minDecimals } + if (decimals < minDecimals) { decimals = minDecimals } - let returnValue = Number(value).toFixed(decimals) - return returnValue + let returnValue = Number(value).toFixed(decimals) + return returnValue } -function convertTimeFrameToName(pTimeFrame) { - for (let i = 0; i < dailyTimeFramesArray.length; i++) { - let period = dailyTimeFramesArray[i] - if (period[0] === pTimeFrame) { - return period[1] - } +function convertTimeFrameToName (pTimeFrame) { + for (let i = 0; i < dailyTimeFramesArray.length; i++) { + let period = dailyTimeFramesArray[i] + if (period[0] === pTimeFrame) { + return period[1] } + } - for (let i = 0; i < marketTimeFramesArray.length; i++) { - let period = marketTimeFramesArray[i] - if (period[0] === pTimeFrame) { - return period[1] - } + for (let i = 0; i < marketTimeFramesArray.length; i++) { + let period = marketTimeFramesArray[i] + if (period[0] === pTimeFrame) { + return period[1] } + } } -function nextPorwerOf10(number) { - for (let i = -10; i <= 10; i++) { - if (number < Math.pow(10, i)) { - return Math.pow(10, i) - } +function nextPorwerOf10 (number) { + for (let i = -10; i <= 10; i++) { + if (number < Math.pow(10, i)) { + return Math.pow(10, i) } + } } -function pad(str, max) { - str = str.toString() - return str.length < max ? pad('0' + str, max) : str +function pad (str, max) { + str = str.toString() + return str.length < max ? pad('0' + str, max) : str } -function moveToUserPosition(container, currentDate, currentRate, coordinateSystem, ignoreX, ignoreY, mousePosition, fitFunction) { - let targetPoint = { - x: currentDate.valueOf(), - y: currentRate - } +function moveToUserPosition (container, currentDate, currentRate, coordinateSystem, ignoreX, ignoreY, mousePosition, fitFunction) { + let targetPoint = { + x: currentDate.valueOf(), + y: currentRate + } /* Put this point in the coordinate system of the UI.projects.foundations.spaces.chartingSpace.viewport */ - targetPoint = coordinateSystem.transformThisPoint(targetPoint) - targetPoint = UI.projects.foundations.utilities.coordinateTransformations.transformThisPoint(targetPoint, container) + targetPoint = coordinateSystem.transformThisPoint(targetPoint) + targetPoint = UI.projects.foundations.utilities.coordinateTransformations.transformThisPoint(targetPoint, container) - let displaceVector + let displaceVector - let targetNoZoom = UI.projects.foundations.spaces.chartingSpace.viewport.unTransformThisPoint(targetPoint) - let mouseNoZoom = UI.projects.foundations.spaces.chartingSpace.viewport.unTransformThisPoint(mousePosition) + let targetNoZoom = UI.projects.foundations.spaces.chartingSpace.viewport.unTransformThisPoint(targetPoint) + let mouseNoZoom = UI.projects.foundations.spaces.chartingSpace.viewport.unTransformThisPoint(mousePosition) - displaceVector = { - x: mouseNoZoom.x - targetNoZoom.x, - y: mouseNoZoom.y - targetNoZoom.y + displaceVector = { + x: mouseNoZoom.x - targetNoZoom.x, + y: mouseNoZoom.y - targetNoZoom.y + } + + if (ignoreX) { displaceVector.x = 0 } + if (ignoreY) { displaceVector.y = 0 } + + container.displace(displaceVector) +} + +function removeTime (datetime) { + if (datetime === undefined) { return } + + let dateOnly = new Date(Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) + + return dateOnly +} + +function newUniqueId () { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8) + return v.toString(16) + }) +} + +function splitTextIntoPhrases (text, wordsPerLine) { + try { + let splittedLabel = text.split(' ') + let phrases = [] + let phrase = '' + let wordCount = 0 + for (let i = 0; i < splittedLabel.length; i++) { + phrase = phrase + splittedLabel[i] + wordCount++ + + if (i < splittedLabel.length - 1 && wordCount < wordsPerLine) { + phrase = phrase + ' ' + } + if (wordCount >= wordsPerLine) { + phrases.push(phrase) + phrase = '' + wordCount = 0 + } } - - if (ignoreX) { displaceVector.x = 0 } - if (ignoreY) { displaceVector.y = 0 } - - container.displace(displaceVector) -} - -function removeTime(datetime) { - if (datetime === undefined) { return } - - let dateOnly = new Date(Math.trunc(datetime.valueOf() / ONE_DAY_IN_MILISECONDS) * ONE_DAY_IN_MILISECONDS) - - return dateOnly -} - -function newUniqueId() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8) - return v.toString(16) - }) -} - -function splitTextIntoPhrases(text, wordsPerLine) { - try { - let splittedLabel = text.split(' ') - let phrases = [] - let phrase = '' - let wordCount = 0 - for (let i = 0; i < splittedLabel.length; i++) { - phrase = phrase + splittedLabel[i] - wordCount++ - - if (i < splittedLabel.length - 1 && wordCount < wordsPerLine) { - phrase = phrase + ' ' - } - if (wordCount >= wordsPerLine) { - phrases.push(phrase) - phrase = '' - wordCount = 0 - } - } - if (wordCount > 0) { - phrases.push(phrase) - } - return phrases - } catch (err) { - console.log(err.stack) - return [] + if (wordCount > 0) { + phrases.push(phrase) } + return phrases + } catch (err) { + console.log(err.stack) + return [] + } } -function getTextWidth(text) { - var metrics = browserCanvasContext.measureText(text); - return metrics.width; -} \ No newline at end of file +function getTextWidth (text) { + var metrics = browserCanvasContext.measureText(text) + return metrics.width +}