/** * This file is a part of MyWebSQL package * * @file: js/query.js * @author Samnan ur Rehman * @copyright (c) 2008-2014 Samnan ur Rehman * @web http://mywebsql.net * @license http://mywebsql.net/license */ var resultInfo = ""; // saves info of edited result set during editing var editTableName = ""; // name of editing table from where the result came up var currentQuery = ""; // used for refresh command in the interface var queryID = ''; // unique query id var editKey = []; // unique or primary key(s) for editing var totalRecords = 0; // number of records fetched (global query) var totalPages = 1; // number of pages to show var currentPage = 1; // currently displayed page var numRecords = 0; // number of records fetched on this page var sql_delimiter = ";\n"; function getResults(i) { xfrm = getFrame(); if (i == 0) { if (xfrm.document.getElementById('results').innerText) // IE x = xfrm.document.getElementById('results').innerText; else if (xfrm.document.getElementById('results').textContent) //firefox x = xfrm.document.getElementById('results').textContent; else x = xfrm.document.getElementById('results').innerHTML; } else if (i == 1) x = xfrm.document.getElementById('results').innerHTML; else if (i == 2) x = xfrm.document.getElementById('title').innerHTML; return x; } function queryGo(type) { strQuery = getSqlCodeSelection(); strMsg = __("all selected"); if (strQuery == "") { strQuery = getSqlCode(); strMsg = __("all"); } if ($.trim(strQuery) == "") { jAlert(__("Please type in one or more queries in the sql editor!"), __("Execute query"), function() { focusEditor(); }); return; } querySaveCache(strQuery); if (type == 1) { msg = str_replace('{{SELECTED}}', strMsg, __('Are you sure you want to execute {{SELECTED}} queries?')); optionsConfirm(msg, 'query.all', function(result, id, confirm_always) { if (result) { if (confirm_always) optionsConfirmSave(id); wrkfrmSubmit("queryall", "", "", strQuery); } }); } else wrkfrmSubmit("query", "", "", strQuery); focusEditor(); } function queryDelete() { qBig = ""; discardRows = []; // rows that are newly added and now being deleted checked = $('#result_form input:checked').not('.check-all'); if (checked.length == 0) return ""; checked.each(function() { row = $(this).parent().parent(); // newly added rows can be simply discarded if(row.hasClass('n')) discardRows.push(row); else qBig += makeDeleteClause(row); }); checked.prop('checked', false); $('#dataTable input.check-all').prop('checked', false); $(discardRows).each(function() { this.remove(); }); // return or execute queries if (arguments.length > 0 && arguments[0] == true) return qBig; showNavBtns('query', 'queryall'); // do we have any live records to delete, or only discardables if (qBig != "") wrkfrmSubmit("queryall", "", "", qBig); } function querySave() { editRows = $('#dataTable tbody tr.x').add('#dataTable tbody tr.n'); if (editRows.length == 0) return ""; qBig = ""; editRows.each(function() { newRecord = $(this).hasClass('n'); // generate new and updated records queries separately var upd = ""; var ins_fields = []; var ins_data = []; editCols = $(this).find('td.x'); editCols.each(function() { data = $(this).data('edit'); f = getFieldName($(this).index()-2); if (newRecord) { if (typeof data != "object") { data = {'setNull':true, 'value':''}; } ins_fields.push(DB.quote(f)); ins_data.push( data.setNull ? "NULL" : DB.escape( data.value ) ); } else if (typeof data == "object") { if (data.setNull) upd += DB.quote(f) + "=" + "NULL,"; else upd += DB.quote(f) + "=" + DB.escape( data.value ) + ','; } }); // only generate query if at least one field is added (for new records) if (newRecord && ins_fields.length > 0) { qBig += sql_delimiter + "INSERT INTO " + DB.quote(editTableName) + " (" + ins_fields.join(',') + ") VALUES (" + ins_data.join(',') + ")"; } // only generate query if at least one field is updated (for existing records) if(upd !== "") { upd = "UPDATE " + DB.quote(editTableName) + " SET " + upd.substr(0, upd.length-1); qBig += sql_delimiter + upd + makeWhereClause($(this)); } }); $('#dataTable tbody .x').add('#dataTable tbody .n').removeClass('x n').data('edit', null); // return or execute queries if (arguments.length > 0 && arguments[0] == true) return qBig; showNavBtns('query', 'queryall'); wrkfrmSubmit("queryall", "", "", qBig); } function queryGenerate() { del = queryDelete(true); // we must get the delete queries first, then save queries sql = querySave(true) + del; setSqlCode(sql, 1); showNavBtns('query', 'queryall'); } function queryAddRecord() { num = $('#dataTable tbody tr').length+1; row = '
").append(this.eq(0).clone()).html(); } $.getSelectedText = function() { if(window.getSelection) { return window.getSelection(); } else if(document.getSelection) { return document.getSelection(); } else { var selection = document.selection && document.selection.createRange(); if(selection.text) { return selection.text; } return ''; } return ''; }