move.js 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279
  1. /* vim: set expandtab sw=4 ts=4 sts=4: */
  2. /**
  3. * @package PhpMyAdmin-Designer
  4. */
  5. /**
  6. * init
  7. */
  8. var _change = 0; // variable to track any change in designer layout.
  9. var _staying = 0; // variable to check if the user stayed after seeing the confirmation prompt.
  10. var show_relation_lines = true;
  11. AJAX.registerTeardown('pmd/move.js', function () {
  12. if ($.FullScreen.supported) {
  13. $(document).unbind($.FullScreen.prefix + 'fullscreenchange');
  14. }
  15. });
  16. AJAX.registerOnload('pmd/move.js', function () {
  17. $('#page_content').css({'margin-left': '3px'});
  18. $('#exitFullscreen').hide();
  19. if ($.FullScreen.supported) {
  20. $(document).fullScreenChange(function () {
  21. if (! $.FullScreen.isFullScreen()) {
  22. $('#page_content').removeClass('content_fullscreen')
  23. .css({'width': 'auto', 'height': 'auto'});
  24. $('#enterFullscreen').show();
  25. $('#exitFullscreen').hide();
  26. Top_menu_reposition($('#key_Left_Right')[0]);
  27. }
  28. });
  29. } else {
  30. $('#enterFullscreen').hide();
  31. }
  32. });
  33. // Below is the function to bind onbeforeunload events with the content_frame as well as the top window.
  34. /*
  35. FIXME: we can't register the beforeonload event because it will persist between pageloads
  36. AJAX.registerOnload('pmd/move.js', function (){
  37. $(window).bind('beforeunload', function () { // onbeforeunload for the frame window.
  38. if (_change == 1 && _staying === 0) {
  39. return PMA_messages.strLeavingDesigner;
  40. } else if (_change == 1 && _staying == 1) {
  41. _staying = 0;
  42. }
  43. });
  44. $(window).unload(function () {
  45. _change = 0;
  46. });
  47. window.top.onbeforeunload = function () { // onbeforeunload for the browser main window.
  48. if (_change == 1 && _staying === 0) {
  49. _staying = 1; // Helps if the user stays on the page as there
  50. setTimeout('make_zero();', 100); // is no other way of knowing whether the user stayed or not.
  51. return PMA_messages.strLeavingDesigner;
  52. }
  53. };
  54. });*/
  55. function make_zero() { // Function called if the user stays after seeing the confirmation prompt.
  56. _staying = 0;
  57. }
  58. var dx, dy, dy2;
  59. var cur_click = null;
  60. // update in Main()
  61. var sm_x = 2, sm_y = 2;
  62. var sm_s = 0;
  63. var sm_add = 10;
  64. var s_left = 0;
  65. var s_right = 0;
  66. var ON_relation = 0;
  67. var ON_grid = 0;
  68. var ON_display_field = 0;
  69. // relation_style: 0 - angular 1 - direct
  70. var ON_angular_direct = 1;
  71. var click_field = 0;
  72. var link_relation = "";
  73. var id_hint;
  74. var canvas_width = 0;
  75. var canvas_height = 0;
  76. var osn_tab_width = 0;
  77. var osn_tab_height = 0;
  78. var height_field = 7;
  79. var Glob_X, Glob_Y;
  80. var timeoutID;
  81. var layer_menu_cur_click = 0;
  82. var step = 10;
  83. var old_class;
  84. var from_array = [];
  85. var downer;
  86. //------------------------------------------------------------------------------
  87. //------------------------------------------------------------------------------
  88. //------------------------------------------------------------------------------
  89. //window.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
  90. //---CROSS
  91. document.onmousedown = MouseDown;
  92. document.onmouseup = MouseUp;
  93. document.onmousemove = MouseMove;
  94. var isIE = document.all && !window.opera;
  95. var isNN = !document.all && document.getElementById;
  96. var isN4 = document.layers;
  97. if (isIE) {
  98. window.onscroll = General_scroll;
  99. document.onselectstart = function () {
  100. return false;
  101. };
  102. }
  103. //document.onmouseup = function (){General_scroll_end();}
  104. function MouseDown(e)
  105. {
  106. var offsetx, offsety;
  107. if (cur_click !== null) {
  108. offsetx = isIE ? event.clientX + document.body.scrollLeft : e.pageX;
  109. offsety = isIE ? event.clientY + document.body.scrollTop : e.pageY;
  110. dx = offsetx - parseInt(cur_click.style.left, 10);
  111. dy = offsety - parseInt(cur_click.style.top, 10);
  112. //alert(" dx = " + dx + " dy = " +dy);
  113. document.getElementById("canvas").style.display = 'none';
  114. /*
  115. var left = parseInt(cur_click.style.left, 10);
  116. var top = parseInt(cur_click.style.top, 10);
  117. dx = e.pageX - left;
  118. dy = e.pageY - top;
  119. alert(" dx = " + dx + " dy = " +dy);
  120. */
  121. cur_click.style.zIndex = 2;
  122. }
  123. if (layer_menu_cur_click) {
  124. offsetx = e.pageX;
  125. dx = offsetx - parseInt(document.getElementById("layer_menu").style.width, 10);
  126. }
  127. }
  128. function MouseMove(e)
  129. {
  130. //Glob_X = e.pageX;
  131. //Glob_Y = e.pageY;
  132. Glob_X = isIE ? event.clientX + document.body.scrollLeft : e.pageX;
  133. Glob_Y = isIE ? event.clientY + document.body.scrollTop : e.pageY;
  134. //mouseX = (bw.ns4||bw.ns6)? e.pageX: bw.ie&&bw.win&&!bw.ie4? (event.clientX-2)+document.body.scrollLeft : event.clientX+document.body.scrollLeft;
  135. //mouseY = (bw.ns4||bw.ns6)? e.pageY: bw.ie&&bw.win&&!bw.ie4? (event.clientY-2)+document.body.scrollTop : event.clientY+document.body.scrollTop;
  136. //window.status = "X = "+ Glob_X + " Y = "+ Glob_Y;
  137. if (cur_click !== null) {
  138. _change = 1;
  139. var mGx = Glob_X - dx;
  140. var mGy = Glob_Y - dy;
  141. mGx = mGx > 0 ? mGx : 0;
  142. mGy = mGy > 0 ? mGy : 0;
  143. if (ON_grid) {
  144. mGx = mGx % step < step / 2 ? mGx - mGx % step : mGx - mGx % step + step;
  145. mGy = mGy % step < step / 2 ? mGy - mGy % step : mGy - mGy % step + step;
  146. }
  147. cur_click.style.left = mGx + 'px';
  148. cur_click.style.top = mGy + 'px';
  149. }
  150. if (ON_relation || ON_display_field) {
  151. document.getElementById('pmd_hint').style.left = (Glob_X + 20) + 'px';
  152. document.getElementById('pmd_hint').style.top = (Glob_Y + 20) + 'px';
  153. }
  154. if (layer_menu_cur_click) {
  155. document.getElementById("layer_menu").style.width = ((Glob_X - dx) >= 150 ? Glob_X - dx : 150) + 'px';
  156. //document.getElementById("layer_menu").style.height = Glob_Y - dy>=200?Glob_Y - dy:200;
  157. //document.getElementById("id_scroll_tab").style.height = Glob_Y - dy2;
  158. }
  159. }
  160. function MouseUp(e)
  161. {
  162. if (cur_click !== null) {
  163. document.getElementById("canvas").style.display = 'inline-block';
  164. Re_load();
  165. cur_click.style.zIndex = 1;
  166. cur_click = null;
  167. }
  168. layer_menu_cur_click = 0;
  169. //window.releaseEvents(Event.MOUSEMOVE);
  170. }
  171. //------------------------------------------------------------------------------
  172. //------------------------------------------------------------------------------
  173. //------------------------------------------------------------------------------
  174. //function ToInt(s)
  175. //{
  176. // return s.substring(0,s.length-2)*1; //re = /(\d+)\w*/; newstr = str.replace(re, "$1");
  177. //}
  178. function Canvas_pos()
  179. {
  180. canvas_width = document.getElementById('canvas').width = osn_tab_width - 3;
  181. canvas_height = document.getElementById('canvas').height = osn_tab_height - 3;
  182. if (isIE) {
  183. document.getElementById('canvas').style.width = ((osn_tab_width - 3) ? (osn_tab_width - 3) : 0) + 'px';
  184. document.getElementById('canvas').style.height = ((osn_tab_height - 3) ? (osn_tab_height - 3) : 0) + 'px';
  185. }
  186. }
  187. function Osn_tab_pos()
  188. {
  189. osn_tab_width = parseInt(document.getElementById('osn_tab').style.width, 10);
  190. osn_tab_height = parseInt(document.getElementById('osn_tab').style.height, 10);
  191. }
  192. function Main()
  193. {
  194. //alert( document.getElementById('osn_tab').offsetTop);
  195. //---CROSS
  196. document.getElementById("layer_menu").style.top = -1000 + 'px'; //fast scroll
  197. sm_x += document.getElementById('osn_tab').offsetLeft;
  198. sm_y += document.getElementById('osn_tab').offsetTop;
  199. Osn_tab_pos();
  200. Canvas_pos();
  201. Small_tab_refresh();
  202. Re_load();
  203. id_hint = document.getElementById('pmd_hint');
  204. if (isIE) {
  205. General_scroll();
  206. }
  207. }
  208. //-------------------------------- new -----------------------------------------
  209. function Rezize_osn_tab()
  210. {
  211. var max_X = 0;
  212. var max_Y = 0;
  213. for (var key in j_tabs) {
  214. var k_x = parseInt(document.getElementById(key).style.left, 10) + document.getElementById(key).offsetWidth;
  215. var k_y = parseInt(document.getElementById(key).style.top, 10) + document.getElementById(key).offsetHeight;
  216. max_X = max_X < k_x ? k_x : max_X;
  217. max_Y = max_Y < k_y ? k_y : max_Y;
  218. }
  219. osn_tab_width = max_X + 50;
  220. osn_tab_height = max_Y + 50;
  221. Canvas_pos();
  222. document.getElementById('osn_tab').style.width = osn_tab_width + 'px';
  223. document.getElementById('osn_tab').style.height = osn_tab_height + 'px';
  224. }
  225. //------------------------------------------------------------------------------
  226. /**
  227. * refreshes display, must be called after state changes
  228. */
  229. function Re_load()
  230. {
  231. Rezize_osn_tab();
  232. var n;
  233. var x1;
  234. var x2;
  235. var a = [];
  236. var K;
  237. var key;
  238. var key2;
  239. var key3;
  240. Clear();
  241. for (K in contr) {
  242. for (key in contr[K]) {
  243. // contr name
  244. for (key2 in contr[K][key]) {
  245. // table name
  246. for (key3 in contr[K][key][key2]) {
  247. // field name
  248. if (!document.getElementById("check_vis_" + key2).checked ||
  249. !document.getElementById("check_vis_" + contr[K][key][key2][key3][0]).checked) {
  250. // if hide
  251. continue;
  252. }
  253. var x1_left = document.getElementById(key2).offsetLeft + 1;
  254. var x1_right = x1_left + document.getElementById(key2).offsetWidth;
  255. var x2_left = document.getElementById(contr[K][key][key2][key3][0]).offsetLeft;
  256. var x2_right = x2_left + document.getElementById(contr[K][key][key2][key3][0]).offsetWidth;
  257. a[0] = Math.abs(x1_left - x2_left);
  258. a[1] = Math.abs(x1_left - x2_right);
  259. a[2] = Math.abs(x1_right - x2_left);
  260. a[3] = Math.abs(x1_right - x2_right);
  261. n = s_left = s_right = 0;
  262. for (var i = 1; i < 4; i++) {
  263. if (a[n] > a[i]) {
  264. n = i;
  265. }
  266. }
  267. if (n == 1) {
  268. x1 = x1_left - sm_s;
  269. x2 = x2_right + sm_s;
  270. if (x1 < x2) {
  271. n = 0;
  272. }
  273. }
  274. if (n == 2) {
  275. x1 = x1_right + sm_s;
  276. x2 = x2_left - sm_s;
  277. if (x1 > x2) {
  278. n = 0;
  279. }
  280. }
  281. if (n == 3) {
  282. x1 = x1_right + sm_s;
  283. x2 = x2_right + sm_s;
  284. s_right = 1;
  285. }
  286. if (n === 0) {
  287. x1 = x1_left - sm_s;
  288. x2 = x2_left - sm_s;
  289. s_left = 1;
  290. }
  291. //alert(key2 + "." + key3);
  292. var row_offset_top = 0;
  293. //alert('id_tbody_' + key2);
  294. //alert(document.getElementById('id_hide_tbody_' + key2));
  295. var tab_hide_button = document.getElementById('id_hide_tbody_' + key2);
  296. //alert(tab_hide_button.innerHTML);
  297. if (tab_hide_button.innerHTML == 'v') {
  298. row_offset_top = document.getElementById(key2 + "." + key3).offsetTop;
  299. }
  300. var y1 = document.getElementById(key2).offsetTop
  301. + row_offset_top
  302. + height_field;
  303. //alert(1);
  304. row_offset_top = 0;
  305. var tab_hide_button = document.getElementById('id_hide_tbody_' + contr[K][key][key2][key3][0]);
  306. if (tab_hide_button.innerHTML == 'v') {
  307. row_offset_top = document.getElementById(contr[K][key][key2][key3][0]
  308. + '.' + contr[K][key][key2][key3][1]).offsetTop;
  309. }
  310. var y2 =
  311. document.getElementById(contr[K][key][key2][key3][0]).offsetTop
  312. + row_offset_top
  313. + height_field;
  314. //alert(y1 + ' - ' + key2 + "." + key3);
  315. Line0(
  316. x1 - sm_x,
  317. y1 - sm_y,
  318. x2 - sm_x,
  319. y2 - sm_y,
  320. getColorByTarget(contr[K][key][key2][key3][0] + '.' + contr[K][key][key2][key3][1])
  321. );
  322. }
  323. }
  324. }
  325. }
  326. }
  327. /**
  328. * draws a line from x1:y1 to x2:y2 with color
  329. */
  330. function Line(x1, y1, x2, y2, color_line)
  331. {
  332. var canvas = document.getElementById("canvas");
  333. var ctx = canvas.getContext("2d");
  334. ctx.strokeStyle = color_line;
  335. ctx.lineWidth = 1;
  336. ctx.beginPath();
  337. ctx.moveTo(x1, y1);
  338. ctx.lineTo(x2, y2);
  339. ctx.stroke();
  340. }
  341. /**
  342. * draws a relation/constraint line, whether angular or not
  343. */
  344. function Line0(x1, y1, x2, y2, color_line)
  345. {
  346. if (! show_relation_lines) {
  347. return;
  348. }
  349. Circle(x1, y1, 3, 3, color_line);
  350. Rect(x2 - 1, y2 - 2, 4, 4, color_line);
  351. if (ON_angular_direct) {
  352. Line2(x1, y1, x2, y2, color_line);
  353. } else {
  354. Line3(x1, y1, x2, y2, color_line);
  355. }
  356. }
  357. /**
  358. * draws a angular relation/constraint line
  359. */
  360. function Line2(x1, y1, x2, y2, color_line)
  361. {
  362. var x1_ = x1;
  363. var x2_ = x2;
  364. if (s_right) {
  365. x1_ += sm_add;
  366. x2_ += sm_add;
  367. } else if (s_left) {
  368. x1_ -= sm_add;
  369. x2_ -= sm_add;
  370. } else if (x1 < x2) {
  371. x1_ += sm_add;
  372. x2_ -= sm_add;
  373. } else {
  374. x1_ -= sm_add;
  375. x2_ += sm_add;
  376. }
  377. Line(x1, y1, x1_, y1, color_line);
  378. Line(x2, y2, x2_, y2, color_line);
  379. Line(x1_, y1, x2_, y2, color_line);
  380. }
  381. /**
  382. * draws a relation/constraint line
  383. */
  384. function Line3(x1, y1, x2, y2, color_line)
  385. {
  386. var x1_ = x1;
  387. var x2_ = x2;
  388. if (s_right) {
  389. if (x1 < x2) {
  390. x1_ += x2 - x1 + sm_add;
  391. x2_ += sm_add;
  392. } else {
  393. x2_ += x1 - x2 + sm_add;
  394. x1_ += sm_add;
  395. }
  396. Line(x1, y1, x1_, y1, color_line);
  397. Line(x2, y2, x2_, y2, color_line);
  398. Line(x1_, y1, x2_, y2, color_line);
  399. return;
  400. }
  401. if (s_left) {
  402. if (x1 < x2) {
  403. x2_ -= x2 - x1 + sm_add;
  404. x1_ -= sm_add;
  405. } else {
  406. x1_ -= x1 - x2 + sm_add;
  407. x2_ -= sm_add;
  408. }
  409. Line(x1, y1, x1_, y1, color_line);
  410. Line(x2, y2, x2_, y2, color_line);
  411. Line(x1_, y1, x2_, y2, color_line);
  412. return;
  413. }
  414. var x_s = (x1 + x2) / 2;
  415. Line(x1, y1, x_s, y1, color_line);
  416. Line(x_s, y2, x2, y2, color_line);
  417. Line(x_s, y1, x_s, y2, color_line);
  418. }
  419. function Circle(x, y, r, w, color)
  420. {
  421. var ctx = document.getElementById('canvas').getContext('2d');
  422. ctx.beginPath();
  423. ctx.moveTo(x, y);
  424. ctx.lineWidth = w;
  425. ctx.strokeStyle = color;
  426. ctx.arc(x, y, r, 0, 2 * Math.PI, true);
  427. ctx.stroke();
  428. }
  429. function Clear()
  430. {
  431. var canvas = document.getElementById("canvas");
  432. var ctx = canvas.getContext("2d");
  433. ctx.clearRect(0, 0, canvas_width, canvas_height);
  434. }
  435. function Rect(x1, y1, w, h, color)
  436. {
  437. var ctx = document.getElementById('canvas').getContext('2d');
  438. ctx.fillStyle = color;
  439. ctx.fillRect(x1, y1, w, h);
  440. }
  441. //--------------------------- FULLSCREEN -------------------------------------
  442. function Enter_fullscreen()
  443. {
  444. if (! $.FullScreen.isFullScreen()) {
  445. $('#enterFullscreen').hide();
  446. $('#exitFullscreen').show();
  447. $('#page_content')
  448. .addClass('content_fullscreen')
  449. .css({'width': screen.width - 5, 'height': screen.height - 5})
  450. .requestFullScreen();
  451. Top_menu_reposition($('#key_Left_Right')[0]);
  452. }
  453. }
  454. function Exit_fullscreen()
  455. {
  456. if ($.FullScreen.isFullScreen()) {
  457. $.FullScreen.cancelFullScreen();
  458. }
  459. }
  460. //------------------------------ SAVE ------------------------------------------
  461. function Save(url) // (del?) no for pdf
  462. {
  463. for (var key in j_tabs) {
  464. document.getElementById('t_x_' + key + '_').value = parseInt(document.getElementById(key).style.left, 10);
  465. document.getElementById('t_y_' + key + '_').value = parseInt(document.getElementById(key).style.top, 10);
  466. document.getElementById('t_v_' + key + '_').value = document.getElementById('id_tbody_' + key).style.display == 'none' ? 0 : 1;
  467. document.getElementById('t_h_' + key + '_').value = document.getElementById('check_vis_' + key).checked ? 1 : 0;
  468. }
  469. document.form1.action = url;
  470. $(document.form1).submit();
  471. }
  472. function Get_url_pos()
  473. {
  474. var poststr = '';
  475. for (var key in j_tabs) {
  476. poststr += '&t_x[' + key + ']=' + parseInt(document.getElementById(key).style.left, 10);
  477. poststr += '&t_y[' + key + ']=' + parseInt(document.getElementById(key).style.top, 10);
  478. poststr += '&t_v[' + key + ']=' + (document.getElementById('id_tbody_' + key).style.display == 'none' ? 0 : 1);
  479. poststr += '&t_h[' + key + ']=' + (document.getElementById('check_vis_' + key).checked ? 1 : 0);
  480. }
  481. return poststr;
  482. }
  483. function Save2()
  484. {
  485. _change = 0;
  486. var poststr = 'IS_AJAX=1&server=' + server + '&db=' + db + '&token=' + token + '&die_save_pos=1';
  487. poststr += Get_url_pos();
  488. makeRequest('pmd_save_pos.php', poststr);
  489. }
  490. function Grid()
  491. {
  492. if (!ON_grid) {
  493. ON_grid = 1;
  494. document.getElementById('grid_button').className = 'M_butt_Selected_down';
  495. } else {
  496. document.getElementById('grid_button').className = 'M_butt';
  497. ON_grid = 0;
  498. }
  499. }
  500. function Angular_direct()
  501. {
  502. if (ON_angular_direct) {
  503. ON_angular_direct = 0;
  504. document.getElementById('angular_direct_button').className = 'M_butt_Selected_down';
  505. } else {
  506. ON_angular_direct = 1;
  507. document.getElementById('angular_direct_button').className = 'M_butt';
  508. }
  509. Re_load();
  510. }
  511. //++++++++++++++++++++++++++++++ RELATION ++++++++++++++++++++++++++++++++++++++
  512. function Start_relation()
  513. {
  514. if (ON_display_field) {
  515. return;
  516. }
  517. if (!ON_relation) {
  518. document.getElementById('foreign_relation').style.display = '';
  519. ON_relation = 1;
  520. document.getElementById('pmd_hint').innerHTML = PMA_messages.strSelectReferencedKey;
  521. document.getElementById('pmd_hint').style.display = 'block';
  522. document.getElementById('rel_button').className = 'M_butt_Selected_down';
  523. } else {
  524. document.getElementById('pmd_hint').innerHTML = "";
  525. document.getElementById('pmd_hint').style.display = 'none';
  526. document.getElementById('rel_button').className = 'M_butt';
  527. click_field = 0;
  528. ON_relation = 0;
  529. }
  530. }
  531. function Click_field(T, f, PK) // table field
  532. {
  533. if (ON_relation) {
  534. if (!click_field) {
  535. //.style.display=='none' .style.display = 'none'
  536. if (!PK) {
  537. alert(PMA_messages.strPleaseSelectPrimaryOrUniqueKey);
  538. return;// 0;
  539. }//PK
  540. if (j_tabs[db + '.' + T] != '1') {
  541. document.getElementById('foreign_relation').style.display = 'none';
  542. }
  543. click_field = 1;
  544. link_relation = "T1=" + T + "&F1=" + f;
  545. document.getElementById('pmd_hint').innerHTML = PMA_messages.strSelectForeignKey;
  546. } else {
  547. Start_relation(); // hidden hint...
  548. if (j_tabs[db + '.' + T] != '1' || !PK) {
  549. document.getElementById('foreign_relation').style.display = 'none';
  550. }
  551. var left = Glob_X - (document.getElementById('layer_new_relation').offsetWidth>>1);
  552. document.getElementById('layer_new_relation').style.left = left + 'px';
  553. var top = Glob_Y - document.getElementById('layer_new_relation').offsetHeight;
  554. document.getElementById('layer_new_relation').style.top = top + 'px';
  555. document.getElementById('layer_new_relation').style.display = 'block';
  556. link_relation += '&T2=' + T + '&F2=' + f;
  557. }
  558. }
  559. if (ON_display_field) {
  560. // if is display field
  561. if (display_field[T] == f) {
  562. //alert(T);
  563. //s = '';for(k in display_field)s += k + ' = ' + display_field[k] + ',';alert(s);
  564. old_class = 'tab_field';
  565. //display_field.splice(T, 1);
  566. delete display_field[T];
  567. //s = '';for(k in display_field)s += k + ' = ' + display_field[k] + ', ';alert(s);
  568. //n = 0;for(k in display_field)n++;alert(n);
  569. } else {
  570. old_class = 'tab_field_3';
  571. if (display_field[T]) {
  572. document.getElementById('id_tr_' + T + '.' + display_field[T]).className = 'tab_field';
  573. //display_field.splice(T, 1);
  574. delete display_field[T];
  575. }
  576. display_field[T] = f;
  577. }
  578. ON_display_field = 0;
  579. document.getElementById('pmd_hint').innerHTML = "";
  580. document.getElementById('pmd_hint').style.display = 'none';
  581. document.getElementById('display_field_button').className = 'M_butt';
  582. makeRequest('pmd_display_field.php', 'T=' + T + '&F=' + f + '&server=' + server + '&db=' + db + '&token=' + token);
  583. }
  584. }
  585. function New_relation()
  586. {
  587. document.getElementById('layer_new_relation').style.display = 'none';
  588. link_relation += '&server=' + server + '&db=' + db + '&token=' + token + '&die_save_pos=0';
  589. link_relation += '&on_delete=' + document.getElementById('on_delete').value + '&on_update=' + document.getElementById('on_update').value;
  590. link_relation += Get_url_pos();
  591. //alert(link_relation);
  592. makeRequest('pmd_relation_new.php', link_relation);
  593. }
  594. //-------------------------- create tables -------------------------------------
  595. function Start_table_new()
  596. {
  597. PMA_commonParams.set('table', '');
  598. PMA_commonActions.refreshMain('tbl_create.php');
  599. }
  600. function Start_tab_upd(table)
  601. {
  602. PMA_commonParams.set('table', table);
  603. PMA_commonActions.refreshMain('tbl_structure.php');
  604. }
  605. //--------------------------- hide tables --------------------------------------
  606. function Small_tab_all(id_this) // max/min all tables
  607. {
  608. if (id_this.alt == "v") {
  609. for (var key in j_tabs) {
  610. if (document.getElementById('id_hide_tbody_' + key).innerHTML == "v") {
  611. Small_tab(key, 0);
  612. }
  613. }
  614. id_this.alt = ">";
  615. id_this.src = pmaThemeImage + "pmd/rightarrow1.png";
  616. } else {
  617. for (var key in j_tabs) {
  618. if (document.getElementById('id_hide_tbody_' + key).innerHTML != "v") {
  619. Small_tab(key, 0);
  620. }
  621. }
  622. id_this.alt = "v";
  623. id_this.src = pmaThemeImage + "pmd/downarrow1.png";
  624. }
  625. Re_load();
  626. }
  627. function Small_tab_invert() // invert max/min all tables
  628. {
  629. for (var key in j_tabs) {
  630. Small_tab(key, 0);
  631. }
  632. Re_load();
  633. }
  634. function Relation_lines_invert()
  635. {
  636. show_relation_lines = ! show_relation_lines;
  637. Re_load();
  638. }
  639. function Small_tab_refresh()
  640. {
  641. for (var key in j_tabs) {
  642. if (document.getElementById('id_hide_tbody_' + key).innerHTML != "v") {
  643. Small_tab(key, 0);
  644. Small_tab(key, 0);
  645. }
  646. }
  647. }
  648. function Small_tab(t, re_load)
  649. {
  650. var id = document.getElementById('id_tbody_' + t);
  651. var id_this = document.getElementById('id_hide_tbody_' + t);
  652. var id_t = document.getElementById(t);
  653. id_t.style.width = id_t.offsetWidth + 'px';
  654. if (id_this.innerHTML == "v") {
  655. //---CROSS
  656. id.style.display = 'none';
  657. id_this.innerHTML = '>';
  658. } else {
  659. id.style.display = '';
  660. id_this.innerHTML = 'v';
  661. }
  662. if (re_load) {
  663. Re_load();
  664. }
  665. }
  666. //------------------------------------------------------------------------------
  667. function Select_tab(t)
  668. {
  669. var id_zag = document.getElementById('id_zag_' + t);
  670. if (id_zag.className != 'tab_zag_3') {
  671. document.getElementById('id_zag_' + t).className = 'tab_zag_2';
  672. } else {
  673. document.getElementById('id_zag_' + t).className = 'tab_zag';
  674. }
  675. //----------
  676. var id_t = document.getElementById(t);
  677. window.scrollTo(parseInt(id_t.style.left, 10) - 300, parseInt(id_t.style.top, 10) - 300);
  678. setTimeout(
  679. function () {
  680. document.getElementById('id_zag_' + t).className = 'tab_zag';
  681. },
  682. 800
  683. );
  684. }
  685. //------------------------------------------------------------------------------
  686. function Canvas_click(id)
  687. {
  688. var n = 0;
  689. var relation_name = 0;
  690. var selected = 0;
  691. var a = [];
  692. var Key0, Key1, Key2, Key3, Key, x1, x2;
  693. var K, key, key2, key3;
  694. var Local_X = $.FullScreen.isFullScreen() ? Glob_X : Glob_X - document.getElementById("canvas_outer").offsetLeft;
  695. var Local_Y = Glob_Y - document.getElementById("canvas_outer").offsetTop;
  696. Clear();
  697. for (K in contr) {
  698. for (key in contr[K]) {
  699. for (key2 in contr[K][key]) {
  700. for (key3 in contr[K][key][key2]) {
  701. if (!document.getElementById("check_vis_" + key2).checked
  702. || !document.getElementById("check_vis_" + contr[K][key][key2][key3][0]).checked) {
  703. continue; // if hide
  704. }
  705. var x1_left = document.getElementById(key2).offsetLeft + 1;//document.getElementById(key2+"."+key3).offsetLeft;
  706. var x1_right = x1_left + document.getElementById(key2).offsetWidth;
  707. var x2_left = document.getElementById(contr[K][key][key2][key3][0]).offsetLeft;//+document.getElementById(contr[K][key2][key3][0]+"."+contr[K][key2][key3][1]).offsetLeft
  708. var x2_right = x2_left + document.getElementById(contr[K][key][key2][key3][0]).offsetWidth;
  709. a[0] = Math.abs(x1_left - x2_left);
  710. a[1] = Math.abs(x1_left - x2_right);
  711. a[2] = Math.abs(x1_right - x2_left);
  712. a[3] = Math.abs(x1_right - x2_right);
  713. n = s_left = s_right = 0;
  714. for (var i = 1; i < 4; i++) {
  715. if (a[n] > a[i]) {
  716. n = i;
  717. }
  718. }
  719. if (n == 1) {
  720. x1 = x1_left - sm_s;
  721. x2 = x2_right + sm_s;
  722. if (x1 < x2) {
  723. n = 0;
  724. }
  725. }
  726. if (n == 2) {
  727. x1 = x1_right + sm_s;
  728. x2 = x2_left - sm_s;
  729. if (x1 > x2) {
  730. n = 0;
  731. }
  732. }
  733. if (n == 3) {
  734. x1 = x1_right + sm_s;
  735. x2 = x2_right + sm_s;
  736. s_right = 1;
  737. }
  738. if (n === 0) {
  739. x1 = x1_left - sm_s;
  740. x2 = x2_left - sm_s;
  741. s_left = 1;
  742. }
  743. var y1 = document.getElementById(key2).offsetTop + document.getElementById(key2 + "." + key3).offsetTop + height_field;
  744. var y2 = document.getElementById(contr[K][key][key2][key3][0]).offsetTop +
  745. document.getElementById(contr[K][key][key2][key3][0] + "." + contr[K][key][key2][key3][1]).offsetTop + height_field;
  746. if (!selected && Local_X > x1 - 10 && Local_X < x1 + 10 && Local_Y > y1 - 7 && Local_Y < y1 + 7) {
  747. Line0(x1 - sm_x, y1 - sm_y, x2 - sm_x, y2 - sm_y, "rgba(255,0,0,1)");
  748. selected = 1; // Rect(x1-sm_x,y1-sm_y,10,10,"rgba(0,255,0,1)");
  749. relation_name = key; //
  750. Key0 = contr[K][key][key2][key3][0];
  751. Key1 = contr[K][key][key2][key3][1];
  752. Key2 = key2;
  753. Key3 = key3;
  754. Key = K;
  755. } else {
  756. Line0(
  757. x1 - sm_x,
  758. y1 - sm_y,
  759. x2 - sm_x,
  760. y2 - sm_y,
  761. getColorByTarget(contr[K][key][key2][key3][0] + '.' + contr[K][key][key2][key3][1])
  762. );
  763. }
  764. }
  765. }
  766. }
  767. }
  768. if (selected) {
  769. // select relations
  770. //alert(Key0+' - '+Key1+' - '+Key2+' - '+Key3);
  771. var left = Glob_X - (document.getElementById('layer_upd_relation').offsetWidth>>1);
  772. document.getElementById('layer_upd_relation').style.left = left + 'px';
  773. var top = Glob_Y - document.getElementById('layer_upd_relation').offsetHeight - 10;
  774. document.getElementById('layer_upd_relation').style.top = top + 'px';
  775. document.getElementById('layer_upd_relation').style.display = 'block';
  776. link_relation = 'T1=' + Key0 + '&F1=' + Key1 + '&T2=' + Key2 + '&F2=' + Key3 + '&K=' + Key;
  777. }
  778. }
  779. function Upd_relation()
  780. {
  781. document.getElementById('layer_upd_relation').style.display = 'none';
  782. link_relation += '&server=' + server + '&db=' + db + '&token=' + token + '&die_save_pos=0';
  783. link_relation += Get_url_pos();
  784. makeRequest('pmd_relation_upd.php', link_relation);
  785. }
  786. function VisibleTab(id, t_n)
  787. {
  788. if (id.checked) {
  789. document.getElementById(t_n).style.display = 'block';
  790. } else {
  791. document.getElementById(t_n).style.display = 'none';
  792. }
  793. Re_load();
  794. }
  795. function Hide_tab_all(id_this) // max/min all tables
  796. {
  797. if (id_this.alt == 'v') {
  798. id_this.alt = '>';
  799. id_this.src = pmaThemeImage + "pmd/rightarrow1.png";
  800. } else {
  801. id_this.alt = 'v';
  802. id_this.src = pmaThemeImage + "pmd/downarrow1.png";
  803. }
  804. var E = document.form1;
  805. for (var i = 0; i < E.elements.length; i++) {
  806. if (E.elements[i].type == "checkbox" && E.elements[i].id.substring(0, 10) == 'check_vis_') {
  807. if (id_this.alt == 'v') {
  808. E.elements[i].checked = true;
  809. document.getElementById(E.elements[i].value).style.display = '';
  810. } else {
  811. E.elements[i].checked = false;
  812. document.getElementById(E.elements[i].value).style.display = 'none';
  813. }
  814. }
  815. }
  816. Re_load();
  817. }
  818. function in_array_k(x, m)
  819. {
  820. var b = 0;
  821. for (var u in m) {
  822. if (x == u) {
  823. b = 1;
  824. break;
  825. }
  826. }
  827. return b;
  828. }
  829. function No_have_constr(id_this)
  830. {
  831. var a = [];
  832. var K, key, key2, key3;
  833. for (K in contr) {
  834. for (key in contr[K]) {
  835. // contr name
  836. for (key2 in contr[K][key]) {
  837. // table name
  838. for (key3 in contr[K][key][key2]) {
  839. // field name
  840. a[key2] = a[contr[K][key][key2][key3][0]] = 1; // exist constr
  841. }
  842. }
  843. }
  844. }
  845. if (id_this.alt == 'v') {
  846. id_this.alt = '>';
  847. id_this.src = pmaThemeImage + "pmd/rightarrow2.png";
  848. } else {
  849. id_this.alt = 'v';
  850. id_this.src = pmaThemeImage + "pmd/downarrow2.png";
  851. }
  852. var E = document.form1;
  853. for (var i = 0; i < E.elements.length; i++) {
  854. if (E.elements[i].type == "checkbox" && E.elements[i].id.substring(0, 10) == 'check_vis_') {
  855. if (!in_array_k(E.elements[i].value, a)) {
  856. if (id_this.alt == 'v') {
  857. E.elements[i].checked = true;
  858. document.getElementById(E.elements[i].value).style.display = '';
  859. } else {
  860. E.elements[i].checked = false;
  861. document.getElementById(E.elements[i].value).style.display = 'none';
  862. }
  863. }
  864. }
  865. }
  866. }
  867. function PDF_save()
  868. {
  869. // var WinPDF =
  870. // window.open("pmd_pdf.php?token="+token+"&db="+db,"wind1", "top=200,left=200,width=200,height=100,resizable=yes,scrollbars=yes,menubar=no");
  871. Save('pmd_pdf.php?server=' + server + '&token=' + token + '&db=' + db);
  872. }
  873. function General_scroll()
  874. {
  875. /*
  876. if (!document.getElementById('show_relation_olways').checked) {
  877. document.getElementById("canvas").style.display = 'none';
  878. clearTimeout(timeoutID);
  879. timeoutID = setTimeout(General_scroll_end, 500);
  880. }
  881. */
  882. //if (timeoutID)
  883. clearTimeout(timeoutID);
  884. timeoutID = setTimeout(
  885. function () {
  886. document.getElementById('top_menu').style.left = document.body.scrollLeft + 'px';
  887. document.getElementById('top_menu').style.top = document.body.scrollTop + 'px';
  888. },
  889. 200
  890. );
  891. }
  892. /*
  893. function General_scroll_end()
  894. {
  895. document.getElementById('layer_menu').style.left = document.body.scrollLeft;
  896. document.getElementById('layer_menu').style.top = document.body.scrollTop + document.getElementById('top_menu').offsetHeight;
  897. if (isIE) {
  898. document.getElementById('layer_menu').style.left = document.body.scrollLeft;
  899. document.getElementById('layer_menu').style.top = document.body.scrollTop + document.getElementById('top_menu').offsetHeight;
  900. }
  901. document.getElementById("canvas").style.display = 'block';
  902. }
  903. */
  904. function Show_left_menu(id_this) // max/min all tables
  905. {
  906. if (id_this.alt == "v") {
  907. var pos = $("#top_menu").offset();
  908. var height = $("#top_menu").height();
  909. document.getElementById("layer_menu").style.top = '0px';
  910. document.getElementById("layer_menu").style.display = 'block';
  911. id_this.alt = ">";
  912. id_this.src = pmaThemeImage + "pmd/uparrow2_m.png";
  913. if (isIE) {
  914. General_scroll();
  915. }
  916. } else {
  917. document.getElementById("layer_menu").style.top = -1000 + 'px'; //fast scroll
  918. document.getElementById("layer_menu").style.display = 'none';
  919. id_this.alt = "v";
  920. id_this.src = pmaThemeImage + "pmd/downarrow2_m.png";
  921. }
  922. }
  923. //------------------------------------------------------------------------------
  924. function Top_menu_right(id_this)
  925. {
  926. if (id_this.alt == ">") {
  927. moveTopMenuToRight(id_this);
  928. id_this.alt = "<";
  929. id_this.src = pmaThemeImage + "pmd/2leftarrow_m.png";
  930. } else {
  931. document.getElementById('top_menu').style.paddingLeft = 0;
  932. id_this.alt = ">";
  933. id_this.src = pmaThemeImage + "pmd/2rightarrow_m.png";
  934. }
  935. }
  936. function Top_menu_reposition(id_this)
  937. {
  938. if (id_this.alt == "<") {
  939. moveTopMenuToRight(id_this);
  940. }
  941. }
  942. function moveTopMenuToRight(id_this)
  943. {
  944. var top_menu_width = 10;
  945. $('#top_menu').children().each(function () {
  946. top_menu_width += $(this).outerWidth(true);
  947. });
  948. var offset = parseInt(document.getElementById('canvas_outer').offsetWidth - top_menu_width, 10);
  949. document.getElementById('top_menu').style.paddingLeft = offset + 'px';
  950. }
  951. //------------------------------------------------------------------------------
  952. function Start_display_field()
  953. {
  954. if (ON_relation) {
  955. return;
  956. }
  957. if (!ON_display_field) {
  958. ON_display_field = 1;
  959. document.getElementById('pmd_hint').innerHTML = PMA_messages.strChangeDisplay;
  960. document.getElementById('pmd_hint').style.display = 'block';
  961. document.getElementById('display_field_button').className = 'M_butt_Selected_down';//'#FFEE99';gray #AAAAAA
  962. if (isIE) { // correct for IE
  963. document.getElementById('display_field_button').className = 'M_butt_Selected_down_IE';
  964. }
  965. } else {
  966. document.getElementById('pmd_hint').innerHTML = "";
  967. document.getElementById('pmd_hint').style.display = 'none';
  968. document.getElementById('display_field_button').className = 'M_butt';
  969. ON_display_field = 0;
  970. }
  971. }
  972. //------------------------------------------------------------------------------
  973. var TargetColors = [];
  974. function getColorByTarget(target)
  975. {
  976. var color = ''; //"rgba(0,100,150,1)";
  977. for (var i in TargetColors) {
  978. if (TargetColors[i][0] == target) {
  979. color = TargetColors[i][1];
  980. break;
  981. }
  982. }
  983. if (color.length === 0) {
  984. var i = TargetColors.length + 1;
  985. var d = i % 6;
  986. var j = (i - d) / 6;
  987. j = j % 4;
  988. j++;
  989. var color_case = new Array(
  990. new Array(1, 0, 0),
  991. new Array(0, 1, 0),
  992. new Array(0, 0, 1),
  993. new Array(1, 1, 0),
  994. new Array(1, 0, 1),
  995. new Array(0, 1, 1)
  996. );
  997. var a = color_case[d][0];
  998. var b = color_case[d][1];
  999. var c = color_case[d][2];
  1000. var e = (1 - (j - 1) / 6);
  1001. var r = Math.round(a * 200 * e);
  1002. var g = Math.round(b * 200 * e);
  1003. var b = Math.round(c * 200 * e);
  1004. var color = "rgba(" + r + "," + g + "," + b + ",1)";
  1005. TargetColors.push(new Array(target, color));
  1006. }
  1007. return color;
  1008. }
  1009. function Click_option(id_this, column_name, table_name)
  1010. {
  1011. var left = Glob_X - (document.getElementById(id_this).offsetWidth>>1);
  1012. document.getElementById(id_this).style.left = left + 'px';
  1013. // var top = Glob_Y - document.getElementById(id_this).offsetHeight - 10;
  1014. document.getElementById(id_this).style.top = (screen.height / 4) + 'px';
  1015. document.getElementById(id_this).style.display = 'block';
  1016. document.getElementById('option_col_name').innerHTML = '<strong>' + $.sprintf(PMA_messages.strAddOption, column_name) + '</strong>';
  1017. col_name = column_name;
  1018. tab_name = table_name;
  1019. }
  1020. function Close_option()
  1021. {
  1022. document.getElementById('pmd_optionse').style.display = 'none';
  1023. }
  1024. function Select_all(id_this, owner)
  1025. {
  1026. var parent = document.form1;
  1027. downer = owner;
  1028. var i;
  1029. var k;
  1030. var tab = [];
  1031. for (i = 0; i < parent.elements.length; i++) {
  1032. if (parent.elements[i].type == "checkbox" && parent.elements[i].id.substring(0, (9 + id_this.length)) == 'select_' + id_this + '._') {
  1033. if (document.getElementById('select_all_' + id_this).checked === true) {
  1034. parent.elements[i].checked = true;
  1035. parent.elements[i].disabled = true;
  1036. var temp = '`' + id_this.substring(owner.length + 1) + '`.*';
  1037. } else {
  1038. parent.elements[i].checked = false;
  1039. parent.elements[i].disabled = false;
  1040. }
  1041. }
  1042. }
  1043. if (document.getElementById('select_all_' + id_this).checked === true) {
  1044. select_field.push('`' + id_this.substring(owner.length + 1) + '`.*');
  1045. tab = id_this.split(".");
  1046. from_array.push(tab[1]);
  1047. } else {
  1048. for (i = 0; i < select_field.length; i++) {
  1049. if (select_field[i] == ('`' + id_this.substring(owner.length + 1) + '`.*')) {
  1050. select_field.splice(i, 1);
  1051. }
  1052. }
  1053. for (k = 0; k < from_array.length; k++) {
  1054. if (from_array[k] == id_this) {
  1055. from_array.splice(k, 1);
  1056. break;
  1057. }
  1058. }
  1059. }
  1060. Re_load();
  1061. }
  1062. function Table_onover(id_this, val, buil)
  1063. {
  1064. if (!val) {
  1065. document.getElementById("id_zag_" + id_this).className = "tab_zag_2";
  1066. if (buil) {
  1067. document.getElementById("id_zag_" + id_this + "_2").className = "tab_zag_2";
  1068. }
  1069. } else {
  1070. document.getElementById("id_zag_" + id_this).className = "tab_zag";
  1071. if (buil) {
  1072. document.getElementById("id_zag_" + id_this + "_2").className = "tab_zag";
  1073. }
  1074. }
  1075. }
  1076. /* This function stores selected column information in select_field[]
  1077. * In case column is checked it add else it deletes
  1078. *
  1079. */
  1080. function store_column(id_this, owner, col)
  1081. {
  1082. var i;
  1083. var k;
  1084. if (document.getElementById('select_' + owner + '.' + id_this + '._' + col).checked === true) {
  1085. select_field.push('`' + id_this + '`.`' + col + '`');
  1086. from_array.push(id_this);
  1087. } else {
  1088. for (i = 0; i < select_field.length; i++) {
  1089. if (select_field[i] == ('`' + id_this + '`.`' + col + '`')) {
  1090. select_field.splice(i, 1);
  1091. break;
  1092. }
  1093. }
  1094. for (k = 0; k < from_array.length; k++) {
  1095. if (from_array[k] == id_this) {
  1096. from_array.splice(k, 1);
  1097. break;
  1098. }
  1099. }
  1100. }
  1101. }
  1102. /**
  1103. * This function builds object and adds them to history_array
  1104. * first it does a few checks on each object, then makes an object(where,rename,groupby,aggregate,orderby)
  1105. * then a new history object is made and finally all these history objects are addded to history_array[]
  1106. *
  1107. **/
  1108. function add_object()
  1109. {
  1110. var rel = document.getElementById('rel_opt');
  1111. var sum = 0;
  1112. var init = history_array.length;
  1113. if (rel.value != '--') {
  1114. if (document.getElementById('Query').value === "") {
  1115. document.getElementById('pmd_hint').innerHTML = "value/subQuery is empty";
  1116. document.getElementById('pmd_hint').style.display = 'block';
  1117. return;
  1118. }
  1119. var p = document.getElementById('Query');
  1120. var where_obj = new where(rel.value, p.value);//make where object
  1121. history_array.push(new history(col_name, where_obj, tab_name, h_tabs[downer + '.' + tab_name], "Where"));
  1122. sum = sum + 1;
  1123. rel.value = '--';
  1124. p.value = "";
  1125. }
  1126. if (document.getElementById('new_name').value !== "") {
  1127. var rename_obj = new rename(document.getElementById('new_name').value);//make Rename object
  1128. history_array.push(new history(col_name, rename_obj, tab_name, h_tabs[downer + '.' + tab_name], "Rename"));
  1129. sum = sum + 1;
  1130. document.getElementById('new_name').value = "";
  1131. }
  1132. if (document.getElementById('operator').value != '---') {
  1133. var aggregate_obj = new aggregate(document.getElementById('operator').value);
  1134. history_array.push(new history(col_name, aggregate_obj, tab_name, h_tabs[downer + '.' + tab_name], "Aggregate"));
  1135. sum = sum + 1;
  1136. document.getElementById('operator').value = '---';
  1137. //make aggregate operator
  1138. }
  1139. if (document.getElementById('groupby').checked === true) {
  1140. history_array.push(new history(col_name, 'GroupBy', tab_name, h_tabs[downer + '.' + tab_name], "GroupBy"));
  1141. sum = sum + 1;
  1142. document.getElementById('groupby').checked = false;
  1143. //make groupby
  1144. }
  1145. if (document.getElementById('h_rel_opt').value != '--') {
  1146. if (document.getElementById('having').value === "") {
  1147. document.getElementById('pmd_hint').innerHTML = "value/subQuery is empty";
  1148. document.getElementById('pmd_hint').style.display = 'block';
  1149. return;
  1150. }
  1151. var p = document.getElementById('having');
  1152. var where_obj = new having(
  1153. document.getElementById('h_rel_opt').value,
  1154. p.value,
  1155. document.getElementById('h_operator').value
  1156. );//make where object
  1157. history_array.push(new history(col_name, where_obj, tab_name, h_tabs[downer + '.' + tab_name], "Having"));
  1158. sum = sum + 1;
  1159. document.getElementById('h_rel_opt').value = '--';
  1160. document.getElementById('h_operator').value = '---';
  1161. p.value = ""; //make having
  1162. }
  1163. if (document.getElementById('orderby').checked === true) {
  1164. history_array.push(new history(col_name, 'OrderBy', tab_name, h_tabs[downer + '.' + tab_name], "OrderBy"));
  1165. sum = sum + 1;
  1166. document.getElementById('orderby').checked = false;
  1167. //make orderby
  1168. }
  1169. PMA_ajaxShowMessage($.sprintf(PMA_messages.strObjectsCreated, sum));
  1170. //output sum new objects created
  1171. var existingDiv = document.getElementById('ab');
  1172. existingDiv.innerHTML = display(init, history_array.length);
  1173. Close_option();
  1174. panel(0);
  1175. }