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 += '
';
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';