app-user.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. /*=========================================================================================
  2. File Name: app-user.js
  3. Description: User page JS
  4. --------------------------------------------------------------------------------------
  5. Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
  6. Author: PIXINVENT
  7. Author URL: http://www.themeforest.net/user/pixinvent
  8. ==========================================================================================*/
  9. $(document).ready(function () {
  10. var isRtl;
  11. if ( $('html').attr('data-textdirection') == 'rtl' ) {
  12. isRtl = true;
  13. } else {
  14. isRtl = false;
  15. }
  16. // Rendering badge in status column
  17. var customBadgeHTML = function (params) {
  18. var color = "";
  19. if (params.value == "active") {
  20. color = "success"
  21. return "<div class='badge badge-pill badge-light-" + color + "' >" + params.value + "</div>"
  22. } else if (params.value == "blocked") {
  23. color = "danger";
  24. return "<div class='badge badge-pill badge-light-" + color + "' >" + params.value + "</div>"
  25. } else if (params.value == "deactivated") {
  26. color = "warning";
  27. return "<div class='badge badge-pill badge-light-" + color + "' >" + params.value + "</div>"
  28. }
  29. }
  30. // Rendering bullet in verified column
  31. var customBulletHTML = function (params) {
  32. var color = "";
  33. if (params.value == true) {
  34. color = "success"
  35. return "<div class='bullet bullet-sm bullet-" + color + "' >" + "</div>"
  36. } else if (params.value == false) {
  37. color = "secondary";
  38. return "<div class='bullet bullet-sm bullet-" + color + "' >" + "</div>"
  39. }
  40. }
  41. // Renering Icons in Actions column
  42. var customIconsHTML = function (params) {
  43. var usersIcons = document.createElement("span");
  44. var editIconHTML = "<a href='app-user-edit'><i class='users-edit-icon feather icon-edit-1 mr-50'></i></a>"
  45. var deleteIconHTML = document.createElement('i');
  46. var attr = document.createAttribute("class")
  47. attr.value = "users-delete-icon feather icon-trash-2"
  48. deleteIconHTML.setAttributeNode(attr);
  49. // selected row delete functionality
  50. deleteIconHTML.addEventListener("click", function () {
  51. deleteArr = [
  52. params.data
  53. ];
  54. // var selectedData = gridOptions.api.getSelectedRows();
  55. gridOptions.api.updateRowData({
  56. remove: deleteArr
  57. });
  58. });
  59. usersIcons.appendChild($.parseHTML(editIconHTML)[0]);
  60. usersIcons.appendChild(deleteIconHTML);
  61. return usersIcons
  62. }
  63. // Rendering avatar in username column
  64. var customAvatarHTML = function (params) {
  65. return "<span class='avatar'><img src='" + params.data.avatar + "' height='32' width='32'></span>" + params.value
  66. }
  67. // ag-grid
  68. /*** COLUMN DEFINE ***/
  69. var columnDefs = [{
  70. headerName: 'ID',
  71. field: 'id',
  72. width: 125,
  73. filter: true,
  74. checkboxSelection: true,
  75. headerCheckboxSelectionFilteredOnly: true,
  76. headerCheckboxSelection: true,
  77. },
  78. {
  79. headerName: 'Username',
  80. field: 'username',
  81. filter: true,
  82. width: 175,
  83. cellRenderer: customAvatarHTML,
  84. },
  85. {
  86. headerName: 'Email',
  87. field: 'email',
  88. filter: true,
  89. width: 225,
  90. },
  91. {
  92. headerName: 'Name',
  93. field: 'name',
  94. filter: true,
  95. width: 200,
  96. },
  97. {
  98. headerName: 'Country',
  99. field: 'country',
  100. filter: true,
  101. width: 150,
  102. },
  103. {
  104. headerName: 'Role',
  105. field: 'role',
  106. filter: true,
  107. width: 150,
  108. },
  109. {
  110. headerName: 'Status',
  111. field: 'status',
  112. filter: true,
  113. width: 150,
  114. cellRenderer: customBadgeHTML,
  115. cellStyle: {
  116. "text-align": "center"
  117. }
  118. },
  119. {
  120. headerName: 'Verified',
  121. field: 'is_verified',
  122. filter: true,
  123. width: 125,
  124. cellRenderer: customBulletHTML,
  125. cellStyle: {
  126. "text-align": "center"
  127. }
  128. },
  129. {
  130. headerName: 'Department',
  131. field: 'department',
  132. filter: true,
  133. width: 150,
  134. },
  135. {
  136. headerName: 'Actions',
  137. field: 'transactions',
  138. width: 150,
  139. cellRenderer: customIconsHTML,
  140. }
  141. ];
  142. /*** GRID OPTIONS ***/
  143. var gridOptions = {
  144. defaultColDef: {
  145. sortable: true
  146. },
  147. enableRtl: isRtl,
  148. columnDefs: columnDefs,
  149. rowSelection: "multiple",
  150. floatingFilter: true,
  151. filter: true,
  152. pagination: true,
  153. paginationPageSize: 20,
  154. pivotPanelShow: "always",
  155. colResizeDefault: "shift",
  156. animateRows: true,
  157. resizable: true
  158. };
  159. if (document.getElementById("myGrid")) {
  160. /*** DEFINED TABLE VARIABLE ***/
  161. var gridTable = document.getElementById("myGrid");
  162. /*** GET TABLE DATA FROM URL ***/
  163. agGrid
  164. .simpleHttpRequest({
  165. url: "data/users-list.json"
  166. })
  167. .then(function (data) {
  168. gridOptions.api.setRowData(data);
  169. });
  170. /*** FILTER TABLE ***/
  171. function updateSearchQuery(val) {
  172. gridOptions.api.setQuickFilter(val);
  173. }
  174. $(".ag-grid-filter").on("keyup", function () {
  175. updateSearchQuery($(this).val());
  176. });
  177. /*** CHANGE DATA PER PAGE ***/
  178. function changePageSize(value) {
  179. gridOptions.api.paginationSetPageSize(Number(value));
  180. }
  181. $(".sort-dropdown .dropdown-item").on("click", function () {
  182. var $this = $(this);
  183. changePageSize($this.text());
  184. $(".filter-btn").text("1 - " + $this.text() + " of 50");
  185. });
  186. /*** EXPORT AS CSV BTN ***/
  187. $(".ag-grid-export-btn").on("click", function (params) {
  188. gridOptions.api.exportDataAsCsv();
  189. });
  190. // filter data function
  191. var filterData = function agSetColumnFilter(column, val) {
  192. var filter = gridOptions.api.getFilterInstance(column)
  193. var modelObj = null
  194. if (val !== "all") {
  195. modelObj = {
  196. type: "equals",
  197. filter: val
  198. }
  199. }
  200. filter.setModel(modelObj)
  201. gridOptions.api.onFilterChanged()
  202. }
  203. // filter inside role
  204. $("#users-list-role").on("change", function () {
  205. var usersListRole = $("#users-list-role").val();
  206. filterData("role", usersListRole)
  207. });
  208. // filter inside verified
  209. $("#users-list-verified").on("change", function () {
  210. var usersListVerified = $("#users-list-verified").val();
  211. filterData("is_verified", usersListVerified)
  212. });
  213. // filter inside status
  214. $("#users-list-status").on("change", function () {
  215. var usersListStatus = $("#users-list-status").val();
  216. filterData("status", usersListStatus)
  217. });
  218. // filter inside department
  219. $("#users-list-department").on("change", function () {
  220. var usersListDepartment = $("#users-list-department").val();
  221. filterData("department", usersListDepartment)
  222. });
  223. // filter reset
  224. $(".users-data-filter").click(function () {
  225. $('#users-list-role').prop('selectedIndex', 0);
  226. $('#users-list-role').change();
  227. $('#users-list-status').prop('selectedIndex', 0);
  228. $('#users-list-status').change();
  229. $('#users-list-verified').prop('selectedIndex', 0);
  230. $('#users-list-verified').change();
  231. $('#users-list-department').prop('selectedIndex', 0);
  232. $('#users-list-department').change();
  233. });
  234. /*** INIT TABLE ***/
  235. new agGrid.Grid(gridTable, gridOptions);
  236. }
  237. // users language select
  238. if ($("#users-language-select2").length > 0) {
  239. $("#users-language-select2").select2({
  240. dropdownAutoWidth: true,
  241. width: '100%'
  242. });
  243. }
  244. // users music select
  245. if ($("#users-music-select2").length > 0) {
  246. $("#users-music-select2").select2({
  247. dropdownAutoWidth: true,
  248. width: '100%'
  249. });
  250. }
  251. // users movies select
  252. if ($("#users-movies-select2").length > 0) {
  253. $("#users-movies-select2").select2({
  254. dropdownAutoWidth: true,
  255. width: '100%'
  256. });
  257. }
  258. // users birthdate date
  259. if ($(".birthdate-picker").length > 0) {
  260. $('.birthdate-picker').pickadate({
  261. format: 'mmmm, d, yyyy'
  262. });
  263. }
  264. // Input, Select, Textarea validations except submit button validation initialization
  265. if ($(".users-edit").length > 0) {
  266. $("input,select,textarea").not("[type=submit]").jqBootstrapValidation();
  267. }
  268. });