users.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. {% extends base %}
  2. {% block content %}
  3. {% import "macros/action_icons_static.html" as icons %}
  4. <span class="title" role="main"><h2>{% block title %}Access User Profiles{% endblock %}</h2></span>
  5. <div class="content">
  6. <article>
  7. <div><a href="#" id="a_add_user">{{ icons.add_svg() }}</a></div>
  8. {% if users %}
  9. <table id="tbl_users" class="multirow">
  10. <thead>
  11. <tr>
  12. <th>User ID</th><th>Admin activities</th><th>Capture activities</th><th style="font-size: smaller;">[actions]</th>
  13. </tr>
  14. </thead>
  15. <tbody>
  16. {% for user in users %}
  17. <tr>
  18. <td>{{ user.v_user_id }}</td><td>{{ user.bl_admin }}</td><td>{{ user.bl_capture }}</td><td><a href="#{{ user.id }}" class="a_edit_user" aria-label="edit user">{{ icons.edit_svg() }}</a>&nbsp;<a href="#{{ user.id }}" class="a_remove_user" aria-label="remove user">{{ icons.delete_svg() }}</a></td>
  19. </tr>
  20. {% endfor %}{# end of looping through users #}
  21. </tbody>
  22. </table>
  23. {% endif %}{# end of checking if users exist #}
  24. </article>
  25. </div><!-- end of div.content -->
  26. {% from "macros/dialog.html" import dlg_prep with context %}
  27. {{ dlg_prep(["dlg_user"]) }}
  28. {# dlg divs below #}
  29. <div id="dlg_user" aria-labeledby="spn_user">
  30. <span id="spn_user">User details</span><br>
  31. <form action="{{ url_for("main.users") }}" method="post" id="frm_user">
  32. {{ form.csrf_token }}
  33. {{ form.hid_user_id }}
  34. <ul>
  35. <li>{{ form.txt_user_id.label }}&nbsp;{{ form.txt_user_id }}</li>
  36. <li><span style="font-size: smaller;">(leave both blank if editing, unless both match, to then reset password)</span><br>
  37. {{ form.txt_password.label }}&nbsp;{{ form.txt_password }}</li>
  38. <li>{{ form.txt_password_confirm.label }}&nbsp;{{ form.txt_password_confirm }}</li>
  39. <li>{{ form.chk_admin }}&nbsp;{{ form.chk_admin.label }}</li>
  40. <li>{{ form.chk_capture }}&nbsp;{{ form.chk_capture.label }}</li>
  41. </ul>
  42. <input type="submit" name="btn_save" value="Save">
  43. </form>
  44. </div><!-- end of dlg_user -->
  45. <script type="text/javascript">
  46. $(document).ready( function() {
  47. try {
  48. var s_dlg_user = $("#dlg_user").html();
  49. $("#a_add_user").click( function(event) {
  50. event.preventDefault();
  51. $("#dlg_user").html(s_dlg_user);
  52. $("#dlg_user").redraw();
  53. $("#dlg_user").dialog("open");
  54. });// end of a_add_user click event
  55. $("#tbl_users").on("click", ".a_edit_user", function(event) {
  56. event.preventDefault();
  57. var s_id = String($(this).attr("href")).replace("#", "");
  58. var s_url = "{{ url_for("main.user_details", i_user_id=99999) }}".replace("99999", s_id);
  59. $.get(s_url, function(o_data) {
  60. if (typeof(o_data)=="object") {
  61. $("#dlg_user").html(s_dlg_user);
  62. $("#dlg_user").redraw();
  63. $("#hid_user_id").val(s_id);
  64. $("#txt_user_id").val(o_data.v_user_id);
  65. $("#chk_admin").prop("checked", o_data.bl_admin);
  66. $("#chk_capture").prop("checked", o_data.bl_capture);
  67. $("#dlg_user").redraw();
  68. $("#dlg_user").dialog("open");
  69. }// end of typeof check against o_data
  70. });// end of .get
  71. });// end of .a_edit_user inside tbl_users click event
  72. $("#tbl_users").on("click", ".a_remove_user", function(event) {
  73. event.preventDefault();
  74. var s_id = String($(this).attr("href")).replace("#", "");
  75. var bl_confirm = confirm("Are you sure?");
  76. if (bl_confirm) {
  77. $("#hid_remove_user_id").val(s_id);
  78. document.getElementById("frm_remove_user").submit();
  79. }// end of checking confirmation
  80. });// end of .a_remove_user inside tbl_users click event
  81. window.setTimeout( function() {
  82. // do_alert("hello world");
  83. }, 300);
  84. } catch(e) {
  85. var s_err = String(e.name) + "\nmessage:" + String(e.message);
  86. s_err = (typeof(e.lineNumber)!="undefined") ? s_err + "\nline:" + String(e.lineNumber) : s_err;
  87. alert("Error! " + s_err);
  88. }//end of catch
  89. });// end of secondary document ready
  90. </script>
  91. <form action="{{ url_for("main.users") }}" method="post" id="frm_remove_user">
  92. {{ removal_form.csrf_token }}
  93. {{ removal_form.hid_remove_user_id }}
  94. </form>
  95. {% endblock %}