Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.68 KB | None | 0 0
  1. $(function () {
  2. dimensionJS.global_init.start();
  3. });
  4.  
  5. var dimensionJS = {
  6. global_init: {
  7. start: function () {
  8. for (var section in dimensionJS.global_init.sections) {
  9. dimensionJS.global_init.sections[section]();
  10. }
  11. },
  12.  
  13. sections: {
  14. navBar: function () {
  15. $('.nav > li > a[href="' + window.location.pathname + '"]').parent().addClass('active');
  16.  
  17. $('.left-nav-toggle a').on('click', function (event) {
  18. event.preventDefault();
  19. $('body').toggleClass('nav-toggle');
  20. });
  21.  
  22. $(window).resize(_.debounce(function () {
  23. if ($(window).width() > 767) {
  24. $('body').removeClass('nav-toggle');
  25. }
  26. }, 500));
  27.  
  28. $('.nav-second').on('show.bs.collapse', function () {
  29. $('.nav-second.in').collapse('hide');
  30. });
  31.  
  32. $('.panel-toggle').on('click', function (event) {
  33. event.preventDefault();
  34. var hpanel = $(event.target).closest('div.panel');
  35. var icon = $(event.target).closest('i');
  36. var body = hpanel.find('div.panel-body');
  37. var footer = hpanel.find('div.panel-footer');
  38. body.slideToggle(300);
  39. footer.slideToggle(200);
  40. icon.toggleClass('fa-chevron-up').toggleClass('fa-chevron-down');
  41. hpanel.toggleClass('').toggleClass('panel-collapse');
  42. setTimeout(function () {
  43. hpanel.resize();
  44. hpanel.find('[id^=map-]').resize();
  45. }, 50);
  46. });
  47.  
  48. $('.panel-close').on('click', function (event) {
  49. event.preventDefault();
  50. var hpanel = $(event.target).closest('div.panel');
  51. hpanel.remove();
  52. });
  53. },
  54.  
  55. formValidator: function () {
  56. $('form').bind('invalid-form.validate', function (form, validator) {
  57. var msg = '';
  58.  
  59. for (var i = 0; i < validator.errorList.length; i++) {
  60. msg += validator.errorList[i].message + ((i < validator.errorList.length) ? '<br />' : '');
  61. }
  62. toastr['warning'](msg, 'Warning');
  63. });
  64. },
  65.  
  66. toastr: function () {
  67. toastr.options = {
  68. positionClass: 'toast-bottom-right',
  69. progressBar: true,
  70. showEasing: 'swing',
  71. timeOut: 2500
  72. };
  73. },
  74.  
  75. dataTables: function () {
  76. $.extend(true, $.fn.dataTable.defaults, {
  77. dom: '<"panel panel-filled"<"panel-body"<"row"<"col-sm-2"l><"col-sm-10"B>>>><"panel panel-filled"<"panel-body"<"table-responsive"t>>><"panel panel-filled"<"panel-body"<"row"<"col-sm-5"i><"col-sm-7"p>>>>',
  78.  
  79. lengthMenu: [[5, 10, 25, 50, 100, 200, 400], [5, 10, 25, 50, 100, 200, 400]],
  80.  
  81. pageLength: 25,
  82.  
  83. language: {
  84. paginate: {
  85. next: '<i class="fa fa-chevron-right"></i>',
  86. previous: '<i class="fa fa-chevron-left"></i>'
  87. },
  88. aria: {
  89. paginate: {
  90. next: 'Next',
  91. previous: 'Previous'
  92. }
  93. }
  94. },
  95.  
  96. buttons: [
  97. { extend: 'copy', className: 'btn-sm' },
  98. { extend: 'csv', className: 'btn-sm' },
  99. { extend: 'excel', className: 'btn-sm' },
  100. { extend: 'pdf', className: 'btn-sm' },
  101. { extend: 'print', className: 'btn-sm' }
  102. ],
  103.  
  104. processing: true,
  105. paging: true,
  106. deferRender: true,
  107. responsive: true,
  108. autoWidth: false,
  109.  
  110. serverSide: true,
  111.  
  112. ajax: {
  113. contentType: 'application/json; charset=utf-8',
  114. },
  115.  
  116. initComplete: function (settings) {
  117. var self = dimensionJS.dataTables.initiated[settings.sInstance];
  118.  
  119. self['jsonPostExtension'] = {};
  120. self.jsonPostExtension['dimensionJSON'] = {};
  121.  
  122. self.columns().every(function (index) {
  123. self.jsonPostExtension.dimensionJSON[self.settings().init().columns[index].data] = {};
  124.  
  125. currColumn = this;
  126.  
  127. if ($(currColumn.footer()).find('.searchtype-string').length != 0) {
  128. dimensionJS.helpers.dataTables.searchTypes.string(currColumn);
  129. }
  130. else if ($(currColumn.footer()).find('.searchtype-daterange').length != 0) {
  131. alert('datetime'); //wip
  132. }
  133. });
  134. }
  135. });
  136.  
  137. for (var dataTable in dimensionJS.dataTables) {
  138. if ($('#' + dataTable).length) {
  139. dimensionJS.dataTables.initiated[dataTable] = dimensionJS.dataTables[dataTable]();
  140. }
  141. }
  142. }
  143. }
  144. },
  145.  
  146. dataTables: {
  147. initiated: {}, // Initialisatiion container for datatables on screen
  148.  
  149. auditLogEntries: function () {
  150. return $('#auditLogEntries').DataTable({
  151. ajax: {
  152. type: 'POST',
  153. url: '/Administration/AuditLog/DataHandler',
  154. data: function (data) {
  155. return dimensionJS.helpers.dataTables.jsonPostDataExtender('auditLogEntries', data);
  156. }
  157. },
  158.  
  159. columns: [
  160. {
  161. data: 'Timestamp',
  162. render: function (value) {
  163. return dimensionJS.helpers.formatUnixDateTime(value);
  164. }
  165. },
  166. { data: 'UserName' },
  167. { data: 'IPAddress' },
  168. { data: 'AreaAccessed' },
  169. { data: 'ControllerAccessed' },
  170. { data: 'ActionAccessed' },
  171. ],
  172.  
  173. order: [[0, 'desc']]
  174. });
  175. },
  176.  
  177. versionLogEntries: function () {
  178. return $('#versionLogEntries').DataTable({
  179. ajax: {
  180. type: 'POST',
  181. url: '/Administration/VersionLog/DataHandler',
  182. data: function (data) {
  183. return dimensionJS.helpers.dataTables.jsonPostDataExtender('versionLogEntries', data);
  184. }
  185. },
  186.  
  187. columns: [
  188. {
  189. data: 'Timestamp',
  190. render: function (value) {
  191. return dimensionJS.helpers.formatUnixDateTime(value);
  192. }
  193. },
  194. { data: 'UserName' },
  195. {
  196. data: 'VersionNumber',
  197. render: function (value) {
  198. return dimensionJS.helpers.twoDecimalPlaces(value);
  199. }
  200. },
  201. {
  202. data: 'Details',
  203. render: function (value) {
  204. return dimensionJS.helpers.replaceLineBreaks(value);
  205. }
  206. }
  207. ],
  208.  
  209. order: [[0, 'desc']]
  210. });
  211. }
  212. },
  213.  
  214. ajaxFormActions: {
  215. onBegin: function (obj) {
  216. $(obj).find(':input').prop('disabled', true);
  217. },
  218.  
  219. onComplete: function (obj) {
  220. $(obj).find(':input').prop('disabled', false);
  221. },
  222.  
  223. onFailure: function (msg) {
  224. toastr['error'](msg, 'Error');
  225. },
  226.  
  227. onSuccess: function (obj, dataTable, msg) {
  228. toastr['success'](msg, 'Success');
  229.  
  230. dimensionJS.dataTables.initiated[dataTable].draw();
  231.  
  232. $('.modal.in').modal('hide');
  233.  
  234. $(obj).trigger('reset');
  235. }
  236. },
  237.  
  238. helpers: {
  239. raiseAlert: function () {
  240. alert('Alert');
  241. },
  242.  
  243. returnTestString: function () {
  244. return 'TestString';
  245. },
  246.  
  247. returnTestObj: function () {
  248. var testObj = {
  249. testItem1: {
  250. subItem1: 1,
  251. subItem2: 2,
  252. subItem3: 3
  253. }
  254. };
  255.  
  256. return testObj;
  257. },
  258.  
  259. twoDecimalPlaces: function (value) {
  260. if (value === null) {
  261. return '';
  262. }
  263. else {
  264. return parseFloat(value).toFixed(2);
  265. }
  266. },
  267.  
  268. formatUnixDateTime: function (value) {
  269. if (value === null) {
  270. return '';
  271. }
  272. else {
  273. var pattern = /Date\(([^)]+)\)/;
  274. var result = pattern.exec(value);
  275. var dateTime = parseFloat(result[1]);
  276.  
  277. return moment(dateTime).format('DD/MM/YYYY HH:mm:ss');
  278. }
  279. },
  280.  
  281. replaceLineBreaks: function (value) {
  282. if (value === null) {
  283. return '';
  284. }
  285. else {
  286. return value.replace(/\r\n|\r|\n/g, '<br />');
  287. }
  288. },
  289.  
  290. dataTables: {
  291. jsonPostDataExtender: function (dataTable, obj) {
  292. if (dataTable in dimensionJS.dataTables.initiated) {
  293. obj = $.extend({}, obj, dimensionJS.dataTables.initiated[dataTable].jsonPostExtension);
  294. }
  295. return JSON.stringify(obj);
  296. },
  297.  
  298. searchTypes: {
  299. string: function (obj) {
  300. $('input', obj.footer()).on('keyup change', function () {
  301. if (obj.search() !== this.value) {
  302. obj.search(this.value).draw();
  303. }
  304. });
  305. },
  306.  
  307. dateRange: function (dataTable, obj, column) {
  308. $(obj).find('.to, .from').each(function () {
  309. $(this).datetimepicker({
  310. inline: true,
  311. useCurrent: false,
  312. format: 'DD/MM/YYYY HH:mm',
  313. minDate: moment('2017-01-01'),
  314. maxDate: moment().endOf('day')
  315. });
  316.  
  317. $(this).datetimepicker().on('dp.change', function (value) {
  318. if ($(this).hasClass('from')) {
  319. $(obj).find('.to').data('DateTimePicker').minDate(value.date);
  320. dataTable.jsonPostExtension.dimensionJSON[column]['from'] = value.date;
  321. }
  322. else if ($(this).hasClass('to')) {
  323. $(obj).find('.from').data('DateTimePicker').maxDate(value.date);
  324. dataTable.jsonPostExtension.dimensionJSON[column]['to'] = value.date;
  325. }
  326. });
  327. });
  328. }
  329. }
  330. }
  331. }
  332. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement