daily pastebin goal
66%
SHARE
TWEET

Untitled

a guest Dec 7th, 2017 45 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module dataTable {
  2. export class dataTableClass {
  3.     applyTable(tableIdString: string) : void {
  4.         (<any>$(tableIdString))
  5.             .DataTable({
  6.                 scrollY: 1000,
  7.                 scrollX: true,
  8.                 scrollCollapse: true,
  9.                 paging: false,
  10.                 searching: false,
  11.                 fixedHeader: true,
  12.                 fixedColumns: {
  13.                     leftColumns: 1
  14.                 }
  15.             });
  16.     }
  17.  
  18.     dataTableExists(tableIdString: string): boolean {
  19.         return (<any>$.fn.DataTable.isDataTable(tableIdString));
  20.     }
  21.  
  22.     applyDatatableIfTableExists(retryCount: number, elementId: string): void {
  23.         if (!elementId) {
  24.             console.warn("table id not defined.");
  25.             return;
  26.         }
  27.  
  28.         if (!retryCount) {
  29.             retryCount = 0;
  30.         } else if (retryCount > 100) {
  31.             console.warn("could not convert table to dataTable.");
  32.             return;
  33.         }
  34.  
  35.         window.setTimeout(() => {
  36.             var tableIdString = "#" + elementId;
  37.             if ((<any>$(tableIdString)).length <= 0) {
  38.                 this.applyDatatableIfTableExists(++retryCount, elementId);
  39.             } else {
  40.                 if (this.dataTableExists(tableIdString)) {
  41.                     debugger;
  42.                     (<any>$(tableIdString)).DataTable({ retrieve: true }).destroy(); // <-- issue here. it seems to restore old data to the now-datatable-less table
  43.                 }
  44.  
  45.                 window.setTimeout(() => {
  46.                     this.applyTable(tableIdString);
  47.                     if (!this.dataTableExists(tableIdString)) {
  48.                         this.applyDatatableIfTableExists(++retryCount, elementId);
  49.                     }
  50.                 }, 250);    
  51.  
  52.                 if (!(<any>$(tableIdString)).hasClass(".dataTable")) {
  53.                     (<any>$(tableIdString)).addClass(".dataTable");
  54.                 }
  55.             }
  56.         }, 250);
  57.     }
  58.  
  59.  
  60.     applyDataTable(id) {
  61.         this.applyDatatableIfTableExists(0, id);
  62.     }
  63. }
RAW Paste Data
Top