| module.exports = function ( graph ){ |
| |
| var PREDEFINED = 0, |
| FILE_UPLOAD = 1, |
| JSON_URL = 2, |
| IRI_URL = 3; |
| |
| var PROGRESS_BAR_ERROR = 0, |
| PROGRESS_BAR_BUSY = 1, |
| PROGRESS_BAR_PERCENT = 2, |
| progressBarMode = 1; |
| |
| var loadingWasSuccessFul = false; |
| var missingImportsWarning = false; |
| var showLoadingDetails = false; |
| var visibilityStatus = true; |
| |
| var DEFAULT_JSON_NAME = "foaf"; |
| var conversion_sessionId; |
| |
| |
| var loadingModule = {}, |
| menuContainer = d3.select("#loading-info"), |
| loadingInfoContainer = d3.select("#loadingInfo-container"), |
| detailsButton = d3.select("#show-loadingInfo-button"), |
| closeButton = d3.select("#loadingIndicator_closeButton"), |
| ontologyMenu, |
| ontologyIdentifierFromURL; |
| |
| |
| loadingModule.checkForScreenSize = function (){ |
| |
| var w = graph.options().width(), |
| h = graph.options().height(); |
| |
| if ( w < 270 ) { |
| d3.select("#loading-info").classed("hidden", true); |
| } else { |
| |
| if ( visibilityStatus === true ) { |
| d3.select("#loading-info").classed("hidden", false); |
| } else { |
| d3.select("#loading-info").classed("hidden", true); |
| } |
| } |
| if ( h < 150 ) { |
| d3.select("#loadingInfo_msgBox").classed("hidden", true); |
| } else { |
| d3.select("#loadingInfo_msgBox").classed("hidden", false); |
| } |
| if ( h < 80 ) { |
| d3.select("#progressBarContext").classed("hidden", true); |
| d3.select("#layoutLoadingProgressBarContainer").style("height", "20px"); |
| } else { |
| d3.select("#progressBarContext").classed("hidden", false); |
| d3.select("#layoutLoadingProgressBarContainer").style("height", "50px"); |
| } |
| }; |
| |
| loadingModule.getMessageVisibilityStatus = function (){ |
| return visibilityStatus; |
| }; |
| |
| loadingModule.getProgressBarMode = function (){ |
| return progressBarMode; |
| }; |
| |
| loadingModule.successfullyLoadedOntology = function (){ |
| return loadingWasSuccessFul; |
| }; |
| |
| loadingModule.missingImportsWarning = function (){ |
| return missingImportsWarning; |
| }; |
| |
| loadingModule.setOntologyMenu = function ( m ){ |
| ontologyMenu = m; |
| }; |
| |
| loadingModule.showErrorDetailsMessage = function (){ |
| loadingModule.showLoadingIndicator(); |
| loadingModule.expandDetails(); |
| d3.select("#loadingIndicator_closeButton").classed("hidden", true); |
| loadingModule.scrollDownDetails(); |
| }; |
| |
| loadingModule.showWarningDetailsMessage = function (){ |
| d3.select("#currentLoadingStep").style("color", "#ff0"); |
| loadingModule.showLoadingIndicator(); |
| loadingModule.expandDetails(); |
| d3.select("#loadingIndicator_closeButton").classed("hidden", false); |
| loadingModule.scrollDownDetails(); |
| }; |
| |
| loadingModule.scrollDownDetails = function (){ |
| var scrollingElement = d3.select("#loadingInfo-container").node(); |
| scrollingElement.scrollTop = scrollingElement.scrollHeight; |
| }; |
| |
| loadingModule.hideLoadingIndicator = function (){ |
| d3.select("#loading-info").classed("hidden", true); |
| visibilityStatus = false; |
| }; |
| |
| loadingModule.showLoadingIndicator = function (){ |
| d3.select("#loading-info").classed("hidden", false); |
| visibilityStatus = true; |
| |
| }; |
| |
| |
| loadingModule.setup = function (){ |
| |
| loadingInfoContainer.classed("hidden", !showLoadingDetails); |
| detailsButton.on("click", function (){ |
| showLoadingDetails = !showLoadingDetails; |
| loadingInfoContainer.classed("hidden", !showLoadingDetails); |
| detailsButton.classed("accordion-trigger-active", showLoadingDetails); |
| }); |
| |
| closeButton.on("click", function (){ |
| menuContainer.classed("hidden", true); |
| }); |
| loadingModule.setBusyMode(); |
| }; |
| |
| loadingModule.updateSize = function (){ |
| showLoadingDetails = !(loadingInfoContainer.classed("hidden")); |
| loadingInfoContainer.classed("hidden", !showLoadingDetails); |
| detailsButton.classed("accordion-trigger-active", showLoadingDetails); |
| }; |
| |
| loadingModule.getDetailsState = function (){ |
| return showLoadingDetails; |
| }; |
| |
| loadingModule.expandDetails = function (){ |
| showLoadingDetails = true; |
| loadingInfoContainer.classed("hidden", !showLoadingDetails); |
| detailsButton.classed("accordion-trigger-active", showLoadingDetails); |
| }; |
| |
| loadingModule.collapseDetails = function (){ |
| showLoadingDetails = false; |
| loadingInfoContainer.classed("hidden", !showLoadingDetails); |
| detailsButton.classed("accordion-trigger-active", showLoadingDetails); |
| }; |
| |
| loadingModule.setBusyMode = function (){ |
| d3.select("#currentLoadingStep").style("color", "#fff"); |
| d3.select("#progressBarValue").node().innherHTML = ""; |
| d3.select("#progressBarValue").style("width", "20%"); |
| d3.select("#progressBarValue").classed("busyProgressBar", true); |
| progressBarMode = PROGRESS_BAR_BUSY; |
| }; |
| |
| loadingModule.setSuccessful = function (){ |
| d3.select("#currentLoadingStep").style("color", "#0f0"); |
| }; |
| |
| loadingModule.setErrorMode = function (){ |
| d3.select("#currentLoadingStep").style("color", "#f00"); |
| d3.select("#progressBarValue").style("width", "0%"); |
| d3.select("#progressBarValue").classed("busyProgressBar", false); |
| d3.select("#progressBarValue").node().innherHTML = ""; |
| progressBarMode = PROGRESS_BAR_ERROR; |
| }; |
| |
| loadingModule.setPercentMode = function (){ |
| d3.select("#currentLoadingStep").style("color", "#fff"); |
| d3.select("#progressBarValue").classed("busyProgressBar", false); |
| d3.select("#progressBarValue").node().innherHTML = "0%"; |
| d3.select("#progressBarValue").style("width", "0%"); |
| progressBarMode = PROGRESS_BAR_PERCENT; |
| }; |
| |
| loadingModule.setPercentValue = function ( val ){ |
| d3.select("#progressBarValue").node().innherHTML = val; |
| }; |
| |
| loadingModule.emptyGraphContentError = function (){ |
| graph.clearGraphData(); |
| ontologyMenu.append_message_toLastBulletPoint("<span style='color:red;'>failed</span>"); |
| ontologyMenu.append_message_toLastBulletPoint("<br><span style=\"color:red;\">Error: Received empty graph</span>"); |
| loadingWasSuccessFul = false; |
| graph.handleOnLoadingError(); |
| loadingModule.setErrorMode(); |
| }; |
| |
| loadingModule.isThreadCanceled = function (){ |
| |
| }; |
| |
| loadingModule.initializeLoader = function ( storeCache ){ |
| if ( storeCache === true && graph.getCachedJsonObj() !== null ) { |
| |
| var cachedContent = JSON.stringify(graph.getCachedJsonObj()); |
| var cachedName = ontologyIdentifierFromURL; |
| ontologyMenu.setCachedOntology(cachedName, cachedContent); |
| } |
| conversion_sessionId = -10000; |
| ontologyMenu.setConversionID(conversion_sessionId); |
| ontologyMenu.stopLoadingTimer(); |
| graph.clearGraphData(); |
| loadingModule.setBusyMode(); |
| loadingModule.showLoadingIndicator(); |
| loadingModule.collapseDetails(); |
| missingImportsWarning = false; |
| d3.select("#loadingIndicator_closeButton").classed("hidden", true); |
| ontologyMenu.clearDetailInformation(); |
| }; |
| |
| |
| loadingModule.parseUrlAndLoadOntology = function ( storeCache ){ |
| var autoStore = true; |
| if ( storeCache === false ) { |
| autoStore = false; |
| } |
| |
| graph.clearAllGraphData(); |
| loadingModule.initializeLoader(autoStore); |
| var urlString = String(location); |
| var parameterArray = identifyParameter(urlString); |
| ontologyIdentifierFromURL = DEFAULT_JSON_NAME; |
| loadGraphOptions(parameterArray); |
| var loadingMethod = identifyOntologyLoadingMethod(ontologyIdentifierFromURL); |
| d3.select("#progressBarValue").node().innerHTML = " "; |
| switch ( loadingMethod ) { |
| case 0: |
| loadingModule.from_presetOntology(ontologyIdentifierFromURL); |
| break; |
| case 1: |
| loadingModule.from_FileUpload(ontologyIdentifierFromURL); |
| break; |
| case 2: |
| loadingModule.from_JSON_URL(ontologyIdentifierFromURL); |
| break; |
| case 3: |
| loadingModule.from_IRI_URL(ontologyIdentifierFromURL); |
| break; |
| default: |
| console.log("Could not identify loading method , or not IMPLEMENTED YET"); |
| } |
| }; |
| |
| |
| |
| |
| |
| |
| |
| loadingModule.from_JSON_URL = function ( fileName ){ |
| var filename = decodeURIComponent(fileName.slice("url=".length)); |
| ontologyIdentifierFromURL = filename; |
| |
| var ontologyContent = ""; |
| if ( ontologyMenu.cachedOntology(filename) ) { |
| ontologyMenu.append_bulletPoint("Loading already cached ontology: " + filename); |
| ontologyContent = ontologyMenu.cachedOntology(filename); |
| loadingWasSuccessFul = true; |
| parseOntologyContent(ontologyContent); |
| |
| } else { |
| |
| ontologyMenu.append_message("Retrieving ontology from JSON URL " + filename); |
| requestServerTimeStampForJSON_URL(ontologyMenu.callbackLoad_JSON_FromURL, ["read?json=" + filename, filename]); |
| } |
| }; |
| |
| function requestServerTimeStampForJSON_URL( callback, parameter ){ |
| d3.xhr("serverTimeStamp", "application/text", function ( error, request ){ |
| if ( error ) { |
| |
| ontologyMenu.append_bulletPoint("Could not establish connection to OWL2VOWL service"); |
| fallbackForJSON_URL(callback, parameter); |
| } else { |
| conversion_sessionId = request.responseText; |
| ontologyMenu.setConversionID(conversion_sessionId); |
| parameter.push(conversion_sessionId); |
| callback(parameter); |
| } |
| }); |
| |
| } |
| |
| loadingModule.requestServerTimeStampForDirectInput = function ( callback, text ){ |
| d3.xhr("serverTimeStamp", "application/text", function ( error, request ){ |
| if ( error ) { |
| |
| ontologyMenu.append_bulletPoint("Could not establish connection to OWL2VOWL service"); |
| loadingModule.setErrorMode(); |
| ontologyMenu.append_message_toLastBulletPoint("<br><span style='color:red'>Could not connect to OWL2VOWL service </span>"); |
| loadingModule.showErrorDetailsMessage(); |
| d3.select("#progressBarValue").style("width", "0%"); |
| d3.select("#progressBarValue").classed("busyProgressBar", false); |
| d3.select("#progressBarValue").text("0%"); |
| |
| } else { |
| conversion_sessionId = request.responseText; |
| ontologyMenu.setConversionID(conversion_sessionId); |
| callback(text, ["conversionID" + conversion_sessionId, conversion_sessionId]); |
| } |
| }); |
| }; |
| |
| loadingModule.from_IRI_URL = function ( fileName ){ |
| |
| var filename = decodeURIComponent(fileName.slice("iri=".length)); |
| ontologyIdentifierFromURL = filename; |
| |
| var ontologyContent = ""; |
| if ( ontologyMenu.cachedOntology(filename) ) { |
| ontologyMenu.append_bulletPoint("Loading already cached ontology: " + filename); |
| ontologyContent = ontologyMenu.cachedOntology(filename); |
| loadingWasSuccessFul = true; |
| parseOntologyContent(ontologyContent); |
| } else { |
| |
| var encoded = encodeURIComponent(filename); |
| ontologyMenu.append_bulletPoint("Retrieving ontology from IRI: " + filename); |
| requestServerTimeStampForIRI_Converte(ontologyMenu.callbackLoad_Ontology_FromIRI, ["convert?iri=" + encoded, filename]); |
| } |
| }; |
| |
| loadingModule.fromFileDrop = function ( fileName, file ){ |
| d3.select("#progressBarValue").node().innerHTML = " "; |
| loadingModule.initializeLoader(false); |
| |
| ontologyMenu.append_bulletPoint("Retrieving ontology from dropped file: " + fileName); |
| var ontologyContent = ""; |
| |
| |
| |
| if ( fileName.match(/\.json$/) ) { |
| ontologyMenu.setConversionID(-10000); |
| var reader = new FileReader(); |
| reader.readAsText(file); |
| reader.onload = function (){ |
| ontologyContent = reader.result; |
| ontologyIdentifierFromURL = fileName; |
| parseOntologyContent(ontologyContent); |
| }; |
| } else { |
| |
| |
| var parameterArray = [file, fileName]; |
| requestServerTimeStamp(ontologyMenu.callbackLoadFromOntology, parameterArray); |
| } |
| }; |
| |
| |
| loadingModule.from_FileUpload = function ( fileName ){ |
| loadingModule.setBusyMode(); |
| var filename = decodeURIComponent(fileName.slice("file=".length)); |
| ontologyIdentifierFromURL = filename; |
| var ontologyContent = ""; |
| if ( ontologyMenu.cachedOntology(filename) ) { |
| ontologyMenu.append_bulletPoint("Loading already cached ontology: " + filename); |
| ontologyContent = ontologyMenu.cachedOntology(filename); |
| loadingWasSuccessFul = true; |
| parseOntologyContent(ontologyContent); |
| |
| } else { |
| |
| ontologyMenu.append_bulletPoint("Retrieving ontology from file: " + filename); |
| |
| var selectedFile = d3.select("#file-converter-input").property("files")[0]; |
| |
| if ( !selectedFile || (filename && (filename !== selectedFile.name)) ) { |
| ontologyMenu.append_message_toLastBulletPoint("<br><span style=\"color:red;\">No cached version of \"" + filename + "\" was found.</span><br>Please reupload the file."); |
| loadingModule.setErrorMode(); |
| d3.select("#progressBarValue").classed("busyProgressBar", false); |
| graph.handleOnLoadingError(); |
| return; |
| } else { |
| filename = selectedFile.name; |
| } |
|
|
|
|
| |
| |
| if ( filename.match(/\.json$/) ) { |
| ontologyMenu.setConversionID(-10000); |
| var reader = new FileReader(); |
| reader.readAsText(selectedFile); |
| reader.onload = function (){ |
| ontologyContent = reader.result; |
| ontologyIdentifierFromURL = filename; |
| parseOntologyContent(ontologyContent); |
| }; |
| } else { |
| |
| |
| var parameterArray = [selectedFile, filename]; |
| requestServerTimeStamp(ontologyMenu.callbackLoadFromOntology, parameterArray); |
| } |
| } |
| }; |
| |
| function fallbackForJSON_URL( callback, parameter ){ |
| ontologyMenu.append_message_toLastBulletPoint("<br>Trying to convert with other communication protocol."); |
| callback(parameter); |
| |
| } |
| |
| function fallbackConversion( parameter ){ |
| ontologyMenu.append_message_toLastBulletPoint("<br>Trying to convert with other communication protocol."); |
| var file = parameter[0]; |
| var name = parameter[1]; |
| var formData = new FormData(); |
| formData.append("ontology", file); |
| |
| var xhr = new XMLHttpRequest(); |
| xhr.open("POST", "convert", true); |
| var ontologyContent = ""; |
| xhr.onload = function (){ |
| if ( xhr.status === 200 ) { |
| ontologyContent = xhr.responseText; |
| ontologyMenu.setCachedOntology(name, ontologyContent); |
| ontologyIdentifierFromURL = name; |
| missingImportsWarning = true; |
| ontologyMenu.append_message_toLastBulletPoint("<br>Success, <span style='color:yellow'>but you are using a deprecated OWL2VOWL service!<span>"); |
| parseOntologyContent(ontologyContent); |
| } |
| }; |
| |
| |
| xhr.onreadystatechange = function (){ |
| if ( xhr.readyState === 4 && xhr.status === 0 ) { |
| ontologyMenu.append_message_toLastBulletPoint("<br>Old protocol also failed to establish connection to OWL2VOWL service!"); |
| loadingModule.setErrorMode(); |
| ontologyMenu.append_bulletPoint("Failed to load ontology"); |
| ontologyMenu.append_message_toLastBulletPoint("<br><span style='color:red'>Could not connect to OWL2VOWL service </span>"); |
| loadingModule.showErrorDetailsMessage(); |
| } |
| }; |
| xhr.send(formData); |
| } |
| |
| function requestServerTimeStampForIRI_Converte( callback, parameterArray ){ |
| d3.xhr("serverTimeStamp", "application/text", function ( error, request ){ |
| loadingModule.setBusyMode(); |
| if ( error ) { |
| |
| ontologyMenu.append_bulletPoint("Could not establish connection to OWL2VOWL service"); |
| loadingModule.setErrorMode(); |
| ontologyMenu.append_bulletPoint("Failed to load ontology"); |
| ontologyMenu.append_message_toLastBulletPoint("<br><span style='color:red'>Could not connect to OWL2VOWL service </span>"); |
| loadingModule.showErrorDetailsMessage(); |
| } else { |
| conversion_sessionId = request.responseText; |
| ontologyMenu.setConversionID(conversion_sessionId); |
| |
| parameterArray[0] = parameterArray[0] + "&sessionId=" + conversion_sessionId; |
| parameterArray.push(conversion_sessionId); |
| callback(parameterArray); |
| } |
| }); |
| } |
| |
| function requestServerTimeStamp( callback, parameterArray ){ |
| d3.xhr("serverTimeStamp", "application/text", function ( error, request ){ |
| if ( error ) { |
| |
| ontologyMenu.append_bulletPoint("Could not establish connection to OWL2VOWL service"); |
| fallbackConversion(parameterArray); |
| } else { |
| conversion_sessionId = request.responseText; |
| ontologyMenu.setConversionID(conversion_sessionId); |
| console.log("Request Session ID:" + conversion_sessionId); |
| callback(parameterArray[0], parameterArray[1], conversion_sessionId); |
| } |
| }); |
| } |
| |
| loadingModule.directInput = function ( text ){ |
| ontologyMenu.clearDetailInformation(); |
| parseOntologyContent(text); |
| }; |
| |
| loadingModule.loadFromOWL2VOWL = function ( ontoContent, filename ){ |
| loadingWasSuccessFul = false; |
| |
| var old = d3.select("#bulletPoint_container").node().innerHTML; |
| if ( old.indexOf("(with warnings)") !== -1 ) { |
| missingImportsWarning = true; |
| } |
| |
| if ( ontologyMenu.cachedOntology(ontoContent) ) { |
| ontologyMenu.append_bulletPoint("Loading already cached ontology: " + filename); |
| parseOntologyContent(ontoContent); |
| } else { |
| parseOntologyContent(ontoContent); |
| } |
| }; |
| |
| loadingModule.from_presetOntology = function ( selectedOntology ){ |
| ontologyMenu.append_bulletPoint("Retrieving ontology: " + selectedOntology); |
| loadPresetOntology(selectedOntology); |
| }; |
| |
| function loadPresetOntology( ontology ){ |
| |
| var f2r; |
| var loadingNewOntologyForEditor=false; |
| if ( ontology.indexOf("new_ontology") !== -1 ) { |
| loadingModule.hideLoadingIndicator(); |
| graph.showEditorHintIfNeeded(); |
| f2r = "./data/new_ontology.json"; |
| loadingNewOntologyForEditor=true; |
| } |
| |
| loadingWasSuccessFul = false; |
| var ontologyContent = ""; |
| if ( ontologyMenu.cachedOntology(ontology) ) { |
| ontologyMenu.append_bulletPoint("Loading already cached ontology: " + ontology); |
| ontologyContent = ontologyMenu.cachedOntology(ontology); |
| loadingWasSuccessFul = true; |
| loadingModule.showLoadingIndicator(); |
| parseOntologyContent(ontologyContent); |
| |
| } else { |
| |
| |
| var fileToRead = "./data/" + ontology + ".json"; |
| if ( f2r ) { |
| fileToRead = f2r; |
| } |
| |
| d3.xhr(fileToRead, "application/json", function ( error, request ){ |
| var loadingSuccessful = !error; |
| if ( loadingSuccessful ) { |
| ontologyContent = request.responseText; |
| parseOntologyContent(ontologyContent); |
| } else { |
|
|
| if (loadingNewOntologyForEditor){ |
| ontologyContent = '{\n' + |
| ' "_comment": "Empty ontology for WebVOWL Editor",\n' + |
| ' "header": {\n' + |
| ' "languages": [\n' + |
| ' "en"\n' + |
| ' ],\n' + |
| ' "baseIris": [\n' + |
| ' "http://www.w3.org/2000/01/rdf-schema"\n' + |
| ' ],\n' + |
| ' "iri": "http://visualdataweb.org/newOntology/",\n' + |
| ' "title": {\n' + |
| ' "en": "New ontology"\n' + |
| ' },\n' + |
| ' "description": {\n' + |
| ' "en": "New ontology description"\n' + |
| ' }\n' + |
| ' },\n' + |
| ' "namespace": [],\n' + |
| ' "metrics": {\n' + |
| ' "classCount": 0,\n' + |
| ' "datatypeCount": 0,\n' + |
| ' "objectPropertyCount": 0,\n' + |
| ' "datatypePropertyCount": 0,\n' + |
| ' "propertyCount": 0,\n' + |
| ' "nodeCount": 0,\n' + |
| ' "individualCount": 0\n' + |
| ' }\n' + |
| '}\n'; |
| parseOntologyContent(ontologyContent); |
| }else{ |
| |
| ontologyMenu.append_bulletPoint("Failed to load: " + ontology); |
| if (error.status===0){ |
| ontologyMenu.append_message_toLastBulletPoint(" <span style='color: red'>ERROR STATUS:</span> " + error.status); |
| if (window.location.toString().startsWith("file:/")){ |
| ontologyMenu.append_message_toLastBulletPoint("<br><p>WebVOWL runs in a local instance.</p>"); |
| ontologyMenu.append_message_toLastBulletPoint("<p>CORS prevents to automatically load files on host system.</p>"); |
| ontologyMenu.append_message_toLastBulletPoint("<p>You can load preprocessed ontologies (i.e. VOWL-JSON files) using the upload feature in the ontology menu or by dragging the files and dropping them on the canvas.</p>"); |
| ontologyMenu.append_message_toLastBulletPoint("<p><i>Hint: </i>Note that the conversion of ontologies into the VOWL-JSON format is not part of WebVOWL but requires an additional converter such as OWL2VOWL.</p>"); |
| ontologyMenu.append_message_toLastBulletPoint("<p>Ontologies can be created using the editor mode (i.e. activate editing mode in <b>Modes</b> menu and create a new ontology using the <b>Ontology</b> menu.</p>"); |
| } |
| }else { |
| ontologyMenu.append_message_toLastBulletPoint(" <span style='color: red'>ERROR STATUS:</span> " + error.status); |
| } |
|
|
|
|
|
|
| graph.handleOnLoadingError(); |
| loadingModule.setErrorMode(); |
| } |
| } |
| }); |
| } |
| } |
| |
| |
| |
| function parseOntologyContent( content ){ |
| |
| ontologyMenu.append_bulletPoint("Reading ontology graph ... "); |
| var _loader = ontologyMenu.getLoadingFunction(); |
| _loader(content, ontologyIdentifierFromURL, "noAlternativeNameYet"); |
| } |
| |
| loadingModule.notValidJsonFile = function (){ |
| graph.clearGraphData(); |
| ontologyMenu.append_message_toLastBulletPoint(" <span style='color:red;'>failed</span>"); |
| ontologyMenu.append_message_toLastBulletPoint("<br><span style='color:red;'>Error: Received empty graph</span>"); |
| loadingWasSuccessFul = false; |
| graph.handleOnLoadingError(); |
| |
| }; |
| |
| loadingModule.validJsonFile = function (){ |
| ontologyMenu.append_message_toLastBulletPoint("done"); |
| loadingWasSuccessFul = true; |
| }; |
| |
| |
| |
| |
| function identifyParameter( url ){ |
| var numParameters = (url.match(/#/g) || []).length; |
| |
| var paramArray = []; |
| if ( numParameters > 0 ) { |
| var tokens = url.split("#"); |
| |
| for ( var i = 1; i < tokens.length; i++ ) { |
| if ( tokens[i].length === 0 ) { |
| |
| paramArray[paramArray.length - 1] = paramArray[paramArray.length - 1] + "#"; |
| } else { |
| paramArray.push(tokens[i]); |
| } |
| } |
| } |
| return paramArray; |
| } |
| |
| |
| function loadGraphOptions( parameterArray ){ |
| var optString = "opts="; |
| |
| function loadDefaultConfig(){ |
| graph.options().setOptionsFromURL(graph.options().defaultConfig(), false); |
| } |
| |
| function loadCustomConfig( opts ){ |
| var changeEditingFlag = false; |
| var defObj = graph.options().defaultConfig(); |
| for ( var i = 0; i < opts.length; i++ ) { |
| var keyVal = opts[i].split('='); |
| if ( keyVal[0] === "editorMode" ) { |
| changeEditingFlag = true; |
| } |
| defObj[keyVal[0]] = keyVal[1]; |
| } |
| graph.options().setOptionsFromURL(defObj, changeEditingFlag); |
| } |
| |
| function identifyOptions( paramArray ){ |
| if ( paramArray[0].indexOf(optString) >= 0 ) { |
| |
| var parameterLength = paramArray[0].length; |
| var givenOptionsStr = paramArray[0].substr(5, parameterLength - 6); |
| var optionsArray = givenOptionsStr.split(';'); |
| loadCustomConfig(optionsArray); |
| } else { |
| ontologyIdentifierFromURL = paramArray[0]; |
| loadDefaultConfig(); |
| } |
| } |
| |
| function identifyOptionsAndOntology( paramArray ){ |
| |
| if ( paramArray[0].indexOf(optString) >= 0 ) { |
| |
| var parameterLength = paramArray[0].length; |
| var givenOptionsStr = paramArray[0].substr(5, parameterLength - 6); |
| var optionsArray = givenOptionsStr.split(';'); |
| loadCustomConfig(optionsArray); |
| } else { |
| loadDefaultConfig(); |
| } |
| ontologyIdentifierFromURL = paramArray[1]; |
| } |
| |
| switch ( parameterArray.length ) { |
| case 0: |
| loadDefaultConfig(); |
| break; |
| case 1: |
| identifyOptions(parameterArray); |
| break; |
| case 2: |
| identifyOptionsAndOntology(parameterArray); |
| break; |
| default : |
| console.log("To many input parameters , loading default config"); |
| loadDefaultConfig(); |
| ontologyIdentifierFromURL = "ERROR_TO_MANY_INPUT_PARAMETERS"; |
| } |
| } |
| |
| |
| function identifyOntologyLoadingMethod( url ){ |
| var iriKey = "iri="; |
| var urlKey = "url="; |
| var fileKey = "file="; |
| |
| var method = -1; |
| if ( url.substr(0, fileKey.length) === fileKey ) { |
| method = FILE_UPLOAD; |
| } else if ( url.substr(0, urlKey.length) === urlKey ) { |
| method = JSON_URL; |
| } else if ( url.substr(0, iriKey.length) === iriKey ) { |
| method = IRI_URL; |
| } else { |
| method = PREDEFINED; |
| } |
| return method; |
| } |
| |
| return loadingModule; |
| } |
| ; |
|
|
|
|
|
|