1/** 2 * @namespace WPGMZA 3 * @module DataTable 4 * @requires WPGMZA 5 */ 6jQuery(function($) { 7 8 WPGMZA.DataTable = function(element) 9 { 10 var self = this; 11 if(!$.fn.dataTable) 12 { 13 console.warn("The dataTables library is not loaded. Cannot create a dataTable. Did you enable 'Do not enqueue dataTables'?"); 14 15 if(WPGMZA.settings.wpgmza_do_not_enqueue_datatables && WPGMZA.getCurrentPage() == WPGMZA.PAGE_MAP_EDIT) 16 alert("You have selected 'Do not enqueue DataTables' in WP Go Maps' settings. No 3rd party software is loading the DataTables library. Because of this, the marker table cannot load. Please uncheck this option to use the marker table."); 17 18 return; 19 } 20 21 if($.fn.dataTable.ext){ 22 $.fn.dataTable.ext.errMode = "throw"; 23 } else { 24 var version = $.fn.dataTable.version ? $.fn.dataTable.version : "unknown"; 25 console.warn("You appear to be running an outdated or modified version of the dataTables library. This may cause issues with table functionality. This is usually caused by 3rd party software loading an older version of DataTables. The loaded version is " + version + ", we recommend version 2.0 or above."); 26 } 27 28 // In DataTables 2.x processing() is a built-in API method; only register the 29 // 1.x shim (which relies on the private oApi._fnProcessingDisplay) when running 30 // on an older version. 31 if($.fn.dataTable.Api && $.fn.dataTable.versionCheck && !$.fn.dataTable.versionCheck('2.0.0')){ 32 $.fn.dataTable.Api.register( 'processing()', function ( show ) { 33 return this.iterator( 'table', function ( ctx ) { 34 ctx.oApi._fnProcessingDisplay( ctx, show ); 35 } ); 36 } ); 37 } 38 39 this.element = element; 40 this.element.wpgmzaDataTable = this; 41 this.dataTableElement = this.getDataTableElement(); 42 43 var settings = this.getDataTableSettings(); 44 45 46 this.phpClass = $(element).attr("data-wpgmza-php-class"); 47 // this.dataTable = $(this.dataTableElement).DataTable(settings); 48 this.wpgmzaDataTable = this; 49 50 this.useCompressedPathVariable = (WPGMZA.restAPI.isCompressedPathVariableSupported && WPGMZA.settings.enable_compressed_path_variables); 51 this.method = (this.useCompressedPathVariable ? "GET" : "POST"); 52 53 if(this.getLanguageURL() == undefined || this.getLanguageURL() == "//cdn.datatables.net/plug-ins/1.10.12/i18n/English.json") { 54 this.dataTable = $(this.dataTableElement).DataTable(settings); 55 this.dataTable.ajax.reload(); 56 } 57 else { 58 59 $.ajax(this.getLanguageURL(), { 60 61 success: function(response, status, xhr){ 62 self.languageJSON = response; 63 self.dataTable = $(self.dataTableElement).DataTable(settings); 64 self.dataTable.ajax.reload(); 65 } 66 67 }); 68 } 69 } 70 71 WPGMZA.DataTable.prototype.getDataTableElement = function() 72 { 73 return $(this.element).find("table"); 74 } 75 76 /** 77 * This function wraps the request so it doesn't collide with WP query vars, 78 * it also adds the PHP class so that the controller knows which class to 79 * instantiate 80 * @return object 81 */ 82 WPGMZA.DataTable.prototype.onAJAXRequest = function(data, settings) 83 { 84 // TODO: Move this to the REST API module and add useCompressedPathVariable 85 var params = { 86 "phpClass": this.phpClass 87 }; 88 89 var attr = $(this.element).attr("data-wpgmza-ajax-parameters"); 90 if(attr) 91 $.extend(params, JSON.parse(attr)); 92 93 return $.extend(data, params); 94 } 95 96 WPGMZA.DataTable.prototype.onDataTableAjaxRequest = function(data, callback, settings) 97 { 98 var self = this; 99 var element = this.element; 100 var route = $(element).attr("data-wpgmza-rest-api-route"); 101 var params = this.onAJAXRequest(data, settings); 102 var draw = params.draw; 103 104 delete params.draw; 105 106 if(!route) 107 throw new Error("No data-wpgmza-rest-api-route attribute specified"); 108 109 var options = { 110 method: "POST", 111 useCompressedPathVariable: true, 112 data: params, 113 dataType: "json", 114 cache: !this.preventCaching, 115 beforeSend: function(xhr) { 116 // Put draw in header, for compressed requests 117 xhr.setRequestHeader("X-DataTables-Draw", draw);
118 }, 119 success: function(response, status, xhr) { 120 121 response.draw = draw; 122 123 /* Convert any false objects to arrays */ 124 if(!(response.data instanceof Array) && response.data instanceof Object){ 125 response.data = Object.keys(response.data).map((key) => response.data[key]); 126 } 127 128 if(!(response.meta instanceof Array) && response.meta instanceof Object){ 129 response.meta = Object.keys(response.meta).map((key) => response.meta[key]); 130 } 131 132 self.lastResponse = response; 133 134 callback(response); 135 136 $("[data-marker-icon-src]").each(function(index, element) { 137 var icon = WPGMZA.MarkerIcon.createInstance( 138 $(element).attr("data-marker-icon-src") 139 ); 140 141 icon.applyToElement(element); 142 }); 143 144 } 145 }; 146 147 return WPGMZA.restAPI.call(route, options); 148 } 149 150 WPGMZA.DataTable.prototype.getDataTableSettings = function() 151 { 152 var self = this; 153 var element = this.element; 154 var options = {}; 155 156 if($(element).attr("data-wpgmza-datatable-options")) 157 options = JSON.parse($(element).attr("data-wpgmza-datatable-options")); 158 159 options.deferLoading = true; 160 options.processing = true; 161 options.serverSide = true; 162 163 options.ajax = function(data, callback, settings) { 164 return WPGMZA.DataTable.prototype.onDataTableAjaxRequest.apply(self, arguments); 165 } 166 167 if(WPGMZA.AdvancedTableDataTable && this instanceof WPGMZA.AdvancedTableDataTable && WPGMZA.settings.wpgmza_default_items){ 168 options.pageLength = parseInt(WPGMZA.settings.wpgmza_default_items); 169 } 170 171 if(WPGMZA.settings && WPGMZA.settings.enable_datatables_enter_search){ 172 options.search = { return : true }; 173 } 174 175 options.lengthMenu = [[5, 10, 25, 50, 100, -1], ["5", "10", "25", "50", "100", WPGMZA.localized_strings.all]]; 176 177 var languageURL = this.getLanguageURL(); 178 if(languageURL) 179 options.language = { 180 "url": languageURL 181 }; 182 183 return options; 184 } 185 186 WPGMZA.DataTable.prototype.getLanguageURL = function() 187 { 188 if(!WPGMZA.locale) 189 return null; 190 191 var languageURL; 192 193 switch(WPGMZA.locale.substr(0, 2)) 194 { 195 case "af": 196 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Afrikaans.json"; 197 break; 198 199 case "sq": 200 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Albanian.json"; 201 break; 202 203 case "am": 204 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Amharic.json"; 205 break; 206 207 case "ar": 208 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Arabic.json"; 209 break; 210 211 case "hy": 212 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Armenian.json"; 213 break; 214 215 case "az": 216 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Azerbaijan.json"; 217 break; 218 219 case "bn": 220 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Bangla.json"; 221 break; 222 223 case "eu": 224 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Basque.json"; 225 break; 226 227 case "be": 228 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Belarusian.json"; 229 break; 230 231 case "bg": 232 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Bulgarian.json"; 233 break; 234 235 case "ca": 236 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Catalan.json"; 237 break; 238 239 case "zh": 240 if(WPGMZA.locale == "zh_TW") 241 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Chinese-traditional.json"; 242 else 243 languageURL = "//cdn.datatables.net/plug-ins/1.10.12/i18n/Chinese.json"; 244 break; 245 246 case "hr": 247 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Croatian.json"; 248 break; 249 250 case "cs": 251 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Czech.json"; 252 break; 253 254 case "da": 255 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Danish.json"; 256 break; 257 258 case "nl": 259 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Dutch.json"; 260 break; 261 262 /*case "en": 263 languageURL = "//cdn.datatables.net/plug-ins/1.10.12/i18n/English.json"; 264 break;*/ 265 266 case "et": 267 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Estonian.json"; 268 break; 269 270 case "fi": 271 if(WPGMZA.locale.match(/^fil/)) 272 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Filipino.json"; 273 else 274 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Finnish.json"; 275 break; 276 277 case "fr": 278 languageURL = WPGMZA.pluginDirURL + "languages/datatables/French.json"; 279 break; 280 281 case "gl": 282 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Galician.json"; 283 break; 284 285 case "ka": 286 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Georgian.json"; 287 break; 288 289 case "de": 290 languageURL = WPGMZA.pluginDirURL + "languages/datatables/German.json"; 291 break; 292 293 case "el": 294 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Greek.json"; 295 break; 296 297 case "gu": 298 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Gujarati.json"; 299 break; 300 301 case "he": 302 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Hebrew.json"; 303 break; 304 305 case "hi": 306 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Hindi.json"; 307 break; 308 309 case "hu": 310 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Hungarian.json"; 311 break; 312 313 case "is": 314 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Icelandic.json"; 315 break; 316 317 /*case "id": 318 languageURL = "//cdn.datatables.net/plug-ins/1.10.12/i18n/Indonesian-Alternative.json"; 319 break;*/ 320 321 case "id": 322 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Indonesian.json"; 323 break; 324 325 case "ga": 326 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Irish.json"; 327 break; 328 329 case "it": 330 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Italian.json"; 331 break; 332 333 case "ja": 334 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Japanese.json"; 335 break; 336 337 case "kk": 338 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Kazakh.json"; 339 break; 340 341 case "ko": 342 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Korean.json"; 343 break; 344 345 case "ky": 346 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Kyrgyz.json"; 347 break; 348 349 case "lv": 350 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Latvian.json"; 351 break; 352 353 case "lt": 354 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Lithuanian.json"; 355 break; 356 357 case "mk": 358 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Macedonian.json"; 359 break; 360 361 case "ml": 362 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Malay.json"; 363 break; 364 365 case "mn": 366 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Mongolian.json"; 367 break; 368 369 case "ne": 370 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Nepali.json"; 371 break; 372 373 case "nb": 374 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Norwegian-Bokmal.json"; 375 break; 376 377 case "nn": 378 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Norwegian-Nynorsk.json"; 379 break; 380 381 case "ps": 382 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Pashto.json"; 383 break; 384 385 case "fa": 386 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Persian.json"; 387 break; 388 389 case "pl": 390 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Polish.json"; 391 break; 392 393 case "pt": 394 if(WPGMZA.locale == "pt_BR") 395 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Portuguese-Brasil.json"; 396 else 397 languageURL = "//cdn.datatables.net/plug-ins/1.10.12/i18n/Portuguese.json"; 398 break; 399 400 case "ro": 401 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Romanian.json"; 402 break; 403 404 case "ru": 405 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Russian.json"; 406 break; 407 408 case "sr": 409 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Serbian.json"; 410 break; 411 412 case "si": 413 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Sinhala.json"; 414 break; 415 416 case "sk": 417 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Slovak.json"; 418 break; 419 420 case "sl": 421 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Slovenian.json"; 422 break; 423 424 case "es": 425 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Spanish.json"; 426 break; 427 428 case "sw": 429 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Swahili.json"; 430 break; 431 432 case "sv": 433 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Swedish.json"; 434 break; 435 436 case "ta": 437 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Tamil.json"; 438 break; 439 440 case "te": 441 languageURL = WPGMZA.pluginDirURL + "languages/datatables/telugu.json"; 442 break; 443 444 case "th": 445 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Thai.json"; 446 break; 447 448 case "tr": 449 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Turkish.json"; 450 break; 451 452 case "uk": 453 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Ukrainian.json"; 454 break; 455 456 case "ur": 457 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Urdu.json"; 458 break; 459 460 case "uz": 461 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Uzbek.json"; 462 break; 463 464 case "vi": 465 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Vietnamese.json"; 466 break; 467 468 case "cy": 469 languageURL = WPGMZA.pluginDirURL + "languages/datatables/Welsh.json"; 470 break; 471 } 472 473 return languageURL; 474 } 475 476 WPGMZA.DataTable.prototype.onAJAXResponse = function(response) 477 { 478 479 } 480 481 WPGMZA.DataTable.prototype.reload = function() 482 { 483 if(this.dataTable){ 484 this.dataTable.ajax.reload(null, false); // null callback, false for resetPaging 485 } 486 } 487 488});
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.