{"version":3,"sources":["webpack:///./Scripts/src/v2/app/ViewModels/Info/DrugShortages.ts","webpack:///./Scripts/src/v2/app/Components/GridView.ts"],"names":["DrugShortages","_createClass","DataSource","_classCallCheck","_defineProperty","length","ParseDate","$","each","i","row","Object","assign","this","Grid","GridView","Data","ko","observableArray","UseFilter","FilterCriteria","GridTemplateName","PageSize","PagerPos","Filter","ClickFnOne","ajax","cache","url","data","success","window","location","href","FileGuid","FileName","Model","vm","applyBindings","document","getElementById","configuration","_this","Columns","propertyName","push","headerText","rowText","columns","map","k","reduce","res","o","str","replace","expression","terms","split","trailingWildcard","expr","escapeRegExp","RegExp","observable","self","GridName","Math","floor","random","WildCardFilter","SectionFilter","SectionKey","SectionValue","LastSectionVal","RawData","filterRowData","forEach","filter","filteredResults","toString","toLowerCase","includes","criteria","pickColumns","pickedRowValues","keys","key","e","rowJSON","stringToSearch","join","results","convertWildcardStringToRegExp","test","regexMatchRowJSON","extend","rateLimit","timeout","method","subscribe","change","CurrentPageIndex","pureComputed","read","originalArray","slice","newArray","index","runFilter","array","write","value","owner","parseInt","GetColumnsForScaffolding","unwrap","ItemsOnCurrentPage","computed","startIndex","endIndex","PageIndex","page","MaxPageIndex","ceil","PreviousPage","NextPage","bindingHandlers","simpleGrid","init","update","element","viewModelAccessor","allBindings","templateEngine","nativeTemplateEngine","viewModel","firstChild","removeNode","gridTemplateName","get","pageLinksTemplateName","gridContainer","appendChild","createElement","renderTemplate","pageLinksContainer","insertBefore","highlight","valueAccessor","bindingContext","options","utils","unwrapObservable","text","keyword","regex","css","sanitize","html","innerHTML","sort","allBindingsAccessor","asc","style","cursor","onclick","prop","arr","left","right","rec1","rec2","props","propName","parenIndex","indexOf","substring","ajaxComplete","DataLoaded"],"mappings":"mNAGaA,EAAaC,KAGtB,SAAAD,EAAYE,GAAyBC,IAAA,KAAAH,GAAAI,IAAA,oBAI7BF,EAAWG,OAAS,IACpBC,YAAUJ,EAAYA,EAAY,CAAC,oBAAqB,yBACxDK,EAAEC,KAAKN,GAAY,SAAUO,EAAGC,UACrBC,OAAOC,OAAOF,EAAGN,IAAA,GAAK,SAAWM,EAAY,SAAa,cAC1DC,OAAOC,OAAOF,EAAGN,IAAA,GAAK,QAAUM,EAAmB,gBAAoB,qBACvEC,OAAOC,OAAOF,EAAGN,IAAA,GAAK,OAASM,EAAuB,oBAAwB,yBAC9EC,OAAOC,OAAOF,EAAGN,IAAA,GAAK,kBAAoBM,EAAuB,oBAAwB,yBACzFC,OAAOC,OAAOF,EAAGN,IAAA,GAAK,cAAgBM,EAA0B,uBAA2B,yBAT/FG,KAaNC,KAAO,IAAIC,IAAS,CACrBC,KAAMC,GAAGC,gBAAgBhB,GACzBiB,WAAW,EACXC,eAAgB,CACZ,SACA,QACA,cACA,OACA,kBACA,eAEJC,iBAAkB,oBAClBC,SAAU,GACVC,SAAU,QA1BHV,KA6BNC,KAAKU,OAAO,IA7BNX,KA+BNC,KAAKW,WAAa,WAEnBlB,EAAEmB,KAAK,CACHC,OAAO,EACPC,IAAK,iCACLC,KAAM,GACNC,QAAS,SAAUD,GAEfE,OAAOC,SAASC,KAAO,+BACjBJ,EAAKK,SACL,aAAeL,EAAKM,gBASxCC,EAAcL,OAAQK,MACtBC,EAAK,IAAIrC,EAAcoC,GACvBL,OAAQM,GAAKA,EAEnB9B,GAAE,WACEU,GAAGqB,cAAcD,EAAIE,SAASC,eAAe,2B,2IC3DpCzB,G,MAAQd,KAkGjB,SAAAc,EAAY0B,GAA4B,IAAAC,EAAA,KAAAvC,IAAA,KAAAY,GAAAX,IAAA,iCAjGL,SAACyB,GAChC,GAA2B,iBAAhBA,EAAKxB,QAAuC,IAAhBwB,EAAKxB,OACxC,MAAO,GAEX,IAAIsC,EAAU,GACd,IAAK,IAAIC,KAAgBf,EAAK,GAC1Bc,EAAQE,KAAK,CAAEC,WAAYF,EAAcG,QAASH,IAEtD,OAAOD,KACVvC,IAAA,oBAEqB,SAACM,EAAKsC,GAExB,GAAKtC,GAAQsC,EAGb,OAAOA,EAAQC,KAAI,SAAAC,GAAC,OAAIA,KAAKxC,EAAGN,IAAA,GAAM8C,EAAIxC,EAAIwC,IAAO,MAChDC,QAAO,SAACC,EAAKC,GAAC,OAAK1C,OAAOC,OAAOwC,EAAKC,KAAI,OAClDjD,IAAA,qBAEsB,SAACkD,GACpB,OAAOA,EAAIC,QAAQ,sBAAuB,WAC7CnD,IAAA,sCAGuC,SAACoD,GAErC,GAAKA,EAAL,CAQA,IALA,IAAIC,EAAQD,EAAWE,MAAM,KAEzBC,GAAmB,EAEnBC,EAAO,GACFnD,EAAI,EAAGA,EAAIgD,EAAMpD,OAAQI,IAE1BgD,EAAMhD,IACFA,EAAI,GAAKgD,EAAMhD,EAAI,KACnBmD,GAAQ,QAEZD,GAAmB,EACnBC,GAAQlB,EAAKmB,aAAaJ,EAAMhD,MAEhCkD,GAAmB,EAEnBC,GAAQ,QAUhB,OANKD,IAEDC,GAAQ,QAGC,IAAIE,OAAO,OAASF,EAAM,UAK3CxD,IAAA,6BAAAA,IAAA,6BAAAA,IAAA,+BAAAA,IAAA,kCAAAA,IAAA,kCAAAA,IAAA,yBAAAA,IAAA,yBAAAA,IAAA,yBAAAA,IAAA,0BAAAA,IAAA,0BAAAA,IAAA,4BAAAA,IAAA,yBAAAA,IAAA,8BAAAA,IAAA,sBAAAA,IAAA,8BAAAA,IAAA,6BAAAA,IAAA,0BAAAA,IAAA,4BAAAA,IAAA,uBAAAA,IAAA,oBAAAA,IAAA,kBAuB0Ca,GAAG8C,YAAW,IAAM3D,IAAA,gCAAAA,IAAA,uBAAAA,IAAA,kCAAAA,IAAA,gBAIvBa,GAAG8C,WAAW,KAAG3D,IAAA,yBAAAA,IAAA,4BAAAA,IAAA,4BAAAA,IAAA,wBAAAA,IAAA,wBAAAA,IAAA,8BAWpD,IAAI4D,EAAOnD,KAWX,GATAmD,EAAKC,SAAWxB,EAAcpB,kBAAoB,QAAU6C,KAAKC,MAAsB,IAAhBD,KAAKE,UAC5EJ,EAAK7C,UAAYsB,EAActB,YAAa,EAC5C6C,EAAKK,eAAiB5B,EAAc4B,iBAAkB,EACtDL,EAAKM,cAAgB7B,EAAc6B,gBAAiB,EACpDN,EAAKO,WAAa9B,EAAc8B,YAAc,KAC9CP,EAAKQ,aAAe/B,EAAc+B,cAAgBvD,GAAG8C,WAAW,MAChEC,EAAKS,eAAiBT,EAAKQ,gBAAkB,KAC7CR,EAAKU,QAAUjC,EAAczB,KAEzBgD,EAAK7C,UAAW,KAsBPwD,EAAT,SAAuBjE,GAmBnB,GAlBKsD,EAAKK,gBAENL,EAAK5C,eAAewD,SAAQ,SAAUC,GAGlC,IAAK,IAAIpE,EAAI,EAAGA,EAAIqE,EAAgBzE,OAAQI,IACxC,GAAIqE,EAAgBrE,KAAOC,EAAK,OAGhCmE,GACInE,EAAImE,IAAWb,EAAKxC,UAChBd,EAAImE,GAAQE,WAAWC,cAAcC,SAASjB,EAAKxC,SAASuD,WAAWC,gBACvEF,EAAgBjC,KAAKnC,MAMrCsD,EAAKK,eAAgB,CAKrB,IAAIa,EAAWlB,EAAKmB,YAAYzE,EAAKsD,EAAK5C,gBACtCgE,EAAkBzE,OAAO0E,KAAKH,GAAUjC,KAAI,SAAUqC,GACtD,OAAOJ,EAASI,MACjBT,QAAO,SAAUU,GAAK,OAAOA,KAEN,OAApBH,GA/Cd,SAA2BI,GAEvB,IAAIC,EAAiBD,EAAQE,KAAK,KAE9BC,GAAU,EAEd,GAAK3B,EAAKxC,SASV,OANgBwC,EAAK4B,8BAA8B5B,EAAKxC,UAAUqE,KAAKJ,KAGnEE,GAAU,GAGPA,EAiCIG,CAAkBV,IAClBN,EAAgBjC,KAAKnC,KAnDhCoE,EAAkB,GAwDtBd,EAAKxC,OAASP,GAAG8C,WAAW,IAAIgC,OAAO,CAAEC,UAAW,CAAEC,QAAS,IAAKC,OAAQ,2BAE5ElC,EAAKxC,OAAO2E,WAAU,SAAUC,GACxBA,GACApC,EAAKqC,iBAAiB,MAI9BrC,EAAK5C,eAAiBqB,EAAcrB,eAEpC4C,EAAKhD,KAAOC,GAAGqF,aAAa,CAExBC,KAAM,WAEF,GAAKvC,EAAKU,UAAV,CAEA,IAAI8B,EAAgBxC,EAAKU,UAAU+B,QAyBnC,GAAIzC,EAAKM,cAAe,CAMpB,GALIN,EAAKQ,iBAAmBR,EAAKS,iBAC7BT,EAAKqC,iBAAiB,GACtBrC,EAAKS,eAAiBT,EAAKQ,gBAG3BR,EAAKQ,eAAgB,CACjBR,EAAKQ,gBAAkBR,EAAKS,iBAC5BT,EAAKqC,mBACLrC,EAAKS,eAAiBT,EAAKQ,gBAG/B,IAAIkC,EAAW,GAQf,OAPIF,EAAcnG,OAAS,GACvBmG,EAAc5B,SAAQ,SAAUlE,EAAKiG,GAC7BjG,EAAIsD,EAAKO,YAAYQ,aAAef,EAAKQ,eAAeO,YACxD2B,EAAS7D,KAAKnC,MAInBkG,EAAUF,GAGrB,OAAOE,EAAU5C,EAAKU,WAItB,OADAV,EAAKqC,iBAAiB,GACfO,EAAU5C,EAAKU,WAlD1B,SAASkC,EAAUC,GAEf,GADA/B,EAAkB,GACI,KAAlBd,EAAKxC,SAGL,OAFAwC,EAAKxC,OAAO,MACZwC,EAAKqC,iBAAiB,GACfQ,EAGX,GAAIA,EAAO,CAEP,GAAsB,KAAlB7C,EAAKxC,UAAqC,OAAlBwC,EAAKxC,SAC7B,OAAOqF,EAEXA,EAAMhC,QAAO,SAAUnE,GAEfsD,EAAK5C,eAAef,OAAS,GAC7BsE,EAAcjE,MAI1B,OAAOoE,IAmCfgC,MAAO,SAAUC,GACb/C,EAAKU,QAAQqC,IAEjBC,MAAOhD,SAIXA,EAAKhD,KAAOC,GAAGqF,aAAa,CACxBC,KAAM,WACF,OAAOvC,EAAKU,WAEhBoC,MAAO,SAAUC,GACb/C,EAAKU,QAAQqC,IAEjBC,MAAOhD,IAIfA,EAAKqC,iBAAmBpF,GAAG8C,WAAW,GAClCtB,EAAcnB,SACd0C,EAAK1C,SAAS2F,SAASxE,EAAcnB,SAASyD,aAE9Cf,EAAK1C,SAAS,GAKlB0C,EAAKrB,QAAU1B,GAAGqF,cACd,WACI,YAAoC,IAAzB7D,EAAcE,QACdqB,EAAKkD,yBAAyBjG,GAAGkG,OAAOnD,EAAKU,UAI7CjC,EAAcE,WAKjCqB,EAAKoD,mBAAqBnG,GAAGoG,UAAS,WAClC,IAAIC,EAAaL,SAASjD,EAAK1C,WAAWyD,YAAcf,EAAKqC,mBACzDkB,EAAWD,EAAaL,SAASjD,EAAK1C,WAAWyD,YAErD,OADa9D,GAAGkG,OAAOnD,EAAKhD,QAAQyF,MAAMa,EAAYC,KAGvDvD,GAEHA,EAAKwD,UAAYvG,GAAGqF,aAAa,CAC7BC,KAAM,WACF,OAAOvC,EAAKqC,mBAAqB,GAGrCS,MAAO,SAAUC,GACb,IAAIU,EAAOV,EAAQ,EAEfA,EAAQ,GACR/C,EAAKqC,iBAAiBoB,IAG9BT,MAAOhD,IAGXA,EAAK0D,aAAezG,GAAGoG,UAAS,WAC5B,OAAOnD,KAAKyD,KAAK1G,GAAGkG,OAAOnD,EAAKhD,QAAQX,OAAS2D,EAAK1C,YAAc,IACrE0C,GAEHA,EAAK4D,aAAe,WACZ5D,EAAKqC,mBAAqB,GAC1BrC,EAAKqC,iBAAiBrC,EAAKqC,mBAAqB,IAIxDrC,EAAK6D,SAAW,WACR7D,EAAKqC,mBAAqBrC,EAAK0D,gBAC/B1D,EAAKqC,iBAAiBrC,EAAKqC,mBAAqB,IAMxDpF,GAAG6G,gBAAgBC,WAAa,CAC5BC,KAAM,WACF,MAAO,CAAE,4BAA8B,IAG3CC,OAAQ,SAAUC,EAASC,EAAmBC,GAkC1C,IA/BA,IAAIC,EAAiB,IAAIpH,GAAGqH,qBA4BxBC,EAAYJ,IAGTD,EAAQM,YACXvH,GAAGwH,WAAWP,EAAQM,YAG1B,IAAIE,EAAmBN,EAAYO,IAAI,uBAAyB,qBAC5DC,EAAwBR,EAAYO,IAAI,4BAA8B,0BAGtEE,EAAgBX,EAAQY,YAAYvG,SAASwG,cAAc,QAC/D9H,GAAG+H,eAAeN,EAAkBH,EAAW,CAAEF,eAAgBA,GAAkBQ,EAAe,eAGlG,IAAII,EAAiD,QAA3BxG,EAAclB,SACpC2G,EAAQgB,aAAa3G,SAASwG,cAAc,OAAQb,EAAQM,YAC5DN,EAAQY,YAAYvG,SAASwG,cAAc,QAE/C9H,GAAG+H,eAAeJ,EAAuBL,EAAW,CAAEF,eAAgBA,GAAkBY,EAAoB,iBAKpHhI,GAAG6G,gBAAgBqB,UAAY,CAC3BlB,OAAQ,SAAUC,EAASkB,EAAehB,EAAaG,EAAWc,GAC9D,IAAIC,EAAUF,IACVrC,EAAQ9F,GAAGsI,MAAMC,iBAAiBF,EAAQG,MAC1CC,EAAUzI,GAAGsI,MAAMC,iBAAiBH,EAAsB,MAAE7H,UAC5DmI,EAAS3F,EAAKK,eAAmEL,EAAK4B,8BAA8B8D,GAArF,IAAI5F,OAAO,SAAW4F,EAAU,SAAU,MACzEE,EAAM3I,GAAGsI,MAAMC,iBAAiBF,EAAQM,KAGxCN,EAAQO,WACR9C,EAAQxG,EAAE,UAAUkJ,KAAK1C,GAAO+C,QAG/BJ,GAAY3C,IAGjBmB,EAAQ6B,UAAYhD,EAAMhC,WAAWxB,QAAQoG,EAAO,gBAAkBC,EAAM,kBAMpF3I,GAAG6G,gBAAgBkC,KAAO,CACtBhC,KAAM,SAAUE,EAASkB,EAAea,EAAqB1B,EAAWc,GACpE,IAAIa,GAAM,EACVhC,EAAQiC,MAAMC,OAAS,UAEvBlC,EAAQmC,QAAU,WACd,IAAItD,EAAQqC,IACRkB,EAAOvD,EAAMuD,KAEbzI,EAAOZ,GAAGkG,OAAOJ,EAAMwD,KAE3BL,GAAOA,EAEPrI,EAAKmI,MAAK,SAAUQ,EAAMC,GACtB,IAAIC,EAAOF,EACPG,EAAOF,EAENP,IACDQ,EAAOD,EACPE,EAAOH,GAGX,IAAII,EAAQN,EAAK5G,MAAM,KACvB,IAAK,IAAIjD,KAAKmK,EAAO,CACjB,IAAIC,EAAWD,EAAMnK,GACjBqK,EAAaD,EAASE,QAAQ,MAC9BD,EAAa,GAEbJ,EAAOA,EADPG,EAAWA,EAASG,UAAU,EAAGF,MAEjCH,EAAOA,EAAKE,OAEZH,EAAOA,EAAKG,GACZF,EAAOA,EAAKE,IAIpB,OAAOH,IAASC,EAAO,EAAID,EAAOC,GAAQ,EAAI,KAIlD5D,EAAMwD,IAAI1I,MAMtBtB,GAAE,WACEA,EAAEgC,UAAU0I,cAAa,WAAQjH,EAAKkH,YAAW","file":"chunk-20-drug-shortages.e5939ef9258afcfb496d.js","sourcesContent":["import { GridView } from \"../../Components/GridView\";\r\nimport { ParseDate } from \"../../Helpers/ParseDate\";\r\n\r\nexport class DrugShortages {\r\n public Grid: GridView;\r\n\r\n constructor(DataSource?: Array) {\r\n\r\n let self = this;\r\n\r\n if (DataSource.length > 0) {\r\n ParseDate(DataSource, DataSource, [\"LongTermBOOrgDate\", \"LongTermBOUpdateDate\"]);\r\n $.each(DataSource, function (i, row) {\r\n delete Object.assign(row, { ['ItemNo']: row['ItemID'] })['ItemID'];\r\n delete Object.assign(row, { ['NDCNo']: row['NDCCompleteNo'] })['NDCCompleteNo'];\r\n delete Object.assign(row, { ['Note']: row['LongTermBOComment'] })['LongTermBOComment'];\r\n delete Object.assign(row, { ['OriginationDate']: row['LongTermBOOrgDate'] })['LongTermBOOrgDate'];\r\n delete Object.assign(row, { ['LastUpdated']: row['LongTermBOUpdateDate'] })['LongTermBOUpdateDate'];\r\n });\r\n }\r\n\r\n self.Grid = new GridView({\r\n Data: ko.observableArray(DataSource),\r\n UseFilter: true,\r\n FilterCriteria: [\r\n \"ItemNo\",\r\n \"NDCNo\",\r\n \"Description\",\r\n \"Note\",\r\n \"OriginationDate\",\r\n \"LastUpdated\"\r\n ],\r\n GridTemplateName: \"drugShortagesList\",\r\n PageSize: 30,\r\n PagerPos: \"top\"\r\n });\r\n\r\n self.Grid.Filter(\"\");\r\n\r\n self.Grid.ClickFnOne = function () {\r\n\r\n $.ajax({\r\n cache: false,\r\n url: '/Info/DownloadDrugShortageList',\r\n data: \"\",\r\n success: function (data) {\r\n\r\n window.location.href = '/Download/GetExcel?fileGuid='\r\n + data.FileGuid\r\n + '&filename=' + data.FileName;\r\n }\r\n })\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\nconst Model = (window).Model;\r\nconst vm = new DrugShortages(Model);\r\n(window).vm = vm;\r\n\r\n$(function () {\r\n ko.applyBindings(vm, document.getElementById('drug-shortage-list'));\r\n})","import { IGridConfig } from \"./GridView.config\";\r\n\r\nexport { IGridConfig } from \"./GridView.config\";\r\n\r\nexport class GridView {\r\n private GetColumnsForScaffolding = (data) => {\r\n if (typeof data.length !== 'number' || data.length === 0) {\r\n return [];\r\n }\r\n var Columns = [];\r\n for (var propertyName in data[0]) {\r\n Columns.push({ headerText: propertyName, rowText: propertyName });\r\n }\r\n return Columns;\r\n }\r\n\r\n private pickColumns = (row, columns) => {\r\n\r\n if (!row || !columns)\r\n return;\r\n\r\n return columns.map(k => k in row ? { [k]: row[k] } : {})\r\n .reduce((res, o) => Object.assign(res, o), {});\r\n }\r\n\r\n private escapeRegExp = (str) => {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n }\r\n\r\n\r\n private convertWildcardStringToRegExp = (expression) => {\r\n\r\n if (!expression)\r\n return;\r\n\r\n var terms = expression.split('*');\r\n\r\n var trailingWildcard = false;\r\n\r\n var expr = '';\r\n for (var i = 0; i < terms.length; i++) {\r\n\r\n if (terms[i]) {\r\n if (i > 0 && terms[i - 1]) {\r\n expr += '\\\\S*';\r\n }\r\n trailingWildcard = false;\r\n expr += this.escapeRegExp(terms[i]);\r\n } else {\r\n trailingWildcard = true;\r\n //end of expression\r\n expr += '\\\\S*';\r\n }\r\n }\r\n\r\n if (!trailingWildcard) {\r\n //end of expression\r\n expr += '\\\\S*';\r\n }\r\n\r\n let result = new RegExp('\\\\S*' + expr, 'ig');\r\n return result;\r\n }\r\n \r\n // Spare Multipurpose Observables and Functions\r\n // TODO: Move away from these functions as we can now scope and attach to the running VM without this workaround\r\n ObservableOne: KnockoutObservable;\r\n ObservableTwo: KnockoutObservable;\r\n ObservableThree: KnockoutObservable;\r\n ObservableArrayOne: KnockoutObservableArray;\r\n ObservableArrayTwo: KnockoutObservableArray;\r\n Computed0: KnockoutComputed;\r\n Computed1: KnockoutComputed;\r\n Computed2: KnockoutComputed;\r\n ClickFnOne: (param: any | any[]) => void;\r\n ClickFnTwo: (params: any | any[]) => void;\r\n ClickFnThree: (params: any | any[]) => void;\r\n\r\n UseFilter: boolean;\r\n WildCardFilter: boolean;\r\n Filter: KnockoutObservable;\r\n FilterCriteria: Array;\r\n SectionFilter: boolean;\r\n SectionKey: string;\r\n SectionValue: KnockoutObservable;\r\n\r\n RawData: KnockoutObservableArray;\r\n Data: KnockoutComputed;\r\n DataLoaded: KnockoutObservable = ko.observable(false);\r\n CurrentPageIndex: KnockoutObservable;\r\n Columns: KnockoutComputed;\r\n ItemsOnCurrentPage: KnockoutComputed; \r\n PageSize: KnockoutObservable = ko.observable(30);\r\n\r\n PageIndex: KnockoutComputed;\r\n MaxPageIndex: KnockoutComputed;\r\n PreviousPage;\r\n NextPage;\r\n\r\n GridName: string;\r\n LastSectionVal: string;\r\n\r\n constructor(configuration: IGridConfig) {\r\n var self = this;\r\n\r\n self.GridName = configuration.GridTemplateName || \"Grid-\" + Math.floor(Math.random() * 100);\r\n self.UseFilter = configuration.UseFilter || false;\r\n self.WildCardFilter = configuration.WildCardFilter || false;\r\n self.SectionFilter = configuration.SectionFilter || false;\r\n self.SectionKey = configuration.SectionKey || null;\r\n self.SectionValue = configuration.SectionValue || ko.observable(null);\r\n self.LastSectionVal = self.SectionValue() || null;\r\n self.RawData = configuration.Data;\r\n \r\n if (self.UseFilter) {\r\n\r\n let filteredResults = [];\r\n\r\n function regexMatchRowJSON(rowJSON) {\r\n\r\n let stringToSearch = rowJSON.join(' ');\r\n\r\n let results = false;\r\n\r\n if (!self.Filter())\r\n return;\r\n\r\n let testValue = self.convertWildcardStringToRegExp(self.Filter()).test(stringToSearch);\r\n\r\n if (testValue) {\r\n results = true;\r\n }\r\n\r\n return results;\r\n }\r\n\r\n function filterRowData(row) {\r\n if (!self.WildCardFilter) {\r\n\r\n self.FilterCriteria.forEach(function (filter) {\r\n\r\n // Check if the row is already in the array, if yes then skip this iteration\r\n for (var i = 0; i < filteredResults.length; i++) {\r\n if (filteredResults[i] === row) return;\r\n }\r\n\r\n if (filter) {\r\n if (row[filter] && self.Filter())\r\n if (row[filter].toString().toLowerCase().includes(self.Filter().toString().toLowerCase()))\r\n filteredResults.push(row);\r\n }\r\n });\r\n\r\n }\r\n\r\n if (self.WildCardFilter) {\r\n\r\n //let pickedRowValuesOld = Object['values'](pickColumns(row, self.FilterCriteria))\r\n // .filter(function (e) { return e });\r\n\r\n let criteria = self.pickColumns(row, self.FilterCriteria);\r\n let pickedRowValues = Object.keys(criteria).map(function (key) {\r\n return criteria[key]\r\n }).filter(function (e) { return e; });\r\n\r\n void (pickedRowValues !== null\r\n && regexMatchRowJSON(pickedRowValues)\r\n && filteredResults.push(row));\r\n }\r\n\r\n }\r\n\r\n self.Filter = ko.observable(\"\").extend({ rateLimit: { timeout: 500, method: \"notifyWhenChangesStop\" } });\r\n\r\n self.Filter.subscribe(function (change) {\r\n if (change) {\r\n self.CurrentPageIndex(0);\r\n }\r\n })\r\n\r\n self.FilterCriteria = configuration.FilterCriteria;\r\n\r\n self.Data = ko.pureComputed({\r\n\r\n read: function () {\r\n\r\n if (!self.RawData())\r\n return;\r\n let originalArray = self.RawData().slice();\r\n\r\n function runFilter(array) {\r\n filteredResults = [];\r\n if (self.Filter() === \"\") {\r\n self.Filter(null);\r\n self.CurrentPageIndex(0);\r\n return array;\r\n }\r\n\r\n if (array) {\r\n // Pass raw data if no filter value\r\n if (self.Filter() === \"\" || self.Filter() === null)\r\n return array;\r\n\r\n array.filter(function (row) {\r\n\r\n if (self.FilterCriteria.length > 0)\r\n filterRowData(row);\r\n\r\n });\r\n }\r\n return filteredResults;\r\n }\r\n\r\n if (self.SectionFilter) {\r\n if (self.SectionValue() !== self.LastSectionVal) {\r\n self.CurrentPageIndex(0);\r\n self.LastSectionVal = self.SectionValue();\r\n }\r\n\r\n if (self.SectionValue()) {\r\n if (self.SectionValue() == self.LastSectionVal) {\r\n self.CurrentPageIndex();\r\n self.LastSectionVal = self.SectionValue();\r\n }\r\n\r\n let newArray = []\r\n if (originalArray.length > 0) {\r\n originalArray.forEach(function (row, index) {\r\n if (row[self.SectionKey].toString() === self.SectionValue().toString()) {\r\n newArray.push(row);\r\n }\r\n })\r\n }\r\n return runFilter(newArray);\r\n\r\n }\r\n return runFilter(self.RawData());\r\n\r\n } else {\r\n self.CurrentPageIndex(0);\r\n return runFilter(self.RawData());\r\n }\r\n },\r\n\r\n // For sorting to feed the data back to the source object\r\n write: function (value) {\r\n self.RawData(value);\r\n },\r\n owner: self\r\n });\r\n }\r\n else {\r\n self.Data = ko.pureComputed({\r\n read: function () {\r\n return self.RawData();\r\n },\r\n write: function (value) {\r\n self.RawData(value);\r\n },\r\n owner: self\r\n });\r\n }\r\n \r\n self.CurrentPageIndex = ko.observable(0);\r\n if (configuration.PageSize)\r\n self.PageSize(parseInt(configuration.PageSize.toString()));\r\n else {\r\n self.PageSize(5);\r\n }\r\n\r\n\r\n // If you don't specify columns configuration, we'll use scaffolding\r\n self.Columns = ko.pureComputed(\r\n function () {\r\n if (typeof configuration.Columns == 'undefined') {\r\n return self.GetColumnsForScaffolding(ko.unwrap(self.RawData));\r\n\r\n }\r\n else {\r\n return configuration.Columns;\r\n }\r\n }\r\n );\r\n \r\n self.ItemsOnCurrentPage = ko.computed(function () { \r\n let startIndex = parseInt(self.PageSize().toString()) * self.CurrentPageIndex();\r\n let endIndex = startIndex + parseInt(self.PageSize().toString());\r\n let result = ko.unwrap(self.Data()).slice(startIndex, endIndex);\r\n return result;\r\n\r\n }, self);\r\n\r\n self.PageIndex = ko.pureComputed({\r\n read: function () {\r\n return self.CurrentPageIndex() + 1\r\n },\r\n\r\n write: function (value: number) {\r\n let page = value - 1;\r\n\r\n if (value > 0)\r\n self.CurrentPageIndex(page);\r\n },\r\n\r\n owner: self\r\n });\r\n\r\n self.MaxPageIndex = ko.computed(function () {\r\n return Math.ceil(ko.unwrap(self.Data()).length / self.PageSize()) - 1;\r\n }, self);\r\n\r\n self.PreviousPage = function () {\r\n if (self.CurrentPageIndex() > 0) {\r\n self.CurrentPageIndex(self.CurrentPageIndex() - 1);\r\n }\r\n };\r\n\r\n self.NextPage = function () {\r\n if (self.CurrentPageIndex() < self.MaxPageIndex()) {\r\n self.CurrentPageIndex(self.CurrentPageIndex() + 1);\r\n }\r\n };\r\n\r\n\r\n // The \"simpleGrid\" binding\r\n ko.bindingHandlers.simpleGrid = {\r\n init: function () {\r\n return { 'controlsDescendantBindings': true };\r\n },\r\n // This method is called to initialize the node, and will also be called again if you change what the grid is bound to\r\n update: function (element, viewModelAccessor, allBindings) {\r\n\r\n // Templates used to render the grid\r\n var templateEngine = new ko.nativeTemplateEngine();\r\n\r\n var addTemplate = function (templateName, templateMarkup) {\r\n document.write(\"