form.twig 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <ul class="nav nav-pills m-2">
  2. <li class="nav-item">
  3. <a class="nav-link active disableAjax" href="{{ url('/database/multi-table-query', {'db': db}) }}">
  4. {% trans 'Multi-table query' %}
  5. </a>
  6. </li>
  7. <li class="nav-item">
  8. <a class="nav-link disableAjax" href="{{ url('/database/qbe', {'db': db}) }}">
  9. {% trans 'Query by example' %}
  10. </a>
  11. </li>
  12. </ul>
  13. <div class="mb-3">
  14. <button class="btn btn-sm btn-secondary" type="button" data-bs-toggle="collapse" data-bs-target="#queryWindow" aria-expanded="true" aria-controls="queryWindow">
  15. {% trans 'Query window' %}
  16. </button>
  17. </div>
  18. <div class="collapse show mb-3" id="queryWindow">
  19. <form action="" id="multi_table_query_form" class="multi_table_query_form query_form">
  20. <input type="hidden" id="db_name" value="{{ db }}">
  21. <fieldset class="pma-fieldset">
  22. {% for table in tables %}
  23. <div class="d-none" id="{{ table.hash }}">
  24. <option value="*">*</option>
  25. {% for column in table.columns %}
  26. <option value="{{ column }}">{{ column }}</option>
  27. {% endfor %}
  28. </div>
  29. {% endfor %}
  30. {% for id in 0..default_no_of_columns %}
  31. {% if id == 0 %}<div class="d-none" id="new_column_layout">{% endif %}
  32. <fieldset class="pma-fieldset column_details query-form__fieldset--inline position-relative">
  33. <select class="tableNameSelect query-form__select--inline">
  34. <option value="">{% trans 'select table' %}</option>
  35. {% for keyTableName, table in tables %}
  36. <option data-hash="{{ table.hash }}" value="{{ keyTableName }}">{{ keyTableName }}</option>
  37. {% endfor %}
  38. </select>
  39. <span>.</span>
  40. <select class="columnNameSelect query-form__select--inline">
  41. <option value="">{% trans 'select column' %}</option>
  42. </select>
  43. <br>
  44. <input type="checkbox" checked="checked" class="show_col">
  45. <span>{% trans 'Show' %}</span>
  46. <br>
  47. <input type="text" placeholder="{% trans 'Table alias' %}" class="table_alias">
  48. <input type="text" placeholder="{% trans 'Column alias' %}" class="col_alias">
  49. <br>
  50. <input type="checkbox"
  51. title="{% trans 'Use this column in criteria' %}"
  52. class="criteria_col">
  53. <button class="btn btn-link p-0 jsCriteriaButton" type="button" data-bs-toggle="collapse" data-bs-target="#criteriaOptions{{ id }}" aria-expanded="false" aria-controls="criteriaOptions{{ id }}">
  54. {% trans 'criteria' %}
  55. </button>
  56. <div class="collapse jsCriteriaOptions" id="criteriaOptions{{ id }}">
  57. <div>
  58. <table class="table table-sm table-borderless align-middle w-auto">
  59. <tr class="sort_order query-form__tr--bg-none">
  60. <td>{% trans 'Sort' %}</td>
  61. <td><input type="radio" name="sort[{{ id }}]">{% trans 'Ascending' %}</td>
  62. <td><input type="radio" name="sort[{{ id }}]">{% trans 'Descending' %}</td>
  63. </tr>
  64. <tr class="logical_operator query-form__tr--bg-none query-form__tr--hide">
  65. <td>{% trans 'Add as' %}</td>
  66. <td>
  67. <input type="radio"
  68. name="logical_op[{{ id }}]"
  69. value="AND"
  70. class="logical_op"
  71. checked="checked">
  72. AND
  73. </td>
  74. <td>
  75. <input type="radio"
  76. name="logical_op[{{ id }}]"
  77. value="OR"
  78. class="logical_op">
  79. OR
  80. </td>
  81. </tr>
  82. <tr>
  83. <td>Column</td>
  84. <td colspan="2">
  85. <select class="columnNameSelect query-form__select--inline opColumn">
  86. <option value="">{% trans 'select column' %}</option>
  87. </select>
  88. </td>
  89. </tr>
  90. <tr class="query-form__tr--bg-none">
  91. <td>Op </td>
  92. <td>
  93. <select class="criteria_op">
  94. <option value="=">=</option>
  95. <option value=">">&gt;</option>
  96. <option value=">=">&gt;=</option>
  97. <option value="<">&lt;</option>
  98. <option value="<=">&lt;=</option>
  99. <option value="!=">!=</option>
  100. <option value="LIKE">LIKE</option>
  101. <option value="LIKE %...%">LIKE %...%</option>
  102. <option value="NOT LIKE">NOT LIKE</option>
  103. <option value="NOT LIKE %...%">NOT LIKE %...%</option>
  104. <option value="IN (...)">IN (...)</option>
  105. <option value="NOT IN (...)">NOT IN (...)</option>
  106. <option value="BETWEEN">BETWEEN</option>
  107. <option value="NOT BETWEEN">NOT BETWEEN</option>
  108. <option value="IS NULL">IS NULL</option>
  109. <option value="IS NOT NULL">IS NOT NULL</option>
  110. <option value="REGEXP">REGEXP</option>
  111. <option value="REGEXP ^...$">REGEXP ^...$</option>
  112. <option value="NOT REGEXP">NOT REGEXP</option>
  113. </select>
  114. </td>
  115. <td>
  116. <select class="criteria_rhs">
  117. <option value="text">{% trans 'Text' %}</option>
  118. <option value="anotherColumn">{% trans 'Another column' %}</option>
  119. </select>
  120. </td>
  121. </tr>
  122. <tr class="rhs_table query-form__tr--hide query-form__tr--bg-none">
  123. <td></td>
  124. <td>
  125. <select class="tableNameSelect">
  126. <option value="">{% trans 'select table' %}</option>
  127. {% for keyTableName, table in tables %}
  128. <option data-hash="{{ table.hash }}" value="{{ keyTableName }}">{{ keyTableName }}</option>
  129. {% endfor %}
  130. </select><span>.</span>
  131. </td>
  132. <td>
  133. <select class="columnNameSelect query-form__select--inline">
  134. <option value="">{% trans 'select column' %}</option>
  135. </select>
  136. </td>
  137. </tr>
  138. <tr class="rhs_text query-form__tr--bg-none">
  139. <td></td>
  140. <td colspan="2">
  141. <input type="text"
  142. class="rhs_text_val query-form__input--wide"
  143. placeholder="{% trans 'Enter criteria as free text' %}">
  144. </td>
  145. </tr>
  146. </table>
  147. </div>
  148. </div>
  149. <button type="button" class="btn-close position-absolute top-0 end-0 jsRemoveColumn" aria-label="{% trans 'Remove this column' %}"></button>
  150. </fieldset>
  151. {% if id == 0 %}</div>{% endif %}
  152. {% endfor %}
  153. <fieldset class="pma-fieldset query-form__fieldset--inline">
  154. <input class="btn btn-secondary" type="button" value="{% trans '+ Add column' %}" id="add_column_button">
  155. </fieldset>
  156. <fieldset class="pma-fieldset">
  157. {# Keep the block without a space between the open and close tag #}
  158. <textarea id="MultiSqlquery"
  159. class="query-form__multi-sql-query"
  160. cols="80"
  161. rows="4"
  162. name="sql_query"
  163. dir="ltr"></textarea>
  164. </fieldset>
  165. </fieldset>
  166. <fieldset class="pma-fieldset tblFooters">
  167. <input class="btn btn-secondary" type="button" id="update_query_button" value="{% trans 'Update query' %}">
  168. <input class="btn btn-primary" type="button" id="submit_query" value="{% trans 'Submit query' %}">
  169. </fieldset>
  170. </form>
  171. </div>
  172. <div id="sql_results"></div>