From b45f0c83f5e3d80aba465691df2fd317df71e0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 26 Apr 2013 09:19:51 +0200 Subject: [PATCH] Various JS improvements - avoid double variable declaration - reorder functions to be defined before used --- js/pmd/history.js | 369 +++++++++++++++++++++++----------------------- 1 file changed, 184 insertions(+), 185 deletions(-) diff --git a/js/pmd/history.js b/js/pmd/history.js index 6b1be194a9..0111b7ff6a 100644 --- a/js/pmd/history.js +++ b/js/pmd/history.js @@ -27,6 +27,44 @@ function panel(index) }); } +/** + * To display details of obects(where,rename,Having,aggregate,groupby,orderby,having) + * + * @param index index of history_array where change is to be made + * +**/ + +function detail(index) +{ + var type = history_array[index].get_type(); + var str; + if (type == "Where") { + str = 'Where ' + history_array[index].get_column_name() + history_array[index].get_obj().getrelation_operator() + history_array[index].get_obj().getquery(); + } + if (type == "Rename") { + str = 'Rename ' + history_array[index].get_column_name() + ' To ' + history_array[index].get_obj().getrename_to(); + } + if (type == "Aggregate") { + str = 'Select ' + history_array[index].get_obj().get_operator() + '( ' + history_array[index].get_column_name() + ' )'; + } + if (type == "GroupBy") { + str = 'GroupBy ' + history_array[index].get_column_name(); + } + if (type == "OrderBy") { + str = 'OrderBy ' + history_array[index].get_column_name(); + } + if (type == "Having") { + str = 'Having '; + if (history_array[index].get_obj().get_operator() != 'None') { + str += history_array[index].get_obj().get_operator() + '( ' + history_array[index].get_column_name() + ' )'; + str += history_array[index].get_obj().getrelation_operator() + history_array[index].get_obj().getquery(); + } else { + str = 'Having ' + history_array[index].get_column_name() + history_array[index].get_obj().getrelation_operator() + history_array[index].get_obj().getquery(); + } + } + return str; +} + /** * Sorts history_array[] first,using table name as the key and then generates the HTML code for history tab, * clubbing all objects of same tables together @@ -40,11 +78,11 @@ function panel(index) function display(init, finit) { - var str, i, j, k, sto; + var str, i, j, k, sto, temp; // this part sorts the history array based on table name,this is needed for clubbing all object of same name together. for (i = init; i < finit; i++) { sto = history_array[i]; - var temp = history_array[i].get_tab();//+ '.' + history_array[i].get_obj_no(); for Self JOINS + temp = history_array[i].get_tab();//+ '.' + history_array[i].get_obj_no(); for Self JOINS for (j = 0; j < i; j++) { if (temp > (history_array[j].get_tab())) {//+ '.' + history_array[j].get_obj_no())) { //for Self JOINS for (k = i; k > j; k--) { @@ -57,8 +95,8 @@ function display(init, finit) } // this part generates HTML code for history tab.adds delete,edit,and/or and detail features with objects. str = ''; // string to store Html code for history tab - for (var i = 0; i < history_array.length; i++) { - var temp = history_array[i].get_tab(); //+ '.' + history_array[i].get_obj_no(); for Self JOIN + for (i = 0; i < history_array.length; i++) { + temp = history_array[i].get_tab(); //+ '.' + history_array[i].get_obj_no(); for Self JOIN str += '

' + temp + '

'; str += '
\n'; while ((history_array[i].get_tab()) == temp) { //+ '.' + history_array[i].get_obj_no()) == temp) { @@ -107,44 +145,6 @@ function and_or(index) panel(1); } -/** - * To display details of obects(where,rename,Having,aggregate,groupby,orderby,having) - * - * @param index index of history_array where change is to be made - * -**/ - -function detail(index) -{ - var type = history_array[index].get_type(); - var str; - if (type == "Where") { - str = 'Where ' + history_array[index].get_column_name() + history_array[index].get_obj().getrelation_operator() + history_array[index].get_obj().getquery(); - } - if (type == "Rename") { - str = 'Rename ' + history_array[index].get_column_name() + ' To ' + history_array[index].get_obj().getrename_to(); - } - if (type == "Aggregate") { - str = 'Select ' + history_array[index].get_obj().get_operator() + '( ' + history_array[index].get_column_name() + ' )'; - } - if (type == "GroupBy") { - str = 'GroupBy ' + history_array[index].get_column_name(); - } - if (type == "OrderBy") { - str = 'OrderBy ' + history_array[index].get_column_name(); - } - if (type == "Having") { - str = 'Having '; - if (history_array[index].get_obj().get_operator() != 'None') { - str += history_array[index].get_obj().get_operator() + '( ' + history_array[index].get_column_name() + ' )'; - str += history_array[index].get_obj().getrelation_operator() + history_array[index].get_obj().getquery(); - } else { - str = 'Having ' + history_array[index].get_column_name() + history_array[index].get_obj().getrelation_operator() + history_array[index].get_obj().getquery(); - } - } - return str; -} - /** * Deletes entry in history_array * @@ -460,149 +460,6 @@ function found(arrayName, value) return -1; } -/** - * This function is the main function for query building. - * uses history object details for this. - * - * @ uses query_where() - * @ uses query_groupby() - * @ uses query_having() - * @ uses query_orderby() - * - * @param formtitle title for the form - * @param fadin - */ - -function build_query(formtitle, fadin) -{ - var q_select = "SELECT "; - var temp; - for (var i = 0;i < select_field.length; i++) { - temp = check_aggregate(select_field[i]); - if (temp !== "") { - q_select += temp; - temp = check_rename(select_field[i]); - q_select += temp + ","; - } else { - temp = check_rename(select_field[i]); - q_select += select_field[i] + temp + ","; - } - } - q_select = q_select.substring(0, q_select.length - 1); - q_select += " FROM " + query_from(); - if (query_where() !== "") { - q_select += "\n WHERE"; - q_select += query_where(); - } - if (query_groupby() !== "") { q_select += "\nGROUP BY " + query_groupby(); } - if (query_having() !== "") { q_select += "\nHAVING " + query_having(); } - if (query_orderby() !== "") { q_select += "\nORDER BY " + query_orderby(); } - var box = document.getElementById('box'); - document.getElementById('filter').style.display = 'block'; - var btitle = document.getElementById('boxtitle'); - btitle.innerHTML = 'SELECT';//formtitle; - if (fadin) { - gradient("box", 0); - fadein("box"); - } else { - box.style.display = 'block'; - } - document.getElementById('textSqlquery').innerHTML = q_select; -} - /** - * This function builds from clause of query - * makes automatic joins. - * - * - */ - - -function query_from() -{ - var i; - var tab_left = []; - var tab_used = []; - var t_tab_used = []; - var t_tab_left = []; - var temp; - var query = ""; - var quer = ""; - var parts = []; - var t_array = []; - t_array = from_array; - var K = 0; - var k; - var key; - var key2; - var key3; - var parts1; - for (i = 0; i < history_array.length; i++) { - from_array.push(history_array[i].get_tab()); - } - from_array = unique(from_array); - tab_left = from_array; - temp = tab_left.shift(); - quer = temp; - tab_used.push(temp); - // if master table (key2) matches with tab used get all keys and check if tab_left matches - //after this check if master table (key2) matches with tab left then check if any foriegn matches with master . - for (i = 0; i < 2; i++) { - for (K in contr) { - for (key in contr[K]) {// contr name - for (key2 in contr[K][key]) {// table name - parts = key2.split("."); - if (found(tab_used, parts[1]) > 0) { - for (key3 in contr[K][key][key2]) { - parts1 = contr[K][key][key2][key3][0].split("."); - if (found(tab_left, parts1[1]) > 0) { - query += "\n" + 'LEFT JOIN '; - query += '`' + parts1[0] + '`.`' + parts1[1] + '` ON '; - query += '`' + parts[1] + '`.`' + key3 + '` = '; - query += '`' + parts1[1] + '`.`' + contr[K][key][key2][key3][1] + '` '; - t_tab_left.push(parts1[1]); - } - } - } - } - } - } - K = 0; - t_tab_left = unique(t_tab_left); - tab_used = add_array(t_tab_left, tab_used); - tab_left = remove_array(t_tab_left, tab_left); - t_tab_left = []; - for (K in contr) { - for (key in contr[K]) { - for (key2 in contr[K][key]) {// table name - parts = key2.split("."); - if (found(tab_left, parts[1]) > 0) { - for (key3 in contr[K][key][key2]) { - parts1 = contr[K][key][key2][key3][0].split("."); - if (found(tab_used, parts1[1]) > 0) { - query += "\n" + 'LEFT JOIN '; - query += '`' + parts[0] + '`.`' + parts[1] + '` ON '; - query += '`' + parts1[1] + '`.`' + contr[K][key][key2][key3][1] + '` = '; - query += '`' + parts[1] + '`.`' + key3 + '` '; - t_tab_left.push(parts[1]); - } - } - } - } - } - } - t_tab_left = unique(t_tab_left); - tab_used = add_array(t_tab_left, tab_used); - tab_left = remove_array(t_tab_left, tab_left); - t_tab_left = []; - } - for (k in tab_left) { - quer += " , `" + tab_left[k] + "`"; - } - query = quer + query; - from_array = t_array; - return query; -} - /** * This function concatenates two array * @@ -780,6 +637,148 @@ function fadein(id) } } + /** + * This function builds from clause of query + * makes automatic joins. + * + * + */ +function query_from() +{ + var i; + var tab_left = []; + var tab_used = []; + var t_tab_used = []; + var t_tab_left = []; + var temp; + var query = ""; + var quer = ""; + var parts = []; + var t_array = []; + t_array = from_array; + var K = 0; + var k; + var key; + var key2; + var key3; + var parts1; + for (i = 0; i < history_array.length; i++) { + from_array.push(history_array[i].get_tab()); + } + from_array = unique(from_array); + tab_left = from_array; + temp = tab_left.shift(); + quer = temp; + tab_used.push(temp); + // if master table (key2) matches with tab used get all keys and check if tab_left matches + //after this check if master table (key2) matches with tab left then check if any foriegn matches with master . + for (i = 0; i < 2; i++) { + for (K in contr) { + for (key in contr[K]) {// contr name + for (key2 in contr[K][key]) {// table name + parts = key2.split("."); + if (found(tab_used, parts[1]) > 0) { + for (key3 in contr[K][key][key2]) { + parts1 = contr[K][key][key2][key3][0].split("."); + if (found(tab_left, parts1[1]) > 0) { + query += "\n" + 'LEFT JOIN '; + query += '`' + parts1[0] + '`.`' + parts1[1] + '` ON '; + query += '`' + parts[1] + '`.`' + key3 + '` = '; + query += '`' + parts1[1] + '`.`' + contr[K][key][key2][key3][1] + '` '; + t_tab_left.push(parts1[1]); + } + } + } + } + } + } + K = 0; + t_tab_left = unique(t_tab_left); + tab_used = add_array(t_tab_left, tab_used); + tab_left = remove_array(t_tab_left, tab_left); + t_tab_left = []; + for (K in contr) { + for (key in contr[K]) { + for (key2 in contr[K][key]) {// table name + parts = key2.split("."); + if (found(tab_left, parts[1]) > 0) { + for (key3 in contr[K][key][key2]) { + parts1 = contr[K][key][key2][key3][0].split("."); + if (found(tab_used, parts1[1]) > 0) { + query += "\n" + 'LEFT JOIN '; + query += '`' + parts[0] + '`.`' + parts[1] + '` ON '; + query += '`' + parts1[1] + '`.`' + contr[K][key][key2][key3][1] + '` = '; + query += '`' + parts[1] + '`.`' + key3 + '` '; + t_tab_left.push(parts[1]); + } + } + } + } + } + } + t_tab_left = unique(t_tab_left); + tab_used = add_array(t_tab_left, tab_used); + tab_left = remove_array(t_tab_left, tab_left); + t_tab_left = []; + } + for (k in tab_left) { + quer += " , `" + tab_left[k] + "`"; + } + query = quer + query; + from_array = t_array; + return query; +} + +/** + * This function is the main function for query building. + * uses history object details for this. + * + * @ uses query_where() + * @ uses query_groupby() + * @ uses query_having() + * @ uses query_orderby() + * + * @param formtitle title for the form + * @param fadin + */ + +function build_query(formtitle, fadin) +{ + var q_select = "SELECT "; + var temp; + for (var i = 0;i < select_field.length; i++) { + temp = check_aggregate(select_field[i]); + if (temp !== "") { + q_select += temp; + temp = check_rename(select_field[i]); + q_select += temp + ","; + } else { + temp = check_rename(select_field[i]); + q_select += select_field[i] + temp + ","; + } + } + q_select = q_select.substring(0, q_select.length - 1); + q_select += " FROM " + query_from(); + if (query_where() !== "") { + q_select += "\n WHERE"; + q_select += query_where(); + } + if (query_groupby() !== "") { q_select += "\nGROUP BY " + query_groupby(); } + if (query_having() !== "") { q_select += "\nHAVING " + query_having(); } + if (query_orderby() !== "") { q_select += "\nORDER BY " + query_orderby(); } + var box = document.getElementById('box'); + document.getElementById('filter').style.display = 'block'; + var btitle = document.getElementById('boxtitle'); + btitle.innerHTML = 'SELECT';//formtitle; + if (fadin) { + gradient("box", 0); + fadein("box"); + } else { + box.style.display = 'block'; + } + document.getElementById('textSqlquery').innerHTML = q_select; +} + function closebox() { document.getElementById('box').style.display = 'none';