1// DataTable Default Options 2$.extend( true, $.fn.dataTable.defaults, { 3 initComplete: function () { 4 var $wrapper = $(this).closest('.dataTables_wrapper'); 5 var dt = $(this).DataTable(); 6 $wrapper.find('.dt-footer').on('change', '.page-select', function (e) { 7 e.preventDefault(); 8 dt.page($(this).val()-1).draw('page'); 9 }); 10 }, 11 pageLength: 25, 12 filter: false, 13 dom: 'f<"table-main-wrapper"t><"dt-footer"<"row" <"col-lg-4 col-md-4 col-sm-6"i><"col-lg-2 col-md-4 col-sm-6"l><"col-lg-6 col-md-4 hidden-sm hidden-xs"p>>>', 14 infoCallback: function (settings, start, end, max, total, pre) { 15 var pages = $(this).DataTable().page.info(); 16 var select = '<select class="page-select">'; 17 for (var i = 1; i <= pages.pages; i++) { 18 select += '<option value="' + i + '"'+(i == pages.page+1 ? ' selected' : '')+'>' + i + '</option>'; 19 } 20 select += '</select>'; 21 22 return 'Page ' + select + ' of ' + (pages.pages) + ' (' + total + ' total entries)'; 23 } 24}); 25 26// CSRF Token 27$.ajaxSetup({ 28 headers: { 29 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 30 } 31}); 32 33// Delete Confirm Handler 34function deleteConfirmHandler(e, isAjax) { 35 e.preventDefault(); 36 37 var $btn = $(this); 38 var deleteLink = $btn.attr('href'); 39 $btn.blur(); 40 41 bootbox.confirm({ 42 title: 'Delete', 43 message: 'Are you sure to delete this item?', 44 buttons: { 45 confirm: { 46 className: 'btn-danger', 47 label: 'Delete' 48 } 49 }, 50 callback: function(result) { 51 if (result) { 52 if (typeof isAjax != 'undefined' && isAjax) { 53 var table = $btn.closest('table'); 54 if (table.length == 1) { 55 $.ajax({ 56 url: deleteLink, 57 method: 'GET', 58 success: function (response) { 59 bootbox.alert(response); 60 table.DataTable().ajax.reload(null, false); 61 } 62 }); 63 return; 64 } 65 } 66 67 window.location = deleteLink; 68 } 69 } 70 }); 71} 72 73function ajaxDeleteConfirmHandler(e) { 74 var handler = deleteConfirmHandler.bind(this); 75 handler(e, true); 76} 77 78var dtBtn = { 79 generate: function (title, link, linkClass) { 80 return '<a href="' + link + '" class="' + linkClass + '">' + title + '</a> '; 81 }, 82 generateCertificateBtn: function (pdfLink, emailLink) { 83 return '<div class="btn-group">'+ 84 '<button type="button" class="btn btn-xs btn-default btn-certificate dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Certificate</button>'+ 85 '<ul class="dropdown-menu">'+ 86 '<li><a href="'+pdfLink+'" target="_blank">PDF</a></li>'+ 87 '<li><a href="'+emailLink+'" class="proposal-email-link">Email</a></li>'+ 88 '</ul>'+ 89 '</div>'; 90 }, 91 edit: function (link) { 92 return this.generate('Edit', link, 'btn btn-xs btn-default'); 93 }, 94 duplicate: function (link) { 95 return this.generate('Duplicate', link, 'btn btn-xs btn-default'); 96 }, 97 delete: function (link) { 98 return '<a href="' + link + '" class="delete-confirm"><i class="glyphicon glyphicon-trash"></i></a>'; 99 }, 100 details: function (title) { 101 if (typeof title == 'undefined') { 102 title = 'Details'; 103 } 104 return this.generate(title, '#', 'btn btn-xs btn-default details-toggle'); 105 } 106}; 107 108var $loadingScreen; 109 110var bindDatePicker = function () { 111 // Date Picker 112 if ($('.date-picker').length > 0) { 113 $('.date-picker').datetimepicker({ 114 format: 'YYYY-MM-DD' 115 }); 116 } 117 118 if ($('.date-picker-r').length > 0) { 119 $('.date-picker-r').datetimepicker({ 120 format: 'YYYY-MM-DD', 121 widgetPositioning: { 122 vertical: 'top' 123 } 124 }); 125 } 126 127 // Time Picker 128 if ($('.time-picker').length > 0) { 129 $('.time-picker').datetimepicker({ 130 format: 'HH:mm' 131 }); 132 } 133 134 // Date Time Picker 135 if ($('.date-time-picker').length > 0) { 136 $('.date-time-picker').datetimepicker({ 137 format: 'YYYY-MM-DD HH:mm:ss' 138 }); 139 } 140}; 141 142function tableSetup(table, url, columDefs, actions, order, extraArgs) { 143 if (typeof actions != 'undefined' && actions != null) { 144 columDefs.push({ 145 targets: columDefs.length, 146 orderable: false, 147 data: "id", 148 render: function (data, type, full, meta) { 149 if (type == 'display') { 150 // Buttons 151 var buttons = ''; 152 153 if (typeof actions.before == 'function') { 154 buttons += actions.before(full); 155 } 156 if (actions.duplicate && full.duplicate_link != undefined) { 157 buttons += dtBtn.duplicate(full.duplicate_link); 158 } 159 if (actions.edit && full.edit_link != undefined) { 160 buttons += dtBtn.edit(full.edit_link); 161 } 162 if (actions.details) { 163 buttons += dtBtn.details(); 164 } 165 if (actions.delete && full.delete_link != undefined) { 166 buttons += dtBtn.delete(full.delete_link); 167 } 168 if (typeof actions.after == 'function') { 169 buttons += actions.after(full); 170 } 171 return buttons; 172 } 173 return data; 174 } 175 }); 176 } 177 178 var options = $.extend({ 179 processing: true, 180 serverSide: true, 181 order: typeof order != 'undefined' ? order : [[0, 'desc']], 182 columnDefs: columDefs, 183 ajax: { 184 type: 'POST', 185 url: url, 186 data: function (d) { 187 d.filter = {}; 188 189 var $listFilter = $('.list-filter'); 190 if ($listFilter.length !== 0) { 191 var data = $listFilter.serializeArray(); 192 $.map(data, function(n, i){ 193 d.filter[n['name']] = n['value']; 194 }); 195 } 196 } 197 } 198 }, extraArgs); 199 200 var dt = table.DataTable(options); 201 202 if (typeof actions != 'undefined' && actions != null) { 203 if (actions.delete) { 204 table.on('click.dt', '.delete-confirm', ajaxDeleteConfirmHandler); 205 } 206 if (actions.details) { 207 table.on('click.dt', '.details-toggle', function (e) { 208 e.preventDefault(); 209 var row = dt.row( $(this).closest('tr') );
210 if (row.child.isShown()) { 211 // Already open -- close it 212 row.child.hide(); 213 } else { 214 row.child(row.data().details_html, 'child-row').show(); 215 } 216 }); 217 } 218 } 219} 220 221function practiceRatioRangeControl($el) { 222 var $rangeCtrl = $el.find('input[type="range"]'); 223 var $numberInput = $el.find('#criminal_percentage'); 224 var $numberInputInverse = $el.find('input[name="criminal_percentage_inverse"]'); 225 226 $rangeCtrl.on('change input', function () { 227 $numberInput.val($(this).val()); 228 $numberInputInverse.val(100 - parseInt($(this).val())); 229 }); 230 $numberInput.on('change input', function () { 231 $rangeCtrl.val($(this).val()); 232 $numberInputInverse.val(100 - parseInt($(this).val())); 233 }); 234 $numberInputInverse.on('change input', function () { 235 $rangeCtrl.val(100 - parseInt($(this).val())); 236 $numberInput.val(100 - parseInt($(this).val())); 237 }); 238} 239 240$(document).ready(function () { 241 // Delete Confirm Button 242 $('.delete-confirm').on('click.delete-confirm', deleteConfirmHandler); 243 244 // Tooltip 245 $('[data-toggle="tooltip"]').tooltip(); 246 247 // Date Picker 248 bindDatePicker(); 249 250 // Select2 Plugin - Default options (only if loaded) 251 if (typeof $.fn.select2 != 'undefined') { 252 $.fn.select2.defaults.set("theme", "bootstrap"); 253 $('.select2').select2(); 254 } 255 256 // Loading 257 $loadingScreen = $('#fullscreen-loading'); 258});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.