📄 main.js
字号:
/* * $Id: main.js,v 1.1 2006/08/07 10:41:25 source Exp $ * * This file is part of the OpenLink Software Ajax Toolkit (OAT) project. * * Copyright (C) 2006 Ondrej Zara and OpenLink Software * * See LICENSE file for details. */var fd = false;var dialogs = {};var tbar = false;function set_filename(name) { $("corner").innerHTML = name.split("/").pop(); IO.filename = name;}var Connection = { get_settings:function() { /* read relevant settings from inputboxes */ OAT.Xmla.endpoint = $v("endpoint"); OAT.Xmla.dsn = $v("dsn"); OAT.Xmla.user = $v("user"); OAT.Xmla.password = $v("password"); OAT.Ajax.user = OAT.Xmla.user; OAT.Ajax.password = OAT.Xmla.password; var h = $('options_type_http'); var d = $('options_type_dav'); h.checked = ($v('login_put_type') == "http"); d.checked = ($v('login_put_type') == "dav"); h.__checked = (h.checked ? "1" : "0"); d.__checked = (d.checked ? "1" : "0"); }, discover_dsn:function() { /* discover datasources */ Connection.get_settings(); var ref=function(pole) { if (pole.length) { dialogs.connection.okBtn.removeAttribute("disabled"); } var select = $("dsn"); OAT.Dom.clear(select); for (var i=0;i<pole.length;i++) { OAT.Dom.option(pole[i],pole[i],select); } /* for all rows */ } /* callback */ OAT.Xmla.discover(ref); }, use_dsn:function() { /* discover catalogs */ Connection.get_settings(); var ref=function(pole) { OAT.Dimmer.hide(); ask_for_catalogs(pole,1); } /* callback */ OAT.Xmla.dbschema(ref); var qRef = function(q) { OAT.SqlQueryData.columnQualifierPre = q[0]; OAT.SqlQueryData.columnQualifierPost = q[1]; } OAT.Xmla.qualifiers(qRef); }} /* Connection */function ask_for_catalogs(pole,firstTime) { /* this is tricky - virtuoso sometimes requires name/pwd for table detection. this is why we first send only one request and if it succeeds, we ask for remaining catalogs */ if (firstTime && pole.length) { /* first, testing catalog */ var name = pole[0]; var callback = function() { ask_for_catalogs(pole,0); } OAT.Xmla.tables(name,callback); } else { /* ok, first request was successfully returned - go for it for real */ Filter.clear(); if (pole.length) { var lastCatalog = pole[pole.length-1]; } for (var i=0;i<pole.length;i++) { var name = pole[i]; var callback = function(catalog_name,arr) { read_tables(catalog_name,arr,lastCatalog); } OAT.Xmla.tables(name,callback); } /* for each catalog */ /* no catalogs present? */ if (!pole.length) { var callback = function(catalog,arr) { read_tables("",arr,""); } OAT.Xmla.tables("",callback); } }}function read_tables(catalog_name,pole,lastCatalog) { /* we have 'pole' of tables in this catalog */ for (var i=0;i<pole[0].length;i++) { var schema = pole[1][i]; var table = pole[0][i]; Filter.addTable(catalog_name,schema,table); } if (catalog_name == lastCatalog) { Filter.create(); }}var Filter = { addTable:function(catalog,schema,table) { Filter.tables.push([catalog,schema,table]); if (!(schema in Filter.distinct_schemas)) { Filter.distinct_schemas[schema] = 1; } if (!(catalog in Filter.distinct_catalogs)) { Filter.distinct_catalogs[catalog] = 1; } }, clear:function() { OAT.Dom.clear("ds_schemas"); OAT.Dom.clear("ds_catalogs"); Filter.distinct_catalogs = {}; Filter.distinct_schemas = {}; Filter.tables = []; }, create:function() { /* create catalog & schema lists */ OAT.Dom.option("[all]","-1","ds_schemas"); /* first value */ OAT.Dom.option("[all]","-1","ds_catalogs"); for (var p in Filter.distinct_catalogs) { /* other values */ if (p == ""){ OAT.Dom.option("[no catalog]",p,"ds_catalogs"); } else { OAT.Dom.option(p,p,"ds_catalogs"); } } for (var p in Filter.distinct_schemas) { OAT.Dom.option(p,p,"ds_schemas"); } $("ds_schemas").selectedIndex = 0; /* first is selected */ $("ds_catalogs").selectedIndex = 0; Filter.apply(); /* when filter is created, display all tables */ }, apply:function() { var okArr = []; for (var i=0;i<Filter.tables.length;i++) { var item = Filter.tables[i]; var ok = 1; var cVal = $v("ds_catalogs"); var sVal = $v("ds_schemas"); if (cVal != "-1" && cVal != item[0]) { ok = 0; } if (sVal != "-1" && sVal != item[1]) { ok = 0; } if (ok) { okArr.push(item); } } /* sort tables which are ok */ var compare = function(a,b) { var n1 = a[2].toLowerCase(); var n2 = b[2].toLowerCase(); if (n1 < n2) { return -1; } if (n1 > n2) { return 1; } return 0; } okArr.sort(compare); /* sort by table names */ /* add them to tree */ OAT.Dom.clear("ds_tables"); for (var i=0;i<okArr.length;i++) { var item = okArr[i]; var label = (item[0] != "" ? item[1]+"."+item[2] : item[2]); var o = OAT.Dom.option(label,item[2],"ds_tables"); o.schema = item[1]; o.catalog = item[0]; } } /* Filter.apply */}var IO = { filename:"", save:function(xml,name) { var send_ref = function() { return xml; } var recv_ref = function(data) { alert('Saved.'); } set_filename(name); OAT.Ajax.command(OAT.Ajax.PUT + OAT.Ajax.AUTH_BASIC,name,send_ref,recv_ref,OAT.Ajax.TYPE_TEXT); }, load:function() { if ($("options_type_http").checked) { var name = OAT.Dav_old.getFile("/DAV/home/"+OAT.Xmla.user,".xml"); if (!name) { return; } set_filename(name); $("corner").innerHTML = name; var callback = function(data) { fd.loadXML(data); } OAT.Ajax.command(OAT.Ajax.GET + OAT.Ajax.AUTH_BASIC,name,function(){return '';},callback,OAT.Ajax.TYPE_TEXT); } if ($("options_type_dav").checked) { var options = { mode:'open_dialog', user:OAT.Xmla.user, pass:OAT.Xmla.password, pathDefault:'/DAV/home/'+OAT.Xmla.user+'/', onOpenClick:function(path,fname,data){ set_filename(path+fname); fd.loadXML(data); return true; /* return false will keep browser open */ } }; OAT.WebDav.open(options); } }, preview:function() { if (IO.filename == "") { alert("Design not saved yet!"); return; } window.open("http://"+window.location.host+IO.filename,"Design preview"); }}var DS = { /* datasources / bindings */ selectedForm:false, applyBinding:function() { var f = DS.selectedForm; var ntype = 0; if ($("bind_sql").checked) { ntype = 1; } if ($("bind_soap").checked) { ntype = 2; } if ($("bind_rest").checked) { ntype = 3; } if (ntype != f.ds.type) { f.fieldBinding.selfFields = []; f.fieldBinding.masterFields = []; f.fieldBinding.masterForms = []; f.ds.type = ntype; } switch (f.ds.type) { case 1: if ($("bind_sql_query").checked) { f.ds.subtype = 1; f.ds.query = $v("bind_sql_query_text"); } if ($("bind_sql_file").checked) { f.ds.subtype = 2; f.ds.url = $("bind_sql_file_text").innerHTML; } if ($("bind_sql_table").checked) { f.ds.subtype = 3; f.ds.url = $("bind_sql_table_text").innerHTML; } break; case 2: f.ds.url = $v("bind_soap_wsdl"); break; case 3: f.ds.url = $v("bind_rest_url"); f.ds.subtype = $v("bind_rest_type"); f.ds.xpath = ($v("bind_rest_xpath") == "1" ? 1 : 0); break; } f.refresh(function(){fd.selectForm(f);},true); DS.selectedForm = false; }, readBinding:function(form) { DS.selectedForm = form;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -