170 lines
6.5 KiB
JavaScript
170 lines
6.5 KiB
JavaScript
|
|
|
|
function newAppPostLoader() {
|
|
const MODULE_NAME = 'Post Loader'
|
|
const ERROR_LOG = true
|
|
const logger = newWebDebugLog()
|
|
|
|
|
|
let thisObject = {
|
|
start: start
|
|
}
|
|
|
|
return thisObject
|
|
|
|
function start() {
|
|
try {
|
|
/* Moving PROJECTS_ARRAY to the global variable */
|
|
PROJECTS_ARRAY = window.PROJECTS
|
|
window.PROJECTS = undefined
|
|
|
|
setBrowserEvents()
|
|
setupProjectsSchema()
|
|
|
|
function setupProjectsSchema() {
|
|
httpRequest(undefined, 'ProjectsSchema', onResponse)
|
|
|
|
function onResponse(err, file) {
|
|
PROJECTS_SCHEMA = JSON.parse(file)
|
|
setupSchemas()
|
|
}
|
|
}
|
|
|
|
function setupSchemas() {
|
|
|
|
let totalWebServerCalls = 0
|
|
let webServerResponses = 0
|
|
|
|
for (let i = 0; i < PROJECTS_ARRAY.length; i++) {
|
|
let project = PROJECTS_ARRAY[i]
|
|
let schemas = {
|
|
array: {
|
|
appSchema: [],
|
|
docsNodeSchema: [],
|
|
docsConceptSchema: [],
|
|
docsTopicSchema: []
|
|
},
|
|
map: {
|
|
appSchema: new Map(),
|
|
docsNodeSchema: new Map(),
|
|
docsConceptSchema: new Map(),
|
|
docsTopicSchema: new Map()
|
|
}
|
|
}
|
|
SCHEMAS_BY_PROJECT.set(project, schemas)
|
|
|
|
totalWebServerCalls++
|
|
httpRequest(undefined, 'Schema/' + project + '/AppSchema', onResponseAppSchema)
|
|
|
|
function onResponseAppSchema(err, schema) {
|
|
try {
|
|
schemas.array.appSchema = JSON.parse(schema)
|
|
|
|
for (let j = 0; j < schemas.array.appSchema.length; j++) {
|
|
let nodeDefinition = schemas.array.appSchema[j]
|
|
let key = nodeDefinition.type
|
|
schemas.map.appSchema.set(key, nodeDefinition)
|
|
}
|
|
} catch (err) {
|
|
console.log(err.stack)
|
|
}
|
|
|
|
webServerResponses++
|
|
if (webServerResponses === totalWebServerCalls) { startCanvas() }
|
|
}
|
|
|
|
totalWebServerCalls++
|
|
httpRequest(undefined, 'Schema/' + project + '/DocsNodeSchema', onResponseDocSchema)
|
|
|
|
function onResponseDocSchema(err, schema) {
|
|
try {
|
|
schemas.array.docsNodeSchema = JSON.parse(schema)
|
|
|
|
for (let j = 0; j < schemas.array.docsNodeSchema.length; j++) {
|
|
let nodeDefinition = schemas.array.docsNodeSchema[j]
|
|
let key = nodeDefinition.type
|
|
schemas.map.docsNodeSchema.set(key, nodeDefinition)
|
|
}
|
|
} catch (err) {
|
|
console.log(err.stack)
|
|
}
|
|
|
|
webServerResponses++
|
|
if (webServerResponses === totalWebServerCalls) { startCanvas() }
|
|
}
|
|
|
|
totalWebServerCalls++
|
|
httpRequest(undefined, 'Schema/' + project + '/DocsConceptSchema', onResponseConceptSchema)
|
|
|
|
function onResponseConceptSchema(err, schema) {
|
|
try {
|
|
schemas.array.docsConceptSchema = JSON.parse(schema)
|
|
|
|
for (let j = 0; j < schemas.array.docsConceptSchema.length; j++) {
|
|
let nodeDefinition = schemas.array.docsConceptSchema[j]
|
|
let key = nodeDefinition.type
|
|
schemas.map.docsConceptSchema.set(key, nodeDefinition)
|
|
}
|
|
} catch (err) {
|
|
console.log(err.stack)
|
|
}
|
|
|
|
webServerResponses++
|
|
if (webServerResponses === totalWebServerCalls) { startCanvas() }
|
|
}
|
|
|
|
totalWebServerCalls++
|
|
httpRequest(undefined, 'Schema/' + project + '/DocsTopicSchema', onResponseTopicSchema)
|
|
|
|
function onResponseTopicSchema(err, schema) {
|
|
try {
|
|
schemas.array.docsTopicSchema = JSON.parse(schema)
|
|
|
|
for (let j = 0; j < schemas.array.docsTopicSchema.length; j++) {
|
|
let nodeDefinition = schemas.array.docsTopicSchema[j]
|
|
let key = nodeDefinition.type
|
|
schemas.map.docsTopicSchema.set(key, nodeDefinition)
|
|
}
|
|
} catch (err) {
|
|
console.log(err.stack)
|
|
}
|
|
|
|
webServerResponses++
|
|
if (webServerResponses === totalWebServerCalls) { startCanvas() }
|
|
}
|
|
}
|
|
}
|
|
|
|
function startCanvas() {
|
|
/* If this method is executed for a second time, it should finalize the current execution structure */
|
|
if (canvas !== undefined) { canvas.finalize() }
|
|
|
|
canvas = newCanvas()
|
|
canvas.initialize()
|
|
}
|
|
} catch (err) {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] start -> err = ' + err.stack) }
|
|
}
|
|
}
|
|
|
|
function setBrowserEvents() {
|
|
window.onbeforeunload = saveWorkspace
|
|
|
|
/* handles backspace and refresh(F5) from keyboard */
|
|
window.manageBackRefresh = function (event) {
|
|
var tag = event.target.tagName.toLowerCase()
|
|
if (event.keyCode === 8 && tag !== 'input' && tag !== 'textarea') { // Backbutton pressed
|
|
saveWorkspace()
|
|
} else if (event.keyCode === 116) { // F5 pressed
|
|
saveWorkspace()
|
|
}
|
|
}
|
|
|
|
window.addEventListener('keydown', window.manageBackRefresh)
|
|
|
|
function saveWorkspace() {
|
|
UI.projects.superalgos.spaces.designSpace.workspace.save()
|
|
}
|
|
}
|
|
}
|