main.twig 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100
  1. {# Invisible characters will make javascript crash #}
  2. <script type="text/javascript">
  3. var designerConfig = {{ designer_config|raw }};
  4. </script>
  5. {# side menu #}
  6. {% if not has_query %}
  7. <div id="name-panel">
  8. <span id="page_name">
  9. {{ selected_page == null ? 'Untitled'|trans : selected_page }}
  10. </span>
  11. <span id="saved_state">
  12. {{ selected_page == null ? '*' : '' }}
  13. </span>
  14. </div>
  15. {% endif %}
  16. <div class="designer_header side-menu" id="side_menu">
  17. <a class="M_butt" id="key_Show_left_menu" href="#">
  18. <img title="{% trans 'Show/Hide tables list' %}"
  19. alt="v"
  20. src="{{ theme.getImgPath('designer/downarrow2_m.png') }}"
  21. data-down="{{ theme.getImgPath('designer/downarrow2_m.png') }}"
  22. data-up="{{ theme.getImgPath('designer/uparrow2_m.png') }}">
  23. <span class="hide hidable">
  24. {% trans 'Show/Hide tables list' %}
  25. </span>
  26. </a>
  27. <a href="#" id="toggleFullscreen" class="M_butt">
  28. <img title="{% trans 'View in fullscreen' %}"
  29. src="{{ theme.getImgPath('designer/viewInFullscreen.png') }}"
  30. data-enter="{{ theme.getImgPath('designer/viewInFullscreen.png') }}"
  31. data-exit="{{ theme.getImgPath('designer/exitFullscreen.png') }}">
  32. <span class="hide hidable"
  33. data-exit="{% trans 'Exit fullscreen' %}"
  34. data-enter="{% trans 'View in fullscreen' %}">
  35. {% trans 'View in fullscreen' %}
  36. </span>
  37. </a>
  38. <a href="#" id="addOtherDbTables" class="M_butt">
  39. <img title="{% trans 'Add tables from other databases' %}"
  40. src="{{ theme.getImgPath('designer/other_table.png') }}">
  41. <span class="hide hidable">
  42. {% trans 'Add tables from other databases' %}
  43. </span>
  44. </a>
  45. {% if not has_query %}
  46. <a id="newPage" href="#" class="M_butt">
  47. <img title="{% trans 'New page' %}"
  48. alt=""
  49. src="{{ theme.getImgPath('designer/page_add.png') }}">
  50. <span class="hide hidable">
  51. {% trans 'New page' %}
  52. </span>
  53. </a>
  54. <a href="#" id="editPage" class="M_butt ajax">
  55. <img title="{% trans 'Open page' %}"
  56. src="{{ theme.getImgPath('designer/page_edit.png') }}">
  57. <span class="hide hidable">
  58. {% trans 'Open page' %}
  59. </span>
  60. </a>
  61. <a href="#" id="savePos" class="M_butt">
  62. <img title="{% trans 'Save page' %}"
  63. src="{{ theme.getImgPath('designer/save.png') }}">
  64. <span class="hide hidable">
  65. {% trans 'Save page' %}
  66. </span>
  67. </a>
  68. <a href="#" id="SaveAs" class="M_butt ajax">
  69. <img title="{% trans 'Save page as' %}"
  70. src="{{ theme.getImgPath('designer/save_as.png') }}">
  71. <span class="hide hidable">
  72. {% trans 'Save page as' %}
  73. </span>
  74. </a>
  75. <a href="#" id="delPages" class="M_butt ajax">
  76. <img title="{% trans 'Delete pages' %}"
  77. src="{{ theme.getImgPath('designer/page_delete.png') }}">
  78. <span class="hide hidable">
  79. {% trans 'Delete pages' %}
  80. </span>
  81. </a>
  82. <a href="#" id="StartTableNew" class="M_butt">
  83. <img title="{% trans 'Create table' %}"
  84. src="{{ theme.getImgPath('designer/table.png') }}">
  85. <span class="hide hidable">
  86. {% trans 'Create table' %}
  87. </span>
  88. </a>
  89. <a href="#" class="M_butt" id="rel_button">
  90. <img title="{% trans 'Create relationship' %}"
  91. src="{{ theme.getImgPath('designer/relation.png') }}">
  92. <span class="hide hidable">
  93. {% trans 'Create relationship' %}
  94. </span>
  95. </a>
  96. <a href="#" class="M_butt" id="display_field_button">
  97. <img title="{% trans 'Choose column to display' %}"
  98. src="{{ theme.getImgPath('designer/display_field.png') }}">
  99. <span class="hide hidable">
  100. {% trans 'Choose column to display' %}
  101. </span>
  102. </a>
  103. <a href="#" id="reloadPage" class="M_butt">
  104. <img title="{% trans 'Reload' %}"
  105. src="{{ theme.getImgPath('designer/reload.png') }}">
  106. <span class="hide hidable">
  107. {% trans 'Reload' %}
  108. </span>
  109. </a>
  110. <a href="{{ get_docu_link('faq', 'faq6-31') }}" target="_blank" rel="noopener noreferrer" class="M_butt">
  111. <img title="{% trans 'Help' %}"
  112. src="{{ theme.getImgPath('designer/help.png') }}">
  113. <span class="hide hidable">
  114. {% trans 'Help' %}
  115. </span>
  116. </a>
  117. {% endif %}
  118. <a href="#" class="{{ params_array['angular_direct'] }}" id="angular_direct_button">
  119. <img title="{% trans 'Angular links' %} / {% trans 'Direct links' %}"
  120. src="{{ theme.getImgPath('designer/ang_direct.png') }}">
  121. <span class="hide hidable">
  122. {% trans 'Angular links' %} / {% trans 'Direct links' %}
  123. </span>
  124. </a>
  125. <a href="#" class="{{ params_array['snap_to_grid'] }}" id="grid_button">
  126. <img title="{% trans 'Snap to grid' %}" src="{{ theme.getImgPath('designer/grid.png') }}">
  127. <span class="hide hidable">
  128. {% trans 'Snap to grid' %}
  129. </span>
  130. </a>
  131. <a href="#" class="{{ params_array['small_big_all'] }}" id="key_SB_all">
  132. <img title="{% trans 'Small/Big All' %}"
  133. alt="v"
  134. src="{{ theme.getImgPath('designer/downarrow1.png') }}"
  135. data-down="{{ theme.getImgPath('designer/downarrow1.png') }}"
  136. data-right="{{ theme.getImgPath('designer/rightarrow1.png') }}">
  137. <span class="hide hidable">
  138. {% trans 'Small/Big All' %}
  139. </span>
  140. </a>
  141. <a href="#" id="SmallTabInvert" class="M_butt">
  142. <img title="{% trans 'Toggle small/big' %}"
  143. src="{{ theme.getImgPath('designer/bottom.png') }}">
  144. <span class="hide hidable">
  145. {% trans 'Toggle small/big' %}
  146. </span>
  147. </a>
  148. <a href="#" id="relLineInvert" class="{{ params_array['relation_lines'] }}" >
  149. <img title="{% trans 'Toggle relationship lines' %}"
  150. src="{{ theme.getImgPath('designer/toggle_lines.png') }}">
  151. <span class="hide hidable">
  152. {% trans 'Toggle relationship lines' %}
  153. </span>
  154. </a>
  155. {% if not visual_builder %}
  156. <a href="#" id="exportPages" class="M_butt" >
  157. <img title="{% trans 'Export schema' %}"
  158. src="{{ theme.getImgPath('designer/export.png') }}">
  159. <span class="hide hidable">
  160. {% trans 'Export schema' %}
  161. </span>
  162. </a>
  163. {% else %}
  164. <a id="build_query_button"
  165. class="M_butt"
  166. href="#"
  167. class="M_butt">
  168. <img title="{% trans 'Build Query' %}"
  169. src="{{ theme.getImgPath('designer/query_builder.png') }}">
  170. <span class="hide hidable">
  171. {% trans 'Build Query' %}
  172. </span>
  173. </a>
  174. {% endif %}
  175. <a href="#" class="{{ params_array['side_menu'] }}" id="key_Left_Right">
  176. <img title="{% trans 'Move Menu' %}" alt=">"
  177. data-right="{{ theme.getImgPath('designer/2leftarrow_m.png') }}"
  178. src="{{ theme.getImgPath('designer/2rightarrow_m.png') }}">
  179. <span class="hide hidable">
  180. {% trans 'Move Menu' %}
  181. </span>
  182. </a>
  183. <a href="#" class="{{ params_array['pin_text'] }}" id="pin_Text">
  184. <img title="{% trans 'Pin text' %}"
  185. alt=">"
  186. data-right="{{ theme.getImgPath('designer/anchor.png') }}"
  187. src="{{ theme.getImgPath('designer/anchor.png') }}">
  188. <span class="hide hidable">
  189. {% trans 'Pin text' %}
  190. </span>
  191. </a>
  192. </div>
  193. <div id="canvas_outer">
  194. <form action="" id="container-form" method="post" name="form1">
  195. <div id="osn_tab">
  196. <canvas class="designer" id="canvas" width="100" height="100"></canvas>
  197. </div>
  198. <div id="layer_menu" class="hide">
  199. <div class="text-center">
  200. <a href="#" class="M_butt" target="_self" >
  201. <img title="{% trans 'Hide/Show all' %}"
  202. alt="v"
  203. id="key_HS_all"
  204. src="{{ theme.getImgPath('designer/downarrow1.png') }}"
  205. data-down="{{ theme.getImgPath('designer/downarrow1.png') }}"
  206. data-right="{{ theme.getImgPath('designer/rightarrow1.png') }}">
  207. </a>
  208. <a href="#" class="M_butt" target="_self" >
  209. <img alt="v"
  210. id="key_HS"
  211. title="{% trans 'Hide/Show tables with no relationship' %}"
  212. src="{{ theme.getImgPath('designer/downarrow2.png') }}"
  213. data-down="{{ theme.getImgPath('designer/downarrow2.png') }}"
  214. data-right="{{ theme.getImgPath('designer/rightarrow2.png') }}">
  215. </a>
  216. </div>
  217. <div id="id_scroll_tab" class="scroll_tab">
  218. <table class="pma-table" width="100%" style="padding-left: 3px;"></table>
  219. </div>
  220. {# end id_scroll_tab #}
  221. <div class="text-center">
  222. {% trans 'Number of tables:' %} <span id="tables_counter">0</span>
  223. </div>
  224. <div id="layer_menu_sizer">
  225. <img class="icon floatleft"
  226. id="layer_menu_sizer_btn"
  227. data-right="{{ theme.getImgPath('designer/resizeright.png') }}"
  228. src="{{ theme.getImgPath('designer/resize.png') }}">
  229. </div>
  230. </div>
  231. {# end layer_menu #}
  232. {% include 'database/designer/database_tables.twig' with {
  233. 'db': db,
  234. 'text_dir': text_dir,
  235. 'get_db': get_db,
  236. 'has_query': has_query,
  237. 'tab_pos': tab_pos,
  238. 'display_page': display_page,
  239. 'tab_column': tab_column,
  240. 'tables_all_keys': tables_all_keys,
  241. 'tables_pk_or_unique_keys': tables_pk_or_unique_keys,
  242. 'columns_type': columns_type,
  243. 'tables': designerTables,
  244. 'theme': theme,
  245. } only %}
  246. </form>
  247. </div>
  248. <div id="designer_hint"></div>
  249. {# create relation pane #}
  250. <table id="layer_new_relation" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  251. <tbody>
  252. <tr>
  253. <td class="frams1" width="10px">
  254. </td>
  255. <td class="frams5" width="99%" >
  256. </td>
  257. <td class="frams2" width="10px">
  258. <div class="bor">
  259. </div>
  260. </td>
  261. </tr>
  262. <tr>
  263. <td class="frams8">
  264. </td>
  265. <td class="input_tab">
  266. <table width="168" class="pma-table text-center" cellpadding="2" cellspacing="0">
  267. <thead>
  268. <tr>
  269. <td colspan="2" class="text-center nowrap">
  270. <strong>
  271. {% trans 'Create relationship' %}
  272. </strong>
  273. </td>
  274. </tr>
  275. </thead>
  276. <tbody id="foreign_relation">
  277. <tr>
  278. <td colspan="2" class="text-center nowrap">
  279. <strong>
  280. FOREIGN KEY
  281. </strong>
  282. </td>
  283. </tr>
  284. <tr>
  285. <td width="58" class="nowrap">
  286. on delete
  287. </td>
  288. <td width="102">
  289. <select name="on_delete" id="on_delete">
  290. <option value="nix" selected="selected">
  291. --
  292. </option>
  293. <option value="CASCADE">
  294. CASCADE
  295. </option>
  296. <option value="SET NULL">
  297. SET NULL
  298. </option>
  299. <option value="NO ACTION">
  300. NO ACTION
  301. </option>
  302. <option value="RESTRICT">
  303. RESTRICT
  304. </option>
  305. </select>
  306. </td>
  307. </tr>
  308. <tr>
  309. <td class="nowrap">
  310. on update
  311. </td>
  312. <td>
  313. <select name="on_update" id="on_update">
  314. <option value="nix" selected="selected">
  315. --
  316. </option>
  317. <option value="CASCADE">
  318. CASCADE
  319. </option>
  320. <option value="SET NULL">
  321. SET NULL
  322. </option>
  323. <option value="NO ACTION">
  324. NO ACTION
  325. </option>
  326. <option value="RESTRICT">
  327. RESTRICT
  328. </option>
  329. </select>
  330. </td>
  331. </tr>
  332. </tbody>
  333. <tbody>
  334. <tr>
  335. <td colspan="2" class="text-center nowrap">
  336. <input type="button" id="ok_new_rel_panel" class="btn btn-secondary butt"
  337. name="Button" value="{% trans 'OK' %}">
  338. <input type="button" id="cancel_new_rel_panel"
  339. class="btn btn-secondary butt" name="Button" value="{% trans 'Cancel' %}">
  340. </td>
  341. </tr>
  342. </tbody>
  343. </table>
  344. </td>
  345. <td class="frams6">
  346. </td>
  347. </tr>
  348. <tr>
  349. <td class="frams4">
  350. <div class="bor">
  351. </div>
  352. </td>
  353. <td class="frams7">
  354. </td>
  355. <td class="frams3">
  356. </td>
  357. </tr>
  358. </tbody>
  359. </table>
  360. {# delete relation pane #}
  361. <table id="layer_upd_relation" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  362. <tbody>
  363. <tr>
  364. <td class="frams1" width="10px">
  365. </td>
  366. <td class="frams5" width="99%">
  367. </td>
  368. <td class="frams2" width="10px">
  369. <div class="bor">
  370. </div>
  371. </td>
  372. </tr>
  373. <tr>
  374. <td class="frams8">
  375. </td>
  376. <td class="input_tab">
  377. <table width="100%" class="pma-table text-center" cellpadding="2" cellspacing="0">
  378. <tr>
  379. <td colspan="3" class="text-center nowrap">
  380. <strong>
  381. {% trans 'Delete relationship' %}
  382. </strong>
  383. </td>
  384. </tr>
  385. <tr>
  386. <td colspan="3" class="text-center nowrap">
  387. <input id="del_button" name="Button" type="button"
  388. class="btn btn-secondary butt" value="{% trans 'Delete' %}">
  389. <input id="cancel_button" type="button" class="btn btn-secondary butt"
  390. name="Button" value="{% trans 'Cancel' %}">
  391. </td>
  392. </tr>
  393. </table>
  394. </td>
  395. <td class="frams6">
  396. </td>
  397. </tr>
  398. <tr>
  399. <td class="frams4">
  400. <div class="bor">
  401. </div>
  402. </td>
  403. <td class="frams7">
  404. </td>
  405. <td class="frams3">
  406. </td>
  407. </tr>
  408. </tbody>
  409. </table>
  410. {% if has_query %}
  411. {# options panel #}
  412. <table id="designer_optionse" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  413. <tbody>
  414. <tr>
  415. <td class="frams1" width="10px">
  416. </td>
  417. <td class="frams5" width="99%" >
  418. </td>
  419. <td class="frams2" width="10px">
  420. <div class="bor">
  421. </div>
  422. </td>
  423. </tr>
  424. <tr>
  425. <td class="frams8">
  426. </td>
  427. <td class="input_tab">
  428. <table width="168" class="pma-table text-center" cellpadding="2" cellspacing="0">
  429. <thead>
  430. <tr>
  431. <td colspan="2" rowspan="2" id="option_col_name" class="text-center nowrap">
  432. </td>
  433. </tr>
  434. </thead>
  435. <tbody id="where">
  436. <tr>
  437. <td class="text-center nowrap">
  438. <b>
  439. WHERE
  440. </b>
  441. </td>
  442. </tr>
  443. <tr>
  444. <td width="58" class="nowrap">
  445. {% trans 'Relationship operator' %}
  446. </td>
  447. <td width="102">
  448. <select name="rel_opt" id="rel_opt">
  449. <option value="--" selected="selected">
  450. --
  451. </option>
  452. <option value="=">
  453. =
  454. </option>
  455. <option value="&gt;">
  456. &gt;
  457. </option>
  458. <option value="&lt;">
  459. &lt;
  460. </option>
  461. <option value="&gt;=">
  462. &gt;=
  463. </option>
  464. <option value="&lt;=">
  465. &lt;=
  466. </option>
  467. <option value="NOT">
  468. NOT
  469. </option>
  470. <option value="IN">
  471. IN
  472. </option>
  473. <option value="EXCEPT">
  474. {% trans 'Except' %}
  475. </option>
  476. <option value="NOT IN">
  477. NOT IN
  478. </option>
  479. </select>
  480. </td>
  481. </tr>
  482. <tr>
  483. <td class="nowrap">
  484. {% trans 'Value' %}
  485. <br>
  486. {% trans 'subquery' %}
  487. </td>
  488. <td>
  489. <textarea id="Query" cols="18"></textarea>
  490. </td>
  491. </tr>
  492. <tr>
  493. <td class="text-center nowrap">
  494. <b>
  495. {% trans 'Rename to' %}
  496. </b>
  497. </td>
  498. </tr>
  499. <tr>
  500. <td width="58" class="nowrap">
  501. {% trans 'New name' %}
  502. </td>
  503. <td width="102">
  504. <input type="text" id="new_name">
  505. </td>
  506. </tr>
  507. <tr>
  508. <td class="text-center nowrap">
  509. <b>
  510. {% trans 'Aggregate' %}
  511. </b>
  512. </td>
  513. </tr>
  514. <tr>
  515. <td width="58" class="nowrap">
  516. {% trans 'Operator' %}
  517. </td>
  518. <td width="102">
  519. <select name="operator" id="operator">
  520. <option value="---" selected="selected">
  521. ---
  522. </option>
  523. <option value="sum" >
  524. SUM
  525. </option>
  526. <option value="min">
  527. MIN
  528. </option>
  529. <option value="max">
  530. MAX
  531. </option>
  532. <option value="avg">
  533. AVG
  534. </option>
  535. <option value="count">
  536. COUNT
  537. </option>
  538. </select>
  539. </td>
  540. </tr>
  541. <tr>
  542. <td width="58" class="text-center nowrap">
  543. <b>
  544. GROUP BY
  545. </b>
  546. </td>
  547. <td>
  548. <input type="checkbox" value="groupby" id="groupby">
  549. </td>
  550. </tr>
  551. <tr>
  552. <td width="58" class="text-center nowrap">
  553. <b>
  554. ORDER BY
  555. </b>
  556. </td>
  557. <td>
  558. <select name="orderby" id="orderby">
  559. <option value="---" selected="selected">
  560. ---
  561. </option>
  562. <option value="ASC" >
  563. ASC
  564. </option>
  565. <option value="DESC">
  566. DESC
  567. </option>
  568. </select>
  569. </td>
  570. </tr>
  571. <tr>
  572. <td class="text-center nowrap">
  573. <b>
  574. HAVING
  575. </b>
  576. </td>
  577. </tr>
  578. <tr>
  579. <td width="58" class="nowrap">
  580. {% trans 'Operator' %}
  581. </td>
  582. <td width="102">
  583. <select name="h_operator" id="h_operator">
  584. <option value="---" selected="selected">
  585. ---
  586. </option>
  587. <option value="None" >
  588. {% trans 'None' %}
  589. </option>
  590. <option value="sum" >
  591. SUM
  592. </option>
  593. <option value="min">
  594. MIN
  595. </option>
  596. <option value="max">
  597. MAX
  598. </option>
  599. <option value="avg">
  600. AVG
  601. </option>
  602. <option value="count">
  603. COUNT
  604. </option>
  605. </select>
  606. </td>
  607. </tr>
  608. <tr>
  609. <td width="58" class="nowrap">
  610. {% trans 'Relationship operator' %}
  611. </td>
  612. <td width="102">
  613. <select name="h_rel_opt" id="h_rel_opt">
  614. <option value="--" selected="selected">
  615. --
  616. </option>
  617. <option value="=">
  618. =
  619. </option>
  620. <option value="&gt;">
  621. &gt;
  622. </option>
  623. <option value="&lt;">
  624. &lt;
  625. </option>
  626. <option value="&gt;=">
  627. &gt;=
  628. </option>
  629. <option value="&lt;=">
  630. &lt;=
  631. </option>
  632. <option value="NOT">
  633. NOT
  634. </option>
  635. <option value="IN">
  636. IN
  637. </option>
  638. <option value="EXCEPT">
  639. {% trans 'Except' %}
  640. </option>
  641. <option value="NOT IN">
  642. NOT IN
  643. </option>
  644. </select>
  645. </td>
  646. </tr>
  647. <tr>
  648. <td width="58" class="nowrap">
  649. {% trans 'Value' %}
  650. <br>
  651. {% trans 'subquery' %}
  652. </td>
  653. <td width="102">
  654. <textarea id="having" cols="18"></textarea>
  655. </td>
  656. </tr>
  657. </tbody>
  658. <tbody>
  659. <tr>
  660. <td colspan="2" class="text-center nowrap">
  661. <input type="hidden" id="ok_add_object_db_and_table_name_url" />
  662. <input type="hidden" id="ok_add_object_db_name" />
  663. <input type="hidden" id="ok_add_object_table_name" />
  664. <input type="hidden" id="ok_add_object_col_name" />
  665. <input type="button" id="ok_add_object" class="btn btn-secondary butt"
  666. name="Button" value="{% trans 'OK' %}">
  667. <input type="button" id="cancel_close_option" class="btn btn-secondary butt"
  668. name="Button" value="{% trans 'Cancel' %}">
  669. </td>
  670. </tr>
  671. </tbody>
  672. </table>
  673. </td>
  674. <td class="frams6">
  675. </td>
  676. </tr>
  677. <tr>
  678. <td class="frams4">
  679. <div class="bor">
  680. </div>
  681. </td>
  682. <td class="frams7">
  683. </td>
  684. <td class="frams3">
  685. </td>
  686. </tr>
  687. </tbody>
  688. </table>
  689. {# rename to pane #}
  690. <table id="query_rename_to" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  691. <tbody>
  692. <tr>
  693. <td class="frams1" width="10px">
  694. </td>
  695. <td class="frams5" width="99%" >
  696. </td>
  697. <td class="frams2" width="10px">
  698. <div class="bor">
  699. </div>
  700. </td>
  701. </tr>
  702. <tr>
  703. <td class="frams8">
  704. </td>
  705. <td class="input_tab">
  706. <table width="168" class="pma-table text-center" cellpadding="2" cellspacing="0">
  707. <thead>
  708. <tr>
  709. <td colspan="2" class="text-center nowrap">
  710. <strong>
  711. {% trans 'Rename to' %}
  712. </strong>
  713. </td>
  714. </tr>
  715. </thead>
  716. <tbody id="rename_to">
  717. <tr>
  718. <td width="58" class="nowrap">
  719. {% trans 'New name' %}
  720. </td>
  721. <td width="102">
  722. <input type="text" id="e_rename">
  723. </td>
  724. </tr>
  725. </tbody>
  726. <tbody>
  727. <tr>
  728. <td colspan="2" class="text-center nowrap">
  729. <input type="button" id="ok_edit_rename" class="btn btn-secondary butt"
  730. name="Button" value="{% trans 'OK' %}">
  731. <input id="query_rename_to_button" type="button"
  732. class="btn btn-secondary butt"
  733. name="Button"
  734. value="{% trans 'Cancel' %}">
  735. </td>
  736. </tr>
  737. </tbody>
  738. </table>
  739. </td>
  740. <td class="frams6">
  741. </td>
  742. </tr>
  743. <tr>
  744. <td class="frams4">
  745. <div class="bor">
  746. </div>
  747. </td>
  748. <td class="frams7">
  749. </td>
  750. <td class="frams3">
  751. </td>
  752. </tr>
  753. </tbody>
  754. </table>
  755. {# having query panel #}
  756. <table id="query_having" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  757. <tbody>
  758. <tr>
  759. <td class="frams1" width="10px">
  760. </td>
  761. <td class="frams5" width="99%" >
  762. </td>
  763. <td class="frams2" width="10px">
  764. <div class="bor">
  765. </div>
  766. </td>
  767. </tr>
  768. <tr>
  769. <td class="frams8">
  770. </td>
  771. <td class="input_tab">
  772. <table width="168" class="pma-table text-center" cellpadding="2" cellspacing="0">
  773. <thead>
  774. <tr>
  775. <td colspan="2" class="text-center nowrap">
  776. <strong>
  777. HAVING
  778. </strong>
  779. </td>
  780. </tr>
  781. </thead>
  782. <tbody id="rename_to">
  783. <tr>
  784. <td width="58" class="nowrap">
  785. {% trans 'Operator' %}
  786. </td>
  787. <td width="102">
  788. <select name="hoperator" id="hoperator">
  789. <option value="---" selected="selected">
  790. ---
  791. </option>
  792. <option value="None" >
  793. None
  794. </option>
  795. <option value="sum" >
  796. SUM
  797. </option>
  798. <option value="min">
  799. MIN
  800. </option>
  801. <option value="max">
  802. MAX
  803. </option>
  804. <option value="avg">
  805. AVG
  806. </option>
  807. <option value="count">
  808. COUNT
  809. </option>
  810. </select>
  811. </td>
  812. </tr>
  813. <tr>
  814. <tr>
  815. <td width="58" class="nowrap">
  816. {% trans 'Operator' %}
  817. </td>
  818. <td width="102">
  819. <select name="hrel_opt" id="hrel_opt">
  820. <option value="--" selected="selected">
  821. --
  822. </option>
  823. <option value="=">
  824. =
  825. </option>
  826. <option value="&gt;">
  827. &gt;
  828. </option>
  829. <option value="&lt;">
  830. &lt;
  831. </option>
  832. <option value="&gt;=">
  833. &gt;=
  834. </option>
  835. <option value="&lt;=">
  836. &lt;=
  837. </option>
  838. <option value="NOT">
  839. NOT
  840. </option>
  841. <option value="IN">
  842. IN
  843. </option>
  844. <option value="EXCEPT">
  845. {% trans 'Except' %}
  846. </option>
  847. <option value="NOT IN">
  848. NOT IN
  849. </option>
  850. </select>
  851. </td>
  852. </tr>
  853. <tr>
  854. <td class="nowrap">
  855. {% trans 'Value' %}
  856. <br>
  857. {% trans 'subquery' %}
  858. </td>
  859. <td>
  860. <textarea id="hQuery" cols="18">
  861. </textarea>
  862. </td>
  863. </tr>
  864. </tbody>
  865. <tbody>
  866. <tr>
  867. <td colspan="2" class="text-center nowrap">
  868. <input type="button" id="ok_edit_having" class="btn btn-secondary butt"
  869. name="Button" value="{% trans 'OK' %}">
  870. <input id="query_having_button" type="button"
  871. class="btn btn-secondary butt"
  872. name="Button"
  873. value="{% trans 'Cancel' %}">
  874. </td>
  875. </tr>
  876. </tbody>
  877. </table>
  878. </td>
  879. <td class="frams6">
  880. </td>
  881. </tr>
  882. <tr>
  883. <td class="frams4">
  884. <div class="bor">
  885. </div>
  886. </td>
  887. <td class="frams7">
  888. </td>
  889. <td class="frams3">
  890. </td>
  891. </tr>
  892. </tbody>
  893. </table>
  894. {# aggregate query pane #}
  895. <table id="query_Aggregate" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  896. <tbody>
  897. <tr>
  898. <td class="frams1" width="10px">
  899. </td>
  900. <td class="frams5" width="99%" >
  901. </td>
  902. <td class="frams2" width="10px">
  903. <div class="bor">
  904. </div>
  905. </td>
  906. </tr>
  907. <tr>
  908. <td class="frams8">
  909. </td>
  910. <td class="input_tab">
  911. <table width="168" class="pma-table text-center" cellpadding="2" cellspacing="0">
  912. <thead>
  913. <tr>
  914. <td colspan="2" class="text-center nowrap">
  915. <strong>
  916. {% trans 'Aggregate' %}
  917. </strong>
  918. </td>
  919. </tr>
  920. </thead>
  921. <tbody>
  922. <tr>
  923. <td width="58" class="nowrap">
  924. {% trans 'Operator' %}
  925. </td>
  926. <td width="102">
  927. <select name="operator" id="e_operator">
  928. <option value="---" selected="selected">
  929. ---
  930. </option>
  931. <option value="sum" >
  932. SUM
  933. </option>
  934. <option value="min">
  935. MIN
  936. </option>
  937. <option value="max">
  938. MAX
  939. </option>
  940. <option value="avg">
  941. AVG
  942. </option>
  943. <option value="count">
  944. COUNT
  945. </option>
  946. </select>
  947. </td>
  948. </tr>
  949. </tbody>
  950. <tbody>
  951. <tr>
  952. <td colspan="2" class="text-center nowrap">
  953. <input type="button" id="ok_edit_Aggr" class="btn btn-secondary butt"
  954. name="Button" value="{% trans 'OK' %}">
  955. <input id="query_Aggregate_Button" type="button"
  956. class="btn btn-secondary butt"
  957. name="Button"
  958. value="{% trans 'Cancel' %}">
  959. </td>
  960. </tr>
  961. </tbody>
  962. </table>
  963. </td>
  964. <td class="frams6">
  965. </td>
  966. </tr>
  967. <tr>
  968. <td class="frams4">
  969. <div class="bor">
  970. </div>
  971. </td>
  972. <td class="frams7">
  973. </td>
  974. <td class="frams3">
  975. </td>
  976. </tr>
  977. </tbody>
  978. </table>
  979. {# where query pane #}
  980. <table id="query_where" class="pma-table hide" width="5%" cellpadding="0" cellspacing="0">
  981. <tbody>
  982. <tr>
  983. <td class="frams1" width="10px">
  984. </td>
  985. <td class="frams5" width="99%" >
  986. </td>
  987. <td class="frams2" width="10px">
  988. <div class="bor">
  989. </div>
  990. </td>
  991. </tr>
  992. <tr>
  993. <td class="frams8">
  994. </td>
  995. <td class="input_tab">
  996. <table width="168" class="pma-table text-center" cellpadding="2" cellspacing="0">
  997. <thead>
  998. <tr>
  999. <td colspan="2" class="text-center nowrap">
  1000. <strong>
  1001. WHERE
  1002. </strong>
  1003. </td>
  1004. </tr>
  1005. </thead>
  1006. <tbody id="rename_to">
  1007. <tr>
  1008. <td width="58" class="nowrap">
  1009. {% trans 'Operator' %}
  1010. </td>
  1011. <td width="102">
  1012. <select name="erel_opt" id="erel_opt">
  1013. <option value="--" selected="selected">
  1014. --
  1015. </option>
  1016. <option value="=" >
  1017. =
  1018. </option>
  1019. <option value="&gt;">
  1020. &gt;
  1021. </option>
  1022. <option value="&lt;">
  1023. &lt;
  1024. </option>
  1025. <option value="&gt;=">
  1026. &gt;=
  1027. </option>
  1028. <option value="&lt;=">
  1029. &lt;=
  1030. </option>
  1031. <option value="NOT">
  1032. NOT
  1033. </option>
  1034. <option value="IN">
  1035. IN
  1036. </option>
  1037. <option value="EXCEPT">
  1038. {% trans 'Except' %}
  1039. </option>
  1040. <option value="NOT IN">
  1041. NOT IN
  1042. </option>
  1043. </select>
  1044. </td>
  1045. </tr>
  1046. <tr>
  1047. <td class="nowrap">
  1048. {% trans 'Value' %}
  1049. <br>
  1050. {% trans 'subquery' %}
  1051. </td>
  1052. <td>
  1053. <textarea id="eQuery" cols="18"></textarea>
  1054. </td>
  1055. </tr>
  1056. </tbody>
  1057. <tbody>
  1058. <tr>
  1059. <td colspan="2" class="text-center nowrap">
  1060. <input type="button" id="ok_edit_where" class="btn btn-secondary butt"
  1061. name="Button" value="{% trans 'OK' %}">
  1062. <input id="query_where_button" type="button" class="btn btn-secondary butt" name="Button"
  1063. value="{% trans 'Cancel' %}">
  1064. </td>
  1065. </tr>
  1066. </tbody>
  1067. </table>
  1068. </td>
  1069. <td class="frams6">
  1070. </td>
  1071. </tr>
  1072. <tr>
  1073. <td class="frams4">
  1074. <div class="bor">
  1075. </div>
  1076. </td>
  1077. <td class="frams7">
  1078. </td>
  1079. <td class="frams3">
  1080. </td>
  1081. </tr>
  1082. </tbody>
  1083. </table>
  1084. {# query details #}
  1085. <div class="panel">
  1086. <div class="clearfloat"></div>
  1087. <div id="ab"></div>
  1088. <div class="clearfloat"></div>
  1089. </div>
  1090. <a class="trigger" href="#">{% trans 'Active options' %}</a>
  1091. <div id="box">
  1092. <form method="post" action="{{ url('/database/qbe') }}" id="vqb_form">
  1093. <textarea cols="80" name="sql_query" id="textSqlquery" rows="15"></textarea>
  1094. <input type="hidden" name="submit_sql" value="true">
  1095. {{ get_hidden_inputs(get_db) }}
  1096. </form>
  1097. </div>
  1098. {% endif %}
  1099. <div id="PMA_disable_floating_menubar"></div>