Listing of queries.js


//------------------------------------------------------------------ // queries.js: Queries supporting routines //------------------------------------------------------------------ //------------------------------------------------------------------ // on load, display the list of queries (if any) //------------------------------------------------------------------ window.onload = function() { Element.hide("fQuery"); CAS.editMode = 0; loadQueries(); } //------------------------------------------------------------------ // load queries respecting the current filter //------------------------------------------------------------------ function loadQueries() { new Ajax.Request("QueryData.ashx", { method: 'post', parameters: 'postType=loadQueries', onSuccess: printQueries, onFailure: function(r) { alert(r.statusText); } } ); } //------------------------------------------------------------------ // postback: print the queries for the current filter //------------------------------------------------------------------ function printQueries(r) { try { eval("var queries=" + r.responseText); } catch (ex) { alert("Error reading queries: " + r.responseText); return; } //------------------------------------------------------------------ // first clear out prior rows. //------------------------------------------------------------------ var tt = $("tQueries"); for (var i=2, n=tt.rows.length; i<n; i++) { tt.deleteRow(2); } //------------------------------------------------------------------ // two columns for each of the new rows //------------------------------------------------------------------ var q; for (var i=0; i<queries.length; i++) { var tr = new TableRow(queries[i].querySys, 'tQueries', 'editQuery'); tr.add(queries[i].querySys, "right"); q = queries[i].query; if (queries[i].reviewed == 1) q += " " + utfCheck(); // UTF checkmark tr.add(q, "left"); } } //------------------------------------------------------------------ // edit query //------------------------------------------------------------------ function editQuery(querySys) { CAS.query = {}; // clear global variable if (CAS.editMode > 0) return; CAS.editMode = 1; //------------------------------------------------------------------ // put up a blank form (10, 10) inside the current viewport //------------------------------------------------------------------ displayForm('fQuery', 900, 400); //------------------------------------------------------------------ // if existing form, fetch the data //------------------------------------------------------------------ if (querySys > 0) { new Ajax.Request("QueryData.ashx", { method: 'post', parameters: "postType=getQuery&querySys=" + querySys, onSuccess: formatQuery, onFailure: function(r) { alert(r.statusText); } } ); } else { formatQuery(); } } //------------------------------------------------------------------ // postback: format the contents of the query //------------------------------------------------------------------ function formatQuery(r) { CAS.query.data = {}; var z = CAS.query.data; //-------------------------------------------------------------- // get variable values // CAS.query.data = all of the data loaded from the query // CAS.query.form = created form //-------------------------------------------------------------- if (r) { try { eval("z=" + r.responseText); } catch (ex) { alert("Error reading query: " + r.responseText); editCancel(); return; } if (z.error) { alert("Error:\n" + z.error); editCancel(); return false; } z.postType = "update"; } else { z.postType = "add"; z.querySys = 0; z.reviewed = 0; z.query = ""; z.code = ""; z.deleted = 0; } //-------------------------------------------------------------- // put up the data one field as a time //-------------------------------------------------------------- var f = new FormLayout('fQuery'); CAS.query.form = f; f.add('querySys', 'fixed', 0, 0, {'label':'Index', 'value':z.querySys}); f.add('query', 'text', 0, 30, {'label':'Query', 'width': 880, 'value':z.query}); f.add('code', 'note', 0, 60, {'width':880, 'height':300, 'label':'Code', 'value':z.code}); $('code').style.fontFamily = "Courier New"; if (CAS.userSys == 1) { f.add('reviewed', 'check', 150, 0, {'label':'Reviewed', 'value':z.reviewed}); $('reviewed').checked = z.reviewed; } else { var rev = z.reviewed == 1 ? utfCheck() : utfNo(); f.add('reviewed', 'fixed', 150, 0, {'label':'Reviewed', 'value':rev}); } //-------------------------------------------------------------- // a few hidden fields //-------------------------------------------------------------- f.add('querySys', 'hidden', 0, 0, {'value':z.querySys}); f.add('postType', 'hidden', 0, 0, {'value':z.postType}); //-------------------------------------------------------------- // and the buttons. false ensures no form submission //-------------------------------------------------------------- f.add('', 'icon', 830, 0, // can always undo {'image':'icon_undo.gif', 'action':'editCancel();return false;'}); if (CAS.userSys == 1 || z.reviewed == 0) // can't save a reviewed solution f.add('', 'icon', 800, 0, {'image':'icon_save.gif', 'action':'editSave();return false;'}); if (z.querySys > 0 && (CAS.userSys == 1 || z.reviewed == 0)) // can't trash a reviewed solution f.add('', 'icon', 860, 0, {'image':'icon_trash.gif', 'action':'editDelete();return false;'}); } //------------------------------------------------------------------ // editCancel: exit edit without saving anything //------------------------------------------------------------------ function editCancel() { endEdit(); return false; } //------------------------------------------------------------------ // endEdit: cleanup //------------------------------------------------------------------ function endEdit() { Element.hide('fQuery'); $('fQuery').innerHTML = ''; CAS.editMode = 0; } //------------------------------------------------------------------ // editDelete: drop the current record //------------------------------------------------------------------ function editDelete() { $('postType').value = "delete"; editSubmit(); endEdit(); return false; } //------------------------------------------------------------------ // editSave: save results of edit //------------------------------------------------------------------ function editSave() { if (normalize($('query').value) == "") { alert("You must enter a name for the query."); return; } editSubmit(); endEdit(); return false; } //------------------------------------------------------------------ // editSubmit: submit data for update/insert //------------------------------------------------------------------ function editSubmit() { new Ajax.Request("QueryData.ashx", { method: 'post', parameters: $('fQuery').serialize(), onSuccess: checkSubmit, onFailure: function(r) { alert(r.statusText); } } ); } //------------------------------------------------------------------ // postback: just check for error //------------------------------------------------------------------ function checkSubmit(r) { try { eval("var z=" + r.responseText); } catch (ex) { alert("Error reading queries: " + r.responseText); return; } if (z.error) { alert("Error:\n" + z.error); } loadQueries(); }