python-hserver/hserver/manage/api.js

137 lines
2.7 KiB
JavaScript

function $(id){
return document.getElementById(id);
}
function pathSplit(path){
var s = path.split("/");
if (s[0] == ""){
s.splice(0,1);
}
return s;
}
function pathJoin(path){
return path.join("/");
}
function callURL(url, content, asyncReceiver = null, method = "GET"){
var r = new XMLHttpRequest();
var async = asyncReceiver != null;
r.open(method,url,async);
if (async) {
r.onload = asyncReceiver;
}
r.send(content);
if (!async){
return r.response;
}
}
function callJson(method, parameters, asyncReceiver = null){
var url = "<%=request.self(0)%>_hm_json";
var reply = callURL(url, JSON.stringify( { "method": method, "parameters": parameters } ), null, "POST" );
return JSON.parse( reply );
}
function loadHTML(container,source){
container.innerHTML = source;
var scripts = container.getElementsByTagName("script");
for (var n=0;n<scripts.length;n++){
eval.call(window,scripts[n].innerText);
}
}
function treeRefresh(objPath){
var treediv = $("tree");
var url = "/_hm_tree";
var treesource = callURL(url);
treediv.innerHTML = treesource;
editorLoad(objPath);
}
function editorClear(){
window.editor_fields = {}
}
function editorDeclareControl(ctl, field = null){
if (field == null){
field = ctl.getAttribute("name");
}
window.editor_fields[ field ] = ctl;
}
function editorLoad(objPath){
var editor = $("editor");
var url = objPath + "/_hm_edit";
var treesource = callURL(url);
editorClear();
loadHTML(editor, treesource);
}
function editorApply(objPath){
var formData = FormData();
for (var field in window.editor_fields){
if (window.editor_fields.hasOwnProperty( field )){
}
}
formData.append( )
}
function editorSave(){
alert("Submit");
return false;
}
function objCreate( objPath, objTypeName, objName){
var reply = callJson( "objCreate", { "objTypeName" : objTypeName, "objName" : objName, "objPath" : objPath } )
return reply;
}
function objRemove( objPath ){
return callJson( "objRemove", { "objPath": objPath } );
}
function onAddObjectButton(button,objPath,parentID){
var ctlObjName = "objName-" + parentID;
var objName = $(ctlObjName).value;
var objTypeName = $("objTypeName-" + parentID).value;
var reply = objCreate( pathSplit(objPath), objTypeName, objName );
if (reply.result != true){
alert("The request didn't return success.\n" + reply.exception);
} else {
treeRefresh("<%=request.SCRIPT_NAME%>" + objPath);
}
}
function onRemoveButton(button,objPath){
var reply = objRemove( pathSplit(objPath) );
if (reply.result == true){
var path = pathSplit(objPath);
path.splice(path.length-1, 1);
treeRefresh("<%=request.SCRIPT_NAME%>" + pathJoin( path ) );
} else {
alert("The request didn't return success.\n" + reply.exception);
}
}