Merge branch 'develop' of https://github.com/AAMasters/BackendServers into develop
This commit is contained in:
commit
89516ded79
7 files changed
+161
-86
No files matched your search
@@ -28,6 +28,7 @@ function newAppLoader() {
|
||||
'Globals.js',
|
||||
|
||||
'AppSchema.js',
|
||||
'DocSchema.js',
|
||||
'Workspace.js',
|
||||
|
||||
'ChartingSpace/EdgeEditor.js',
|
||||
@@ -57,7 +58,8 @@ function newAppLoader() {
|
||||
'DesignSpace/Workspace/FunctionLibraries/DataMineFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/DataStorageFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/ChartingSpaceFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js',
|
||||
'DesignSpace/Workspace/FunctionLibraries/IncludesFunctions.js',
|
||||
|
||||
'Utilities/CoordinateTransformations.js',
|
||||
'Utilities/DateRateTransformations.js',
|
||||
@@ -73,6 +75,7 @@ function newAppLoader() {
|
||||
'Utilities/Meshes.js',
|
||||
'Utilities/NodeChildren.js',
|
||||
'Utilities/Menu.js',
|
||||
'Utilities/Dates.js',
|
||||
|
||||
'Panels/LayersPanel.js',
|
||||
'Panels/UpDownButton.js',
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
/*!
|
||||
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
||||
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
||||
*/@font-face{font-family:'FontAwesome';src:url('../Fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../Fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../Fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../Fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../Fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../Fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f03Line truncated
|
||||
+20
-14
@@ -5,16 +5,15 @@
|
||||
<title>Superalgos</title>
|
||||
<meta name="description" content="Free and Open Source Crypto Trading Tools">
|
||||
<link rel="stylesheet" href="main.css" type="text/css" charset="utf-8" />
|
||||
<link rel="stylesheet" href="font-awasome.css" type="text/css" />
|
||||
<link rel="shortcut icon" type="image/png/ico" href="Images/favicon.ico" />
|
||||
<script type="text/javascript" src="WebServer/require.js"></script>
|
||||
<script type="text/javascript" src="WebServer/AppPreLoader.js"></script>
|
||||
<script src="externalScripts/CCapture.all.min.js"></script>
|
||||
|
||||
<!-- Documentation Style Sheets -->
|
||||
<!--
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
-->
|
||||
<!-- -->
|
||||
|
||||
<script type="text/javascript">
|
||||
function loadCanvas() {
|
||||
try {
|
||||
@@ -43,29 +42,36 @@
|
||||
<div id="canvasApp"></div>
|
||||
<div id="docApp" style="position:fixed; top:100000px; left:100000px">
|
||||
<iframe id="docIFrame" style="border:none; " height="2000"
|
||||
width="900" ></iframe>
|
||||
</div> <!-- src="https://julian-molina.github.io/Documentation/" -->
|
||||
width="900"></iframe>
|
||||
</div> <!-- -->
|
||||
<div id="textAreaDiv"></div>
|
||||
<div id="inputDiv" style="font-family:saira condensed;"> </div>
|
||||
|
||||
<!-- Tutorial Step Template -->
|
||||
<!-- Tutorial Template Divs -->
|
||||
<div id="tutorialDiv" class="tutorial-step" style="position:fixed; top:100000px; left:100000px;"></div>
|
||||
<div id="tutorialFormDiv" class="tutorial-form" style="position:fixed; top:100000px; left:100000px;">
|
||||
<form>
|
||||
<table class="tutorial-buttonsTable">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="tutorial-font-small tutorial-stop-button" onclick="canvas.tutorialSpace.stop()" value="">Stop Tutorial</label>
|
||||
<td align = "center">
|
||||
<label class="tutorial-font-small tutorial-stop-button" onclick="canvas.tutorialSpace.stop()"
|
||||
value=""> Stop </label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="tutorial-font-small tutorial-skip-button" onclick="canvas.tutorialSpace.skip()" value="">Skip / Later</label>
|
||||
<td align = "center">
|
||||
<label class="tutorial-font-small tutorial-skip-button" onclick="canvas.tutorialSpace.skip()"
|
||||
value=""> Skip </label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="tutorial-font-small tutorial-done-button" onclick="canvas.tutorialSpace.done()" value="">Done / Next</label>
|
||||
<td align = "center">
|
||||
<label class="tutorial-font-small tutorial-previous-button" onclick="canvas.tutorialSpace.previous()"
|
||||
value="">Previous</label>
|
||||
</td>
|
||||
<td align = "center">
|
||||
<label class="tutorial-font-small tutorial-next-button" onclick="canvas.tutorialSpace.next()"
|
||||
value=""> Next </label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
||||
+133
-71
@@ -454,61 +454,52 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
}
|
||||
break
|
||||
|
||||
case 'IncludedNames':
|
||||
case 'IncludedFileNames':
|
||||
{
|
||||
const fs = require('fs')
|
||||
let folder
|
||||
let includedNames = {
|
||||
includedDataMines: [],
|
||||
includedTradingMines: [],
|
||||
includedTradingSystems: [],
|
||||
includedSuperScripts: [],
|
||||
includedTradingEngines: []
|
||||
switch (requestParameters[2]) {
|
||||
case 'Data-Mines': {
|
||||
folder = process.env.DATA_MINES_PATH + '/'
|
||||
break
|
||||
}
|
||||
case 'Trading-Mines': {
|
||||
folder = process.env.TRADING_MINES_PATH + '/'
|
||||
break
|
||||
}
|
||||
case 'Trading-Systems': {
|
||||
folder = process.env.TRADING_SYSTEMS_PATH + '/'
|
||||
break
|
||||
}
|
||||
case 'Trading-Engines': {
|
||||
folder = process.env.TRADING_ENGINES_PATH + '/'
|
||||
break
|
||||
}
|
||||
case 'Super-Scripts': {
|
||||
folder = process.env.SUPER_SCRIPTS_PATH + '/'
|
||||
break
|
||||
}
|
||||
case 'Tutorials': {
|
||||
folder = process.env.TUTORIALS_PATH + '/'
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
folder = process.env.DATA_MINES_PATH + '/'
|
||||
fs.readdir(folder, (err, files) => {
|
||||
includedNames.includedDataMines = files
|
||||
folder = process.env.TRADING_SYSTEMS_PATH + '/'
|
||||
fs.readdir(folder, (err, files) => {
|
||||
includedNames.includedTradingSystems = files
|
||||
folder = process.env.SUPER_SCRIPTS_PATH + '/'
|
||||
fs.readdir(folder, (err, files) => {
|
||||
includedNames.includedSuperScripts = files
|
||||
folder = process.env.TRADING_ENGINES_PATH + '/'
|
||||
fs.readdir(folder, (err, files) => {
|
||||
includedNames.includedTradingEngines = files
|
||||
folder = process.env.TRADING_MINES_PATH + '/'
|
||||
fs.readdir(folder, (err, files) => {
|
||||
includedNames.includedTradingMines = files
|
||||
respondWithContent(JSON.stringify(includedNames), response)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
respondWithContent(JSON.stringify(files), response)
|
||||
})
|
||||
}
|
||||
break
|
||||
|
||||
case 'AppSchema.js':
|
||||
{
|
||||
let fs = require('fs')
|
||||
sendSchema(process.env.APP_SCHEMA_PATH, 'AppSchema', 'getAppSchema')
|
||||
}
|
||||
break
|
||||
|
||||
try {
|
||||
let filePath = process.env.APP_SCHEMA_PATH + 'AppSchema.json'
|
||||
fs.readFile(filePath, onFileRead)
|
||||
} catch (e) {
|
||||
console.log('[ERROR] Error reading the App Schema.', e)
|
||||
}
|
||||
|
||||
function onFileRead(err, appSchema) {
|
||||
if (err) {
|
||||
respondWithContent(undefined, response)
|
||||
} else {
|
||||
let responseContent = 'function getAppSchema(){ return ' + appSchema + '}'
|
||||
respondWithContent(responseContent, response)
|
||||
}
|
||||
}
|
||||
case 'DocSchema.js':
|
||||
{
|
||||
sendSchema(process.env.DOC_SCHEMA_PATH, 'DocSchema', 'getDocSchema')
|
||||
}
|
||||
break
|
||||
|
||||
@@ -517,7 +508,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
let fs = require('fs')
|
||||
|
||||
try {
|
||||
let filePath = process.env.WORKSPACE_PATH + 'Workspace.json'
|
||||
let filePath = process.env.DEFAULT_WORKSPACE_PATH + '/Default.json'
|
||||
fs.readFile(filePath, onFileRead)
|
||||
} catch (e) {
|
||||
console.log('[ERROR] Error reading the Workspace.', e)
|
||||
@@ -536,30 +527,60 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
|
||||
case 'ListWorkspaces':
|
||||
{
|
||||
let dirPath = process.env.MY_WORKSPACES_PATH
|
||||
let allWorkspaces = []
|
||||
readIncludedWorkspaces()
|
||||
function readIncludedWorkspaces() {
|
||||
let dirPath = process.env.WORKSPACES_PATH
|
||||
try {
|
||||
let fs = require('fs')
|
||||
fs.readdir(dirPath, onDirRead)
|
||||
|
||||
try {
|
||||
let fs = require('fs')
|
||||
|
||||
fs.readdir(dirPath, onDirRead)
|
||||
|
||||
function onDirRead(err, fileList) {
|
||||
if (err) {
|
||||
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
|
||||
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
|
||||
return
|
||||
} else {
|
||||
respondWithContent(JSON.stringify(fileList), response)
|
||||
return
|
||||
function onDirRead(err, fileList) {
|
||||
if (err) {
|
||||
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
|
||||
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
|
||||
return
|
||||
} else {
|
||||
let updatedFileList = []
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
let name = 'Included -> ' + fileList[i]
|
||||
updatedFileList.push(name)
|
||||
}
|
||||
allWorkspaces = allWorkspaces.concat(updatedFileList)
|
||||
readMyWorkspaces()
|
||||
return
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
|
||||
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
|
||||
return
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
|
||||
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
|
||||
return
|
||||
}
|
||||
|
||||
function readMyWorkspaces() {
|
||||
let dirPath = process.env.MY_WORKSPACES_PATH
|
||||
try {
|
||||
let fs = require('fs')
|
||||
fs.readdir(dirPath, onDirRead)
|
||||
|
||||
function onDirRead(err, fileList) {
|
||||
if (err) {
|
||||
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
|
||||
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
|
||||
return
|
||||
} else {
|
||||
allWorkspaces = allWorkspaces.concat(fileList)
|
||||
respondWithContent(JSON.stringify(allWorkspaces), response)
|
||||
return
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
|
||||
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
break
|
||||
|
||||
@@ -571,6 +592,14 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
}
|
||||
break
|
||||
|
||||
case 'LoadIncludedWorkspace':
|
||||
{
|
||||
let fileName = unescape(requestParameters[2])
|
||||
let filePath = process.env.WORKSPACES_PATH + '/' + fileName + '.json'
|
||||
respondWithFile(filePath, response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'SaveWorkspace':
|
||||
{
|
||||
getBody(processRequest)
|
||||
@@ -609,36 +638,42 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
}
|
||||
break
|
||||
|
||||
case 'DataMines':
|
||||
case 'Data-Mines':
|
||||
{
|
||||
respondWithFile(process.env.DATA_MINES_PATH + '/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'TradingMines':
|
||||
case 'Trading-Mines':
|
||||
{
|
||||
respondWithFile(process.env.TRADING_MINES_PATH + '/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'TradingSystems':
|
||||
case 'Trading-Systems':
|
||||
{
|
||||
respondWithFile(process.env.TRADING_SYSTEMS_PATH + '/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'SuperScripts':
|
||||
case 'Super-Scripts':
|
||||
{
|
||||
respondWithFile(process.env.SUPER_SCRIPTS_PATH + '/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'TradingEngines':
|
||||
case 'Trading-Engines':
|
||||
{
|
||||
respondWithFile(process.env.TRADING_ENGINES_PATH + '/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'Tutorials':
|
||||
{
|
||||
respondWithFile(process.env.TUTORIALS_PATH + '/' + requestParameters[2], response)
|
||||
}
|
||||
break
|
||||
|
||||
case 'Storage':
|
||||
{
|
||||
respondWithFile(process.env.STORAGE_PATH + '/' + request.url.substring(9), response)
|
||||
@@ -647,7 +682,13 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
|
||||
case 'main.css':
|
||||
{
|
||||
mainCSS()
|
||||
sendStyleSheet('main.css')
|
||||
}
|
||||
break
|
||||
|
||||
case 'font-awasome.css':
|
||||
{
|
||||
sendStyleSheet('font-awasome.css')
|
||||
}
|
||||
break
|
||||
|
||||
@@ -657,11 +698,31 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
}
|
||||
}
|
||||
|
||||
function mainCSS() {
|
||||
function sendSchema(filePath, fileName, functionName) {
|
||||
let fs = require('fs')
|
||||
|
||||
try {
|
||||
filePath = filePath + fileName + '.json'
|
||||
fs.readFile(filePath, onFileRead)
|
||||
} catch (e) {
|
||||
console.log('[ERROR] Error reading the ' + fileName, e)
|
||||
}
|
||||
|
||||
function onFileRead(err, schema) {
|
||||
if (err) {
|
||||
respondWithContent(undefined, response)
|
||||
} else {
|
||||
let responseContent = 'function ' + functionName + '(){ return ' + schema + '}'
|
||||
respondWithContent(responseContent, response)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function sendStyleSheet(fileName) {
|
||||
let fs = require('fs')
|
||||
try {
|
||||
let fileName = process.env.PATH_TO_WEB_SERVER + 'WebServer/main.css'
|
||||
fs.readFile(fileName, onFileRead)
|
||||
let filePath = process.env.PATH_TO_WEB_SERVER + 'WebServer/' + fileName
|
||||
fs.readFile(filePath, onFileRead)
|
||||
|
||||
function onFileRead(err, file) {
|
||||
try {
|
||||
@@ -722,6 +783,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
|
||||
if (!err) {
|
||||
respondWithContent(file.toString(), response)
|
||||
} else {
|
||||
console.log('File requested not found: ' + fileName)
|
||||
respondWithContent(undefined, response)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user