tenders.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. {% extends base %}
  2. {% block head_extra %}
  3. <style>
  4. .label {
  5. font-weight: bold;
  6. }
  7. </style>
  8. {% endblock %}
  9. {% block content %}
  10. {% import "macros/action_icons_static.html" as icons with context %}
  11. <span class="title"><h2>{% block title %}Tenders{% endblock %}</h2></span>
  12. <div class="content-container content">
  13. <div><button type="button" id="btn_add_tender" aria-label="Add tender">
  14. {{ icons.add_svg(s_label="add tender") }}
  15. Add tender
  16. </button></div>
  17. {% if tenders %}
  18. <h3>Tenders</h3>
  19. <div class="table-container">
  20. <table class="data-table" id="tbl_tenders">
  21. <thead>
  22. <tr>
  23. <th>Reference Number</th><th>Description</th><th style="font-size: smaller;">Actions</th>
  24. </tr>
  25. </thead>
  26. {% for tender in tenders %}
  27. <tr>
  28. <td>{{ tender.v_reference_number }}</td><td>{{ tender.v_description }}</td>
  29. <td>
  30. <a href="#{{ tender.id }}" class="a_edit_tender">{{ icons.edit_svg() }}</a>
  31. <a href="#{{ tender.id }}" class="a_remove_tender">{{ icons.delete_svg() }}</a>
  32. </td>
  33. </tr>
  34. {% endfor %}{# end of looping through tenders #}
  35. </table><!-- end of tbl_tenders -->
  36. </div><!-- end of div.table-container -->
  37. <div class="paging">
  38. <div>Paging...</div>
  39. {#
  40. {% if paging.has_prev %}
  41. <!-- prev_num --><span><a class="a_page_number" href="#{{ paging.prev_num }}"{{ "<<" }}</a></span>
  42. {% endif %}
  43. #}
  44. {% for number in paging.iter_pages() %}
  45. {% if paging.page != number %}
  46. <!-- page_num --><span><a class="a_page_number" href="#{{ number }}">{{ number }}</a></span>&nbsp;&nbsp;
  47. {% else %}
  48. <!-- current_num --><span class="current-page-number">{{ number }}</span>&nbsp;&nbsp;
  49. {% endif %}
  50. {% endfor %}
  51. {#
  52. {% if paging.has_next %}
  53. <span>
  54. <!-- next_num --><a class="a_page_number" href="#{{ paging.next_num }}">{{ ">>" }}</a></span>
  55. {% endif %}
  56. #}
  57. </div><!-- end of div.paging -->
  58. {% endif %}{# end of checking if tenders existed #}
  59. </div><!-- end of div.content -->
  60. {% from "macros/dialog.html" import dlg_prep with context %}
  61. {{ dlg_prep(["dlg_tender"]) }}
  62. {# dlg divs below #}
  63. <div id="dlg_tender" aria-labeledby="spn_tender">
  64. <span id="spn_tender">Tender details</span><br>
  65. <form action="{{ url_for("main.tenders") }}" method="post" id="frm_tender">
  66. {{ form.csrf_token }}
  67. {{ form.hid_tender_id }}
  68. <ul>
  69. <li>{{ form.txt_reference_number.label }}&nbsp;{{ form.txt_reference_number }}</li>
  70. <li>{{ form.txt_description.label }}<br>
  71. {{ form.txt_description }}</li>
  72. </ul>
  73. <input type="submit" name="btn_save_tender" value="Save">
  74. </form>
  75. </div><!-- end of dlg_tender -->
  76. <script type="text/javascript">
  77. $(document).ready( function() {
  78. try {
  79. var s_dlg_tender = $("#dlg_tender").html();
  80. $("#btn_add_tender").click( function(event) {
  81. event.preventDefault();
  82. $("#dlg_tender").html(s_dlg_tender);
  83. $("#dlg_tender").redraw();
  84. $("#dlg_tender").dialog("open");
  85. $("#txt_reference_number").focus();
  86. });// end of #btn_add_tender click event
  87. $("#tbl_tenders").on("click", ".a_edit_tender", function(event) {
  88. try {
  89. event.preventDefault();
  90. $("#dlg_tender").html(s_dlg_tender);
  91. $("#dlg_tender").redraw();
  92. var s_id = String($(this).attr("href")).replace("#", "");
  93. var s_url = "{{ url_for("main.tender_details", i_tender_id=99999) }}".replace("99999", s_id);
  94. $.get(s_url, function(o_data) {
  95. if (typeof(o_data)=="object") {
  96. var s_reference_number = String(o_data.v_reference_number);
  97. var s_description = String(o_data.v_description)
  98. $("#hid_tender_id").val(s_id);
  99. $("#txt_reference_number").val(s_reference_number);
  100. $("#txt_description").val(s_description);
  101. $("#dlg_tender").redraw();
  102. $("#dlg_tender").dialog("open");
  103. $("#txt_reference_number").focus();
  104. } else {
  105. do_alert(String(o_data));
  106. }// end of typeof check against o_data
  107. });// end of .get
  108. } catch(e) {
  109. var s_err = String(e.name) + "\nmessage:" + String(e.message);
  110. s_err = (typeof(e.lineNumber)!="undefined") ? s_err + "\nline:" + String(e.lineNumber) : s_err;
  111. alert("Error! " + s_err);
  112. }//end of catch
  113. });// end of .a_edit_tender click event inside tbl_tenders
  114. $("#tbl_tenders").on("click", ".a_remove_tender", function(event) {
  115. try {
  116. event.preventDefault();
  117. var bl_confirm = confirm("Are you sure?");
  118. if (bl_confirm) {
  119. var s_id = String($(this).attr("href")).replace("#", "");
  120. $("#hid_remove_tender_id").val(s_id);
  121. document.getElementById("frm_remove_tender").submit();
  122. }// end of confirmation check
  123. } catch(e) {
  124. var s_err = String(e.name) + "\nmessage:" + String(e.message);
  125. s_err = (typeof(e.lineNumber)!="undefined") ? s_err + "\nline:" + String(e.lineNumber) : s_err;
  126. alert("Error! " + s_err);
  127. }//end of catch
  128. });// end of .a_edit_tender click event inside tbl_tenders
  129. function jump_page(i_page) {
  130. i_page = (isNaN(i_page)) ? 1 : Number(i_page);
  131. $("#hid_page").val(i_page);
  132. document.getElementById("frm_paging").submit();
  133. }// end of jump_page function
  134. $(".a_page_number").click( function(event) {
  135. event.preventDefault();
  136. var s_page = String($(this).attr("href")).replace("#", "");
  137. i_page = (isNaN(s_page)) ? 1 : Number(s_page);
  138. jump_page(i_page);
  139. });// end of .a_page_number function
  140. window.setTimeout( function() {
  141. var s_nada = ""; //alert("hello world");
  142. }, 300);
  143. var s = "nada"; // do_alert("hello world");
  144. } catch(e) {
  145. var s_err = String(e.name) + "\nmessage:" + String(e.message);
  146. s_err = (typeof(e.lineNumber)!="undefined") ? s_err + "\nline:" + String(e.lineNumber) : s_err;
  147. alert("Error! " + s_err);
  148. }//end of catch
  149. });// end of secondary document ready
  150. </script>
  151. <form action="{{ url_for("main.tenders") }}" method="post" id="frm_remove_tender">
  152. {{ remove_form.csrf_token }}
  153. {{ remove_form.hid_remove_tender_id }}
  154. </form>
  155. {% endblock %}