140 lines
3.6 KiB
JavaScript
140 lines
3.6 KiB
JavaScript
var loadCompleteFunctions = []
|
|
var system = null
|
|
|
|
var prevent_edit_name = true
|
|
var draw_graph = true
|
|
var header = null
|
|
var reset = null
|
|
|
|
String.prototype.endsWith = function(suffix) {
|
|
return this.indexOf(suffix, this.length - suffix.length) !== -1;
|
|
};
|
|
|
|
function walkAvailableFields(schema, parents, callback){
|
|
for (var s in schema) {
|
|
var sub = schema[s]
|
|
if(sub instanceof Object && "dtype" in sub){
|
|
callback(sub, s, parents)
|
|
continue
|
|
}
|
|
if (s == "SCHEMES" || s == "SCHEMES_multi"){
|
|
for(var op in sub){
|
|
var scheme_name = sub[op]
|
|
var scheme_data = schemes[scheme_name]
|
|
parents.push(scheme_name)
|
|
walkAvailableFields(scheme_data, parents, callback)
|
|
parents.pop()
|
|
}
|
|
}else{
|
|
parents.push(s)
|
|
walkAvailableFields(sub, parents, callback)
|
|
parents.pop()
|
|
}
|
|
}
|
|
}
|
|
|
|
function edit_individual(){
|
|
button_list = []
|
|
calc_button_list = []
|
|
buttons = 0
|
|
|
|
var outwrap = jQuery("#data_fields_wrap"); //Fields wrapper
|
|
scope_list = globals["scope"]
|
|
jQuery(outwrap).html()
|
|
str = recursive_create(repository, "global", system, true)
|
|
jQuery(outwrap).append(str).fadeIn(500)
|
|
// now add buttons
|
|
for( i in button_list ){
|
|
attach_add_btn(i)
|
|
}
|
|
jQuery("#1_remove").hide()
|
|
|
|
component_added()
|
|
}
|
|
|
|
function loadData(data){
|
|
if(!data.hasOwnProperty('DATA')){
|
|
alert("Load failed");
|
|
return;
|
|
}
|
|
reset = data;
|
|
button_list = []
|
|
buttons = 0
|
|
load_button_list = []
|
|
calc_button_list = []
|
|
var str
|
|
system = header["SYSTEM"]
|
|
units = header["UNITS"]
|
|
repository = data["DATA"]; //JSON.parse
|
|
graphData = data["GRAPH"]
|
|
|
|
if (repository == null){
|
|
jQuery("#dcl_list").hide()
|
|
return;
|
|
}
|
|
connecting_graphs = header["CONNECT"]
|
|
schemes = header["SCHEMES"]
|
|
globals = header["GLOBALS"]
|
|
var scope = globals["scope"]
|
|
|
|
provide_hooks()
|
|
|
|
if(document.getElementById("data_fields_wrap") != null){
|
|
edit_individual();
|
|
}
|
|
for(f in loadCompleteFunctions){//makes graphs work somehow???
|
|
loadCompleteFunctions[f]()
|
|
}
|
|
}
|
|
|
|
function provide_hooks(){
|
|
if(!global_readonly){
|
|
jQuery("#dcl_wrap").html('<div id="status">Press save to store any changes</div>' +
|
|
'<form id="dcl_data">' +
|
|
'<p id=dcl_edtbuttons>' +
|
|
'<button class="submitButton" type="button" onclick="loadDCLJSONFile()">Load JSON</button>' +
|
|
'<button class="submitButton" type="button" onclick="submitDCLChanges()">Save JSON</button>' +
|
|
'<button class="submitButton" type="button" onclick="loadData(reset)">Reset</button>' +
|
|
'<button class="submitButton" type="button" onclick="exportData()">Export HTML</button>' +
|
|
'</p>' +
|
|
'<div id="data_fields_wrap"></div>' +
|
|
'</form>' +
|
|
'<div id="dcl_graph_fields"></div>')
|
|
}else{
|
|
jQuery("#dcl_wrap").html(
|
|
'<form id="dcl_data">' +
|
|
'<div id="data_fields_wrap"></div>' +
|
|
'</form>' +
|
|
'<div id="dcl_graph_fields"></div>')
|
|
}
|
|
}
|
|
|
|
function dcl_startup(){
|
|
if (draw_graph){
|
|
loadCompleteFunctions = [resetGraphs,update_names,load_graph,redraw_graph,check_unnecessary_graphs]
|
|
}else{
|
|
loadCompleteFunctions = [update_names]
|
|
}
|
|
errfunc = function(jqXHR, textStatus, errorThrown){
|
|
jQuery("#dcl_wrap").html("error " + textStatus + "\nServer:" + jqXHR.responseText)
|
|
}
|
|
var promises = [
|
|
jQuery.ajax({
|
|
url: "index_files/schema.json",
|
|
dataType: 'json',
|
|
success: function(data) {header = data;},
|
|
error: errfunc,
|
|
}),
|
|
jQuery.ajax({
|
|
url: "index_files/site.json",
|
|
dataType: 'json',
|
|
success: function(data) {reset = data},
|
|
error: errfunc,
|
|
})
|
|
];
|
|
Promise.all(promises).then(function(){
|
|
if(reset && header)
|
|
loadData(reset);
|
|
})
|
|
}
|