diff --git a/db_qbe.php b/db_qbe.php index a8aeb42ee..daaba0d88 100644 --- a/db_qbe.php +++ b/db_qbe.php @@ -163,6 +163,29 @@ function showColumnSelectCell($columns, $column_number, $selected = '') } ?> + $value) { + $tab_designer['link'] .= PMA_get_arg_separator('html') . urlencode($param) . '=' + . urlencode($value); + } + } + } + if (! empty($tab['fragment'])) { + $tab['link'] .= $tab['fragment']; + } +?> +
+ + Switch to +
+ +
+
diff --git a/pmd/images/and_icon.png b/pmd/images/and_icon.png new file mode 100644 index 000000000..bb51726b5 Binary files /dev/null and b/pmd/images/and_icon.png differ diff --git a/pmd/images/or_icon.png b/pmd/images/or_icon.png new file mode 100644 index 000000000..fa76f3bb1 Binary files /dev/null and b/pmd/images/or_icon.png differ diff --git a/pmd/images/query_builder.png b/pmd/images/query_builder.png new file mode 100644 index 000000000..6d0f5544b Binary files /dev/null and b/pmd/images/query_builder.png differ diff --git a/pmd/scripts/history.js b/pmd/scripts/history.js new file mode 100644 index 000000000..ace5bae65 --- /dev/null +++ b/pmd/scripts/history.js @@ -0,0 +1,765 @@ +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * @fileoverview function used in this file builds history tab and generates query. + * + * @requires jQuery + * @requires moves.js + * @version $Id$ + */ + +var history_array = []; // Global array to store history objects +var select_field = []; // Global array to store informaation for columns which are used in select clause +var g_index; + +/** + * function for panel, hides and shows toggle_container
,which is for history elements uses {@link JQuery}. + * + * @param index has value 1 or 0,decides wheter to hide toggle_container on load. +**/ + +function panel(index) { + if (!index) { + $(".toggle_container").hide(); + } + $("h2.tiger").click(function(){ + $(this).toggleClass("active").next().slideToggle("slow"); + }); +} + +/** + * 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 + * This function is called whenever changes are made in history_array[] + * + * @uses and_or() + * @uses history_edit() + * @uses history_delete() + * + * @param {int} init starting index of unsorted array + * @param {int} final last index of unsorted array + * +**/ + +function display(init,final) { + var str,i,j,k,sto; + // 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 < final;i++) { + sto = history_array[i]; + var 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--) { + history_array[k] = history_array[k-1]; + } + history_array[j] = sto; + break; + } + } + } + // 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 + str += '

' + temp + '

'; + str += '
\n'; + while((history_array[i].get_tab()) == temp) { //+ '.' + history_array[i].get_obj_no()) == temp) { + str +='
'; + str += ''; + } + else { + str +=''; + } + str +=''; + } + else { + str += ''; + } + i++; + if(i >= history_array.length) { + break; + } + str += '
'; + if(history_array[i].get_and_or()){ + str +='' + history_array[i].get_column_name(); + if (history_array[i].get_type() == "GroupBy" || history_array[i].get_type() == "OrderBy") { + str += '' + history_array[i].get_type() + '
' + history_array[i]. get_type() + '

'; + } + i--; + str += '
'; + } + return str; +} + +/** + * To change And/Or relation in history tab + * + * @uses panel() + * + * @param {int} index of history_array where change is to be made + * +**/ + +function and_or(index) { + if (history_array[index].get_and_or()) { + history_array[index].set_and_or(0); + } + else { + history_array[index].set_and_or(1); + } + var existingDiv = document.getElementById('ab'); + existingDiv.innerHTML = display(0,0); + 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 + * + * @uses panel() + * @uses display() + * @param index index of history_array[] which is to be deleted + * +**/ + +function history_delete(index) { + for(var k =0 ;k < from_array.length;k++){ + if(from_array[k] == history_array[index].get_tab()){ + from_array.splice(k,1); + break; + } + } + history_array.splice(index,1); + var existingDiv = document.getElementById('ab'); + existingDiv.innerHTML = display(0,0); + panel(1); +} + +/** + * To show where,rename,aggregate,having forms to edit a object + * + * @param{int} index index of history_array where change is to be made + * +**/ + +function history_edit(index) { + g_index = index; + var type = history_array[index].get_type(); + if (type == "Where") { + document.getElementById('eQuery').value = history_array[index].get_obj().getquery(); + document.getElementById('erel_opt').value = history_array[index].get_obj().getrelation_operator(); + document.getElementById('query_where').style.left = '530px'; + document.getElementById('query_where').style.top = '130px'; + document.getElementById('query_where').style.position = 'absolute'; + document.getElementById('query_where').style.zIndex = '9'; + document.getElementById('query_where').style.visibility = 'visible'; + } + if (type == "Having") { + document.getElementById('hQuery').value = history_array[index].get_obj().getquery(); + document.getElementById('hrel_opt').value = history_array[index].get_obj().getrelation_operator(); + document.getElementById('hoperator').value = history_array[index].get_obj().get_operator(); + document.getElementById('query_having').style.left = '530px'; + document.getElementById('query_having').style.top = '130px'; + document.getElementById('query_having').style.position = 'absolute'; + document.getElementById('query_having').style.zIndex = '9'; + document.getElementById('query_having').style.visibility = 'visible'; + } + if (type == "Rename") { + document.getElementById('query_rename_to').style.left = '530px'; + document.getElementById('query_rename_to').style.top = '130px'; + document.getElementById('query_rename_to').style.position = 'absolute'; + document.getElementById('query_rename_to').style.zIndex = '9'; + document.getElementById('query_rename_to').style.visibility = 'visible'; + } + if (type == "Aggregate") { + document.getElementById('query_Aggregate').style.left = '530px'; + document.getElementById('query_Aggregate').style.top = '130px'; + document.getElementById('query_Aggregate').style.position = 'absolute'; + document.getElementById('query_Aggregate').style.zIndex = '9'; + document.getElementById('query_Aggregate').style.visibility = 'visible'; + } +} + +/** + * Make changes in history_array when Edit button is clicked + * checks for the type of object and then sets the new value + * @uses panel() + * @uses display() + * + * @param index index of history_array where change is to be made +**/ + +function edit(type) { + if (type == "Rename") { + if (document.getElementById('e_rename').value != "") { + history_array[g_index].get_obj().setrename_to(document.getElementById('e_rename').value); + document.getElementById('e_rename').value = ""; + } + document.getElementById('query_rename_to').style.visibility = 'hidden'; + } + if (type == "Aggregate") { + if (document.getElementById('e_operator').value != '---') { + history_array[g_index].get_obj().set_operator(document.getElementById('e_operator').value); + document.getElementById('e_operator').value = '---'; + } + document.getElementById('query_Aggregate').style.visibility = 'hidden'; + } + if (type == "Where") { + if (document.getElementById('erel_opt').value != '--' && document.getElementById('eQuery').value !="") { + history_array[g_index].get_obj().setquery(document.getElementById('eQuery').value); + history_array[g_index].get_obj().setrelation_operator(document.getElementById('erel_opt').value); + } + document.getElementById('query_where').style.visibility = 'hidden'; + } + if (type == "Having") { + if (document.getElementById('hrel_opt').value != '--' && document.getElementById('hQuery').value !="") { + history_array[g_index].get_obj().setquery(document.getElementById('hQuery').value); + history_array[g_index].get_obj().setrelation_operator(document.getElementById('hrel_opt').value); + history_array[g_index].get_obj().set_operator(document.getElementById('hoperator').value); + } + document.getElementById('query_having').style.visibility = 'hidden'; + } + var existingDiv = document.getElementById('ab'); + existingDiv.innerHTML = display(0,0); + panel(1); +} + +/** + * history object closure + * + * @param ncolumn_name name of the column on which conditions are put + * @param nobj object details(where,rename,orderby,groupby,aggregate) + * @param ntab table name of the column on which conditions are applied + * @param nobj_no object no used for inner join + * @param ntype type of object + * +**/ + +function history(ncolumn_name,nobj,ntab,nobj_no,ntype) { + var and_or; + var obj; + var tab; + var column_name; + var obj_no; + var type; + this.set_column_name = function (ncolumn_name) { + column_name = ncolumn_name; + }; + this.get_column_name = function() { + return column_name; + }; + this.set_and_or = function(nand_or) { + and_or = nand_or; + }; + this.get_and_or = function() { + return and_or; + } + this.get_relation = function() { + return and_or; + }; + this.set_obj = function(nobj) { + obj = nobj; + }; + this.get_obj = function() { + return obj; + }; + this.set_tab = function(ntab) { + tab = ntab; + }; + this.get_tab = function() { + return tab; + }; + this.set_obj_no = function(nobj_no) { + obj_no = nobj_no; + }; + this.get_obj_no = function() { + return obj_no; + }; + this.set_type = function(ntype) { + type = ntype; + } + this.get_type = function() { + return type; + } + this.set_obj_no(nobj_no); + this.set_tab(ntab); + this.set_and_or(0); + this.set_obj(nobj); + this.set_column_name(ncolumn_name); + this.set_type(ntype); +}; + +/** + * where object closure, makes an object with all information of where + * + * @param nrelation_operator type of relation operator to be applied + * @param nquery stores value of value/sub-query + * +**/ + + +var where = function (nrelation_operator,nquery) { + var relation_operator; + var query; + this.setrelation_operator = function(nrelation_operator) { + relation_operator = nrelation_operator; + }; + this.setquery = function(nquery) { + query = nquery; + }; + this.getquery = function() { + return query; + }; + this.getrelation_operator = function() { + return relation_operator; + }; + this.setquery(nquery); + this.setrelation_operator(nrelation_operator); +}; + + +/** + * Having object closure, makes an object with all information of where + * + * @param nrelation_operator type of relation operator to be applied + * @param nquery stores value of value/sub-query + * +**/ + +var having = function (nrelation_operator,nquery,noperator) { + var relation_operator; + var query; + var operator; + this.set_operator = function(noperator) { + operator = noperator; + }; + this.setrelation_operator = function(nrelation_operator) { + relation_operator = nrelation_operator; + }; + this.setquery = function(nquery) { + query = nquery; + }; + this.getquery = function() { + return query; + }; + this.getrelation_operator = function() { + return relation_operator; + }; + this.get_operator = function() { + return operator; + }; + this.setquery(nquery); + this.setrelation_operator(nrelation_operator); + this.set_operator(noperator); +}; + +/** + * rename object closure,makes an object with all information of rename + * + * @param nrename_to new name information + * +**/ + +var rename = function(nrename_to) { + var rename_to; + this.setrename_to = function(nrename_to) { + rename_to = nrename_to; + }; + this.getrename_to =function() { + return rename_to; + }; + this.setrename_to(nrename_to); +}; + +/** + * aggregate object closure + * + * @param noperator aggregte operator + * +**/ + +var aggregate = function(noperator) { + var operator; + this.set_operator = function(noperator) { + operator = noperator; + }; + this.get_operator = function() { + return operator; + }; + this.set_operator(noperator); +}; + +/** + * This function returns unique element from an array + * + * @param arraName array from which duplicate elem are to be removed. + * @return unique array + */ + +function unique(arrayName) { + var newArray=new Array(); + label:for(var i=0; i 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; +} + /* document.write(key3+";"); //master_field + document.write(contr[K][key][key2][key3][0]+";"); // foreign_table + document.write(contr[K][key][key2][key3][1]+";"); //forieign_feild */ +/** + * This function concatenates two array + * + * @params add array elements of which are pushed in + * @params arr array in which elemnets are added + */ +function add_array(add,arr){ + for( var i=0; i>1); + document.getElementById(id_this).style.left = left + 'px'; + // var top = Glob_Y - document.getElementById(id_this).offsetHeight - 10; + document.getElementById(id_this).style.top = (screen.height / 4) + 'px'; + document.getElementById(id_this).style.visibility = "visible"; + document.getElementById('option_col_name').innerHTML = 'Options For "' +column_name+ '" column'; + col_name = column_name; + tab_name = table_name; +} + +function Close_option() +{ + document.getElementById('pmd_optionse').style.visibility = "hidden"; +} + +function Select_all(id_this,owner) +{ + var parent= document.form1; + downer =owner; + var i; + var tab = []; + for(i = 0; i < parent.elements.length; i++) { + if (parent.elements[i].type == "checkbox" && parent.elements[i].id.substring(0,(9 + id_this.length)) == 'select_' + id_this + '._') { + if(document.getElementById('select_all_' + id_this).checked == true) { + parent.elements[i].checked = true; + parent.elements[i].disabled = true; + var temp = '`' + id_this.substring(owner.length +1) + '`.*'; + } + else { + parent.elements[i].checked = false; + parent.elements[i].disabled = false; + } + } + } + if(document.getElementById('select_all_' + id_this).checked == true) { + select_field.push('`' + id_this.substring(owner.length +1) + '`.*'); + tab = id_this.split("."); + from_array.push(tab[1]); + } + else { + for (i =0; i < select_field.length; i++) { + if (select_field[i] == ('`' + id_this.substring(owner.length +1) + '`.*')) { + select_field.splice(i,1); + } + } + for(k =0 ;k < from_array.length;k++){ + if(from_array[k] == id_this){ + from_array.splice(k,1); + break; + } + } + } + Re_load(); +} + +function Table_onover(id_this,val,buil) +{ + if(!val) { + document.getElementById("id_zag_" + id_this).className="tab_zag_2"; + if(buil) { + document.getElementById("id_zag_" + id_this + "_2").className="tab_zag_2"; + } + } + else { + document.getElementById("id_zag_" + id_this).className="tab_zag"; + if(buil) { + document.getElementById("id_zag_" + id_this + "_2").className="tab_zag"; + } + } +} + +/* This function stores selected column information in select_field[] + * In case column is checked it add else it deletes + * + */ +function store_column(id_this,owner,col) { + var i = 0; + var k = 0; + if (document.getElementById('select_' + owner + '.' + id_this + '._' + col).checked == true) { + select_field.push('`' + id_this + '`.`' + col +'`'); + from_array.push(id_this); + } + else { + for(i; i < select_field.length ;i++) { + if (select_field[i] == ('`' + id_this + '`.`' + col +'`')) { + select_field.splice(i,1); + break; + } + } + for(k =0 ;k < from_array.length;k++){ + if(from_array[k] == id_this){ + from_array.splice(k,1); + break; + } + } + } +} + +/** + * This function builds object and adds them to history_array + * first it does a few checks on each object, then makes an object(where,rename,groupby,aggregate,orderby) + * then a new history object is made and finally all these history objects are addded to history_array[] + * + * @uses where() + * @uses history() + * @uses aggregate() + * @uses rename() + * @uses panel() + * @uses display() +**/ + +function add_object() { + var rel = document.getElementById('rel_opt'); + var sum = 0; + var init = history_array.length; + if (rel.value != '--') { + if (document.getElementById('Query').value == "") { + document.getElementById('hint').innerHTML = "value/subQuery is empty" ; + document.getElementById('hint').style.visibility = "visible"; + return; + } + var p = document.getElementById('Query'); + var where_obj = new where(rel.value,p.value);//make where object + history_array.push(new history(col_name,where_obj,tab_name,h_tabs[downer + '.' + tab_name],"Where")); + sum = sum + 1; + rel.value = '--'; + p.value = ""; + } + if (document.getElementById('new_name').value !="") { + var rename_obj = new rename(document.getElementById('new_name').value);//make Rename object + history_array.push(new history(col_name,rename_obj,tab_name,h_tabs[downer + '.' + tab_name],"Rename")); + sum = sum + 1; + document.getElementById('new_name').value = "" ; + } + if (document.getElementById('operator').value != '---') { + var aggregate_obj = new aggregate(document.getElementById('operator').value) ; + history_array.push(new history(col_name,aggregate_obj,tab_name,h_tabs[downer + '.' + tab_name],"Aggregate")); + sum = sum + 1; + document.getElementById('operator').value = '---'; + //make aggregate operator + } + if (document.getElementById('groupby').checked == true ) { + history_array.push(new history(col_name,'GroupBy',tab_name,h_tabs[downer + '.' +tab_name],"GroupBy")); + sum = sum + 1; + document.getElementById('groupby').checked = false; + //make groupby + } + if (document.getElementById('h_rel_opt').value != '--') { + if (document.getElementById('having').value == "") { + document.getElementById('hint').innerHTML = "value/subQuery is empty" ; + document.getElementById('hint').style.visibility = "visible"; + return; + } + var p = document.getElementById('having'); + var where_obj = new having(document.getElementById('h_rel_opt').value,p.value,document.getElementById('h_operator').value);//make where object + history_array.push(new history(col_name,where_obj,tab_name,h_tabs[downer + '.' + tab_name],"Having")); + sum = sum + 1; + document.getElementById('h_rel_opt').value = '--'; + document.getElementById('h_operator').value = '---'; + p.value = ""; //make having + } + if (document.getElementById('orderby').checked == true) { + history_array.push(new history(col_name,'OrderBy',tab_name,h_tabs[downer + '.' + tab_name],"OrderBy")); + sum = sum + 1; + document.getElementById('orderby').checked = false; + //make orderby + } + document.getElementById('hint').innerHTML = sum + "object created" ; + document.getElementById('hint').style.visibility = "visible"; + //output sum new objects created + var existingDiv = document.getElementById('ab'); + existingDiv.innerHTML = display(init,history_array.length); + Close_option(); + panel(0); +} diff --git a/pmd/styles/default/images/minus.png b/pmd/styles/default/images/minus.png new file mode 100644 index 000000000..cf72f3919 Binary files /dev/null and b/pmd/styles/default/images/minus.png differ diff --git a/pmd/styles/default/images/plus.png b/pmd/styles/default/images/plus.png new file mode 100644 index 000000000..ebcd27d8c Binary files /dev/null and b/pmd/styles/default/images/plus.png differ diff --git a/pmd/styles/default/style1.css b/pmd/styles/default/style1.css index 129c8d3d8..eb3d6902d 100644 --- a/pmd/styles/default/style1.css +++ b/pmd/styles/default/style1.css @@ -146,6 +146,23 @@ form { color: #888888; } +.option_tab { + padding-left: 2px; + padding-right: 2px; + width: 5px; +} + +.select_all { + vertical-align: top; + padding-left: 2px; + padding-right: 2px; + cursor: default; + width: 1px; + color: #000000; + background-image: url(images/Header.png); + background-repeat: repeat-x; +} + .small_tab { vertical-align: top; background-color: #0064ea; @@ -371,9 +388,195 @@ a.M_butt:hover { width: 153px; } +#pmd_optionse { + position: absolute; + left: 636px; + top: 85px; + z-index: 1000; + width: 153px; +} + #layer_menu_sizer { background-image: url(../../images/resize.png); cursor: nw-resize; width: 16px; height: 16px; } + +.panel { +position: fixed; +top: 50px; +right: 0; +display: none; +background: #FFF; +border:1px solid #F5F5F5; +width: 350 px; +height: auto; +padding: 30px 170px 30px 30px; +color:#FFF; +z-index:99; +} + +a.trigger{ +position: fixed; +text-decoration: none; +top: 60px; right: 0; +font-size: 16px; +font-family: verdana, helvetica, arial, sans-serif; +color:#fff; +padding: 10px 40px 10px 15px; +font-weight: 700; +background:#333333 url(images/plus.png) 85% 55% no-repeat; +border:1px solid #444444; +display: block; +} + +a.trigger:hover{ +position: fixed; +text-decoration: none; +top: 60px; right: 0; +font-size: 16px; +font-family: verdana, helvetica, arial, sans-serif; +color:#080808; +padding: 10px 40px 10px 15px; +font-weight: 700; +background:#fff696 url(images/plus.png) 85% 55% no-repeat; +border:1px solid #999; +display: block; +} + +a.active.trigger { +background:#222222 url(images/minus.png) 85% 55% no-repeat; +z-index:999; +} + +a.active.trigger:hover { +background:#fff696 url(images/minus.png) 85% 55% no-repeat; +z-index:999; +} + +h2.tiger{ + background-repeat: repeat-x; + padding: 1px; + font-weight: bold; + font-size:14px; + padding: 50 20 50 20px; + margin: 0 0 5px 0; + width: 250px; + float: left; + color : #333; + text-align: center; +} + +h2.tiger a { + background-image: url(images/Header.png); + text-align: center; + text-decoration: none; + color : #333; + display: block; +} + +h2.tiger a:hover { + color: #000; + background-image: url(images/Header_Linked.png); +} + +h2.active { + background-image: url(images/Header.png); + background-repeat: repeat-x; + padding: 1px; + background-position: left bottom; +} + +.toggle_container { + margin: 0 0 5px; + padding: 0; + border-top: 1px solid #d6d6d6; + background: #FFF ; + width: 250px; + overflow: hidden; + font-size: 1.2em; + clear: both; +} + +.toggle_container .block { + background-color: #DBE4E8; + padding:40 15 40 15px; /*--Padding of Container--*/ + border:1px solid #999; + color:#000; +} + +.history_table { + text-align: center; + background-color: #9999CC; +} + +.history_table2 { + text-align: center; + background-color: #DBE4E8; +} + +#filter { + display: none; + position: absolute; + top: 0%; + left: 0%; + width: 100%; + height: 100%; + background-color: #CCA; + z-index:10; + opacity:0.5; + filter: alpha(opacity=50); +} + +#box { + display: none; + position: absolute; + top: 20%; + left: 30%; + width: 500px; + height: 220px; + padding: 48px; + margin:0; + border: 1px solid black; + background-color: white; + z-index:101; + overflow: visible; +} + +#boxtitle { + position:absolute; + float:center; + top:0; + left:0; + width:593px; + height:20px; + padding:0; + padding-top:4px; + left-padding:8px; + margin:0; + border-bottom:4px solid #3CF; + background-color: #D0DCE0; //#09c; + color:black; + font-weight:bold; + padding-left: 2px; + font-family:"Times New Roman", Times, serif; + font-size:16px; + text-align:left; +} + +#tblfooter { + background-color: D3DCE3; + float: right; + padding-top:10px; + color: black; + font-weight: normal; +} + +input.btn { + color:#333; + font: bold 84%'trebuchet ms',helvetica,sans-serif; + background-color: #D0DCE0; +} + + diff --git a/pmd_common.php b/pmd_common.php index 2cb2213ce..df8fdf2b0 100644 --- a/pmd_common.php +++ b/pmd_common.php @@ -237,11 +237,13 @@ function get_script_tabs() $script_tabs = '' . "\n"; diff --git a/pmd_general.php b/pmd_general.php index 90ed0a8b3..1fabf120b 100644 --- a/pmd_general.php +++ b/pmd_general.php @@ -27,6 +27,7 @@ $hidden = "hidden"; Designer + - + + @@ -98,11 +110,18 @@ echo $script_tabs . $script_contr . $script_display_field; class="M_butt" target="_self" >keykey - + '; + echo 'key'; }?> + > @@ -187,6 +206,13 @@ for ($i = 0; $i < count($GLOBALS['PMD']["TABLE_NAME"]); $i++) { "> + '; + echo ''; + }?> ');"> + onmousedown="cur_click=document.getElementById('');"/ + onmouseover="Table_onover('',0, )" + onmouseout="Table_onover('',1,)"> '; echo $GLOBALS['PMD_OUT']["TABLE_NAME_SMALL"][$i]; ?> + '; + }?> )"> + '; + echo ''; + }?> ">
@@ -276,6 +316,14 @@ for ($i = 0; $i < count($GLOBALS['PMD']["TABLE_NAME"]); $i++) { ?>
+ '; + echo ' '; + } ?> + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Where
Relation operator +
Value/
Subquery
+
Rename To
New Name
Aggregate
Operator +
Group By
Order By
Having
Operator +
Relation operator +
Value/
subQuery
+ + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
Rename To
New Name + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Having
Operator +
Opeartor +
Value/
Subquery
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
Aggregate
Operator + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
Where
Opeartor +
Value/
Subquery
+
+ + +
+
+ +'; + echo '
'; + echo '
'; + echo '
'; + echo ''; + echo 'History'; + echo '
'; + echo '
'; + echo ''; + echo ''; + echo '
'; + echo ' '; + echo ' '; + echo '

'; + echo '
'; + +} ?> + + diff --git a/readme b/readme new file mode 100644 index 000000000..e69de29bb