Sin descripción

manage_customer_view.html 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. {% extends "layouts/default.html" %}
  2. {% block title %} Manage Customers {% endblock title %}
  3. {% block stylesheets %}
  4. <link rel="stylesheet" href="/static/assets/css/suggestags.css">
  5. {% endblock stylesheets %}
  6. {% block content %}
  7. {% if current_user.is_authenticated %}
  8. {{ form.hidden_tag() }}
  9. <div class="page-inner">
  10. <a class="mb-2 ml-1 text-dark" href="/manage/customers?cid={{ session['current_case'].case_id }}"><i class="fa-solid fa-arrow-left"></i> Back</a>
  11. <div class="mt-2 mb-4">
  12. <div class="row ml-2 mr-2">
  13. <h2 class="pb-2">
  14. <a href="/manage/customers?cid={{ session['current_case'].case_id }}" class="text-dark">Customers</a> > {{ customer.customer_name }} (#{{customer.customer_id}})</h2>
  15. <button class="btn btn-light btn-sm ml-auto" onclick="customer_detail('{{ customer.customer_id }}');">Edit customer</button>
  16. </div>
  17. </div>
  18. <input id="customer_id" style="display:none;" value="{{ customer.customer_id }}"/>
  19. <div class="row">
  20. <div class="col-md-2">
  21. <div class="card card-dark bg-success-gradient">
  22. <div class="card-body pb-0">
  23. <div class="h1 fw-bold float-right"></div>
  24. <h2 id="current_open_cases" class="mb-2">0</h2>
  25. <p>Current open cases</p>
  26. <div class="pull-in sparkline-fix chart-as-background">
  27. <div id="chart_current_open_cases"></div>
  28. </div>
  29. </div>
  30. </div>
  31. </div>
  32. <div class="col-md-2">
  33. <div class="card card-dark bg-info-gradient">
  34. <div class="card-body pb-0">
  35. <div class="h5 fw-bold float-right"><span id="ratio_month"></span></div>
  36. <h2 id="cases_current_month" class="mb-2"></h2>
  37. <p>Current month</p>
  38. <div class="pull-in sparkline-fix chart-as-background">
  39. <div id="chart_month_cases"></div>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="col-md-2">
  45. <div class="card card-dark bg-info-gradient">
  46. <div class="card-body pb-0">
  47. <div class="h1 fw-bold float-right"></div>
  48. <h2 id="cases_last_month" class="mb-2">0</h2>
  49. <p>Last month</p>
  50. <div class="pull-in sparkline-fix chart-as-background">
  51. <div id=""></div>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. <div class="col-md-2">
  57. <div class="card card-dark bg-info-gradient">
  58. <div class="card-body pb-0">
  59. <div class="h5 fw-bold float-right"><span id="ratio_year"></span></div>
  60. <h2 id="cases_current_year" class="mb-2">0</h2>
  61. <p>Current year </p>
  62. <div class="pull-in sparkline-fix chart-as-background">
  63. <div id="chart_year_cases"></div>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. <div class="col-md-2">
  69. <div class="card card-dark bg-info-gradient">
  70. <div class="card-body pb-0">
  71. <div class="h3 fw-bold float-right"></div>
  72. <h2 id="cases_last_year" class="mb-2">0</h2>
  73. <p>Last year (<span id="last_year"></span>)</p>
  74. <div class="pull-in sparkline-fix chart-as-background">
  75. <div></div>
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="col-md-2">
  81. <div class="card card-dark bg-close-gradient">
  82. <div class="card-body pb-0">
  83. <div class="h1 fw-bold float-right"></div>
  84. <h2 id="cases_total" class="mb-2">0</h2>
  85. <p>Total</p>
  86. <div class="pull-in sparkline-fix chart-as-background">
  87. <div></div>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. <div class="row">
  94. <div class="col-12">
  95. <div class="card card-customer">
  96. <div class="card-body">
  97. <div class="row">
  98. <div class="col-md-3 info-customer">
  99. <h5 class="sub"><b>Customer name</b></h5>
  100. <p>{{ customer.customer_name }}</p>
  101. </div>
  102. <div class="col-md-3 info-customer">
  103. <h5 class="sub"><b>Customer Description</b></h5>
  104. <p>{{ customer.customer_description }}</p>
  105. </div>
  106. <div class="col-md-3 info-customer">
  107. <h5 class="sub text-bold"><b>Customer SLAs</b></h5>
  108. <p>{{ customer.customer_sla }}</p>
  109. </div>
  110. <div class="col-md-3 info-customer">
  111. <h5 class="sub text-bold"><b>Average case duration</b></h5>
  112. <p><span id="average_case_duration"></span> days</p>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <div class="row">
  120. <div class="col-12">
  121. <div class="card card-customer">
  122. <div class="card-header">
  123. <div class="row">
  124. <div class="col-12">
  125. <div class="row">
  126. <h3><strong><i class="ml-1 fa-regular fa-address-book mr-1"></i> Contacts</strong></h3>
  127. <button class="btn btn-light btn-sm ml-auto" onclick="add_new_contact({{ customer.customer_id }});">Add Contact</button>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. <div class="card-body">
  133. <div class="customer-list">
  134. {% for contact in contacts %}
  135. <div class="contact-list-item">
  136. <div class="contact-list-detail">
  137. <span class="date float-right"><button class="btn btn-light btn-sm" onclick="edit_contact('{{ contact.id }}','{{ customer.customer_id }}');">Edit</button></span>
  138. <span class="h4">{{ contact.contact_name }}</span>
  139. <p class="ml-2">
  140. {% if contact.contact_role %}
  141. <b>Role: </b>{{ contact.contact_role }}<br/>
  142. {% endif %}
  143. {% if contact.contact_email %}
  144. <b>Email: </b>{{ contact.contact_email }}<br/>
  145. {% endif %}
  146. {% if contact.contact_work_phone %}
  147. <b>Work phone: </b>{{ contact.contact_work_phone }}<br/>
  148. {% endif %}
  149. {% if contact.contact_mobile_phone %}
  150. <b>Mobile phone: </b>{{ contact.contact_mobile_phone }}<br/>
  151. {% endif %}
  152. {% if contact.contact_note %}
  153. <b>Notes: </b>{{ contact.contact_note }}<br/>
  154. {% endif %}
  155. </div>
  156. </div>
  157. {% endfor %}
  158. </div>
  159. </div>
  160. </div>
  161. </div>
  162. </div>
  163. <div class="row">
  164. <div class="col-12">
  165. <div class="card">
  166. <div class="card-header">
  167. <div class="row">
  168. <div class="col-12">
  169. <div class="row">
  170. <div class="col col-heading collapsed" href="#collapse_client_users_view" title="Click to unfold" data-toggle="collapse" role="button" aria-expanded="false" aria-controls="collapse_client_users_view">
  171. <span class="accicon float-left mr-3"><i class="fas fa-angle-right rotate-icon"></i></span>
  172. <div class="card-title">Associated Users</div>
  173. </div>
  174. <div class="col">
  175. <a class="btn btn-light btn-sm float-right" href="/manage/access-control">Manage</a>
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. </div>
  181. <div class="card-body collapse" id="collapse_client_users_view">
  182. The users below are associated with this customer and have by default access to the customer's related data, including
  183. alerts and cases.
  184. <div class="table-responsive" id="client_users_table_wrapper">
  185. <div class="selectgroup">
  186. <span id="table_buttons"></span>
  187. </div>
  188. <table class="table display table table-striped table-hover" width="100%"
  189. cellspacing="0" id="client_users_table">
  190. <thead>
  191. <tr>
  192. <th>#ID</th>
  193. <th>Name</th>
  194. <th>Login Name</th>
  195. <th>Service Account</th>
  196. </tr>
  197. </thead>
  198. <tfoot>
  199. <tr>
  200. <th>#ID</th>
  201. <th>Name</th>
  202. <th>Login Name</th>
  203. <th>Service Account</th>
  204. </tr>
  205. </tfoot>
  206. </table>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. </div>
  212. <div class="row">
  213. <div class="col-12">
  214. <div class="card">
  215. <div class="card-header">
  216. <div class="row">
  217. <div class="col-12">
  218. <div class="row">
  219. <div class="col col-heading collapsed" href="#collapse_client_cases_view" title="Click to unfold" data-toggle="collapse" role="button" aria-expanded="false" aria-controls="collapse_client_cases_view">
  220. <span class="accicon float-left mr-3"><i class="fas fa-angle-right rotate-icon"></i></span>
  221. <div class="card-title">Cases</div>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. <div class="card-body collapse" id="collapse_client_cases_view">
  228. The cases below have been opened for this customer. Click on a case to view its details.
  229. <div class="table-responsive" id="client_cases_table_wrapper">
  230. <table class="table display table table-striped table-hover" width="100%"
  231. cellspacing="0" id="client_cases_table">
  232. <thead>
  233. <tr>
  234. <th>Name</th>
  235. <th>Opening date</th>
  236. <th>State</th>
  237. <th>Owner</th>
  238. </tr>
  239. </thead>
  240. <tfoot>
  241. <tr>
  242. <th>Name</th>
  243. <th>Opening date</th>
  244. <th>State</th>
  245. <th>Owner</th>
  246. </tr>
  247. </tfoot>
  248. </table>
  249. </div>
  250. </div>
  251. </div>
  252. </div>
  253. </div>
  254. <div class="row">
  255. <div class="col-12">
  256. <div class="card">
  257. <div class="card-header">
  258. <div class="row">
  259. <div class="col-12">
  260. <div class="row">
  261. <div class="col col-heading collapsed" href="#collapse_client_assets_view" title="Click to unfold" data-toggle="collapse" role="button" aria-expanded="false" aria-controls="collapse_client_assets_view">
  262. <span class="accicon float-left mr-3"><i class="fas fa-angle-right rotate-icon"></i></span>
  263. <div class="card-title">Assets</div>
  264. </div>
  265. </div>
  266. </div>
  267. </div>
  268. </div>
  269. <div class="card-body collapse" id="collapse_client_assets_view">
  270. The assets below have been seen for this customer.
  271. <div class="table-responsive" id="client_assets_table_wrapper">
  272. <table class="table display table table-striped table-hover" width="100%"
  273. cellspacing="0" id="client_assets_table">
  274. <thead>
  275. <tr>
  276. <th>Name</th>
  277. <th>Description</th>
  278. <th>Type</th>
  279. <th>IP</th>
  280. <th>Seen in case</th>
  281. </tr>
  282. </thead>
  283. <tfoot>
  284. <tr>
  285. <th>Asset name</th>
  286. <th>Description</th>
  287. <th>Type</th>
  288. <th>IP</th>
  289. <th>Seen in case</th>
  290. </tr>
  291. </tfoot>
  292. </table>
  293. </div>
  294. </div>
  295. </div>
  296. </div>
  297. </div>
  298. </div>
  299. {% endif %}
  300. <div class="modal" tabindex="-1" role="dialog" id="modal_add_customer" data-backdrop="true">
  301. <div class="modal-xl modal-dialog" role="document">
  302. <div class="modal-content" id="modal_add_customer_content">
  303. </div><!-- /.modal-content -->
  304. </div><!-- /.modal-dialog -->
  305. </div>
  306. <div class="modal" tabindex="-1" role="dialog" id="modal_add_contact" data-backdrop="true">
  307. <div class="modal-lg modal-dialog" role="document">
  308. <div class="modal-content" id="modal_add_contact_content">
  309. </div><!-- /.modal-content -->
  310. </div><!-- /.modal-dialog -->
  311. </div>
  312. {% endblock content %}
  313. {% block javascripts %}
  314. <script src="/static/assets/js/iris/manage.customers.js"></script>
  315. <script src="/static/assets/js/iris/view.customers.js"></script>
  316. {% endblock javascripts %}