{"version":3,"sources":["webpack:////Users/xingli/Documents/projects/projects/ara-fe/src/views/blocks/articleListingBlock/js/articleListingBlock.js","webpack:///./pagination.js"],"names":["getTemplate","__webpack_require__","_spinnerContainerWidgetService","_alertService","_pagination","Api","_utils","CLS","ArticleListingBlock","element","_classCallCheck","this","$element","$","$pagination","find","$content","$list","$result","$search","$searchInput","$select","$error","$footer","$filter","getApi","data","pageSize","collapse","articleTileTemplate","spinnerContainerWidgetService","alertService","params","keyword","pageNumber","firstLoadRequest","filters","parsedQuery","utils","queryStringParsed","location","search","keys","Object","i","length","initFilterCollapse","getItems","handlePagination","handleKeyword","_this","on","getCurrentFilters","_this2","_","debounce","event","currentTarget","val","trim","key","isEmpty","$labels","$label","groupkey","bool","hasClass","undefined","includes","push","_this3","e","toggleClass","addClass","removeClass","_this4","url","html","create","callApi","then","successful","getPrimaryMarkup","destroy","items","results","facets","tmpl","filterTmpl","articleTileBlock","filterTemplate","forEach","filter","handleFilter","item","description","txt","document","createElement","innerHTML","value","setResultText","totalCount","paginationjs","catch","error","start","end","itemsPerPage","arguments","itemsCount","paginationGroup","self","pages","Math","ceil","Number","pagination","dataSource","done","res","prevText","nextText","hideWhenLessThanOnePage","triggerPagingOnInit","ulClassName","callback","trigger"],"mappings":"0hBAGYA,0BAAZC,EAAA,MACAC,EAAAD,EAAA,KACAE,EAAAF,EAAA,KACAG,EAAAH,EAAA,KACYI,0BAAZJ,EAAA,MACAK,EAAAL,EAAA,oLARA,IACMM,EAAM,8BASCC,+BACZ,SAAAA,oBAAYC,gHAASC,CAAAC,KAAAH,qBACpBG,KAAKF,QAAUA,EACfE,KAAKC,SAAWC,EAAEJ,GAClBE,KAAKG,YAAcH,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,eACnBI,KAAKK,SAAWL,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,YAChBI,KAAKM,MAAQN,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,SACbI,KAAKO,QAAUP,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,WACfI,KAAKQ,QAAUR,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,WACfI,KAAKS,aAAeT,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,iBACpBI,KAAKU,QAAUV,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,WACfI,KAAKW,OAASX,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,UACdI,KAAKY,QAAUZ,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,WACfI,KAAKa,QAAUb,KAAKC,SAASG,KAAd,IAAuBR,EAAvB,eAEfI,KAAKc,OAASd,KAAKC,SAASc,KAAK,OACjCf,KAAKgB,SAAWhB,KAAKC,SAASc,KAAK,aAAe,EAClDf,KAAKiB,SAAWjB,KAAKC,SAASc,KAAK,YAGnCf,KAAKkB,oBAAsB,KAC3BlB,KAAKmB,8BAAgCA,gCACrCnB,KAAKoB,aAAeA,eAEpBpB,KAAKqB,QACJC,QAAU,GACVC,WAAc,EACdP,SAAYhB,KAAKgB,SACjBQ,kBAAoB,EACpBC,YAMD,IAAIC,EAAcC,QAAMC,kBAAkBC,SAASC,QAC/CC,EAAOC,OAAOD,KAAKL,GAIpBA,EAAYJ,SAAmC,KAAxBI,EAAYJ,UACrCtB,KAAKqB,OAAL,QAAyBK,EAAYJ,SAGtC,IAAI,IAAIW,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAC/BjC,KAAKqB,OAAOU,EAAKE,IAAMP,EAAYK,EAAKE,IAOzCjC,KAAKmC,qBACLnC,KAAKoC,WACLpC,KAAKqC,mBACLrC,KAAKsC,wGAKa,IAAAC,EAAAvC,KAClBA,KAAKC,SAASuC,GAAG,qBAAsB,WACtCD,EAAKE,oBACLF,EAAKH,mEAaS,IAAAM,EAAA1C,KAEfA,KAAKS,aAAa+B,GAAG,QAASG,EAAEC,SAAS,SAACC,GACzC,IAAIvB,EAAUpB,EAAE2C,EAAMC,eAAeC,MAAMC,OAE1B,UAAdH,EAAMI,MAKNN,EAAEO,QAAQ5B,GAEZoB,EAAKrB,OAAL,QAAyB,GAGzBqB,EAAKrB,OAAL,QAAyBnB,EAAE2C,EAAMC,eAAeC,MAAMC,OAEvDN,EAAKrB,OAAOE,WAAa,EACzBmB,EAAKrB,OAAOI,WACZiB,EAAKN,aACH,oEAiBH,IAAIe,EAAUjD,EAAEF,KAAKa,QAAQT,KAAK,eAClCJ,KAAKqB,OAAOI,WAEZ,IAAK,IAAIQ,EAAI,EAAGA,EAAIkB,EAAQjB,OAAQD,IAAK,CACxC,IAAImB,EAASlD,EAAEiD,EAAQlB,IACnBoB,EAAWD,EAAOrC,KAAK,YACvBkC,EAAMG,EAAOrC,KAAK,OAClBuC,EAAOF,EAAOG,SAAS,QAEvBvD,KAAKqB,OAAOI,QAAQ4B,SAA+CG,IAAlCxD,KAAKqB,OAAOI,QAAQ4B,GAKrDC,IACEtD,KAAKqB,OAAOI,QAAQ4B,GAAUI,SAASR,IAC1CjD,KAAKqB,OAAOI,QAAQ4B,GAAUK,KAAKT,IANlCK,IACFtD,KAAKqB,OAAOI,QAAQ4B,IAAaJ,yDAYtB,IAAAU,EAAA3D,KACdA,KAAKa,QAAQT,KAAb,QAA0BoC,GAAG,QAAS,SAACoB,GACtC1D,EAAE0D,EAAEd,eAAee,YAAY,cAE/BF,EAAKlB,oBAELkB,EAAKtC,OAAOE,WAAa,EACzBoC,EAAKvB,8EAKe,IAAlBpC,KAAKiB,SACPf,EAAE,mCAAmC4D,SAAS,QAE9C5D,EAAE,mCAAmC6D,YAAY,oDAIxC,IAAAC,EAAAhE,KACNiE,EAAMjE,KAAKc,OACXmD,IAKJjE,KAAKW,OAAOuD,KAAK,IACjBlE,KAAKmB,8BAA8BgD,OAAOnE,KAAKK,UAE/CX,EAAI0E,QAAQH,EAAKjE,KAAKqB,QAAQgD,KAAK,SAACtD,GAMnC,GAJAiD,EAAK3C,OAAOG,kBAAmB,EAIT,GAAnBT,EAAKuD,WAKP,OAJAN,EAAK1D,MAAM4D,KAAKF,EAAK5C,aAAamD,iBAAlB,qCAChBP,EAAKpD,QAAQmD,YAAY,cACzBC,EAAKzD,QAAQ2D,KAAK,WAClBF,EAAK7C,8BAA8BqD,UAIpC,GAAGzD,EAAKA,KAAM,CACb,IAAI0D,EAAQ1D,EAAKA,KAAK2D,QAClBjD,EAAUV,EAAKA,KAAK4D,OAExB,GAAoB,IAAjBF,EAAMvC,OAKR,OAJA8B,EAAK1D,MAAM4D,KAAKF,EAAK5C,aAAamD,iBAAlB,8BAChBP,EAAKpD,QAAQmD,YAAY,cACzBC,EAAKzD,QAAQ2D,KAAK,WAClBF,EAAK7C,8BAA8BqD,UAIpC,IAAII,EAAO,GACPC,EAAa,GAEbb,EAAK9C,sBACR8C,EAAK9C,oBAAsB7B,EAAYyF,oBAGpCd,EAAKe,iBACRf,EAAKe,eAAiB1F,EAAY0F,kBAGnCpC,EAAEqC,QAAQvD,EAAS,SAACwD,GAEnBJ,oBACGb,EAAKe,eAAeE,GADvB,iBAIDjB,EAAKnD,QAAQqD,KAAb,GAAqBW,GACrBb,EAAKkB,eAGLvC,EAAEqC,QAAQP,EAAO,SAACU,GAEjB,GAAGA,EAAKC,aAAoC,KAArBD,EAAKC,YAAoB,CAC/C,IAAIC,EAAMC,SAASC,cAAc,YACjCF,EAAIG,UAAYL,EAAKC,YACrBD,EAAKC,YAAcC,EAAII,MAIxBb,8BACchF,EADd,iDAEGoE,EAAK9C,oBAAoBiE,GAF5B,mCAMDnB,EAAK1D,MAAM4D,KAAX,oBAAoCU,EAApC,UAEAZ,EAAKpD,QAAQkD,SAAS,cAGtBE,EAAK0B,cAAc3E,EAAKA,KAAKQ,WAAYR,EAAKA,KAAK4E,aAGnD,EAAAlG,EAAAmG,cAAa5B,EAAKhD,SAAUD,EAAKA,KAAK4E,WAAY3B,EAAK7D,YAAa6D,GACpEA,EAAK7C,8BAA8BqD,aAElCqB,MAAM,SAACC,2DA4EGvE,EAAYoE,GACzB,IAAII,GAASxE,EAAa,GAAKvB,KAAKgB,UAAY,EAC5CgF,EAAMhG,KAAKgB,SAAW2E,EAAaA,EAAapE,EAAavB,KAAKgB,SAGtEhB,KAAKO,QAAQ2D,KAAb,WAA6B6B,EAA7B,IAAsCC,EAAtC,OAAgDL,EAAhD,qQCzUFrG,EAAA,MAEasG,qBAAe,SAAfA,eAA6E,IAA7DK,EAA6DC,UAAAhE,OAAA,QAAAsB,IAAA0C,UAAA,GAAAA,UAAA,GAA9C,GAAIC,EAA0CD,UAAAhE,OAAA,QAAAsB,IAAA0C,UAAA,GAAAA,UAAA,GAA7B,EAAGE,EAA0BF,UAAA,GAATG,EAASH,UAAA,GACrFI,EAAQC,KAAKC,KAAKC,OAAON,GAAcM,OAAOR,IAClDG,EAAgBM,YACfC,WAAY,SAAAA,WAACC,GAEZ,IADA,IAAIC,KACI5E,EAAI,EAAGA,GAAKqE,EAAOrE,IAC1B4E,EAAInD,KAAKzB,GAEV2E,EAAKC,IAEN7F,SAAU,EACVO,WAAa8E,EAAKhF,OAAOE,YAAc8E,EAAKhF,OAAOE,YAAc+E,EAASD,EAAKhF,OAAOE,WAAa,EACnGuF,SAAU,wCACVC,SAAU,yCACVC,yBAAyB,EACzBC,qBAAqB,EACrBC,YAAa,aACbC,SAAU,SAAAA,SAACpG,EAAM2F,GAChBL,EAAKhF,OAAOE,WAAamF,EAAWnF,WACpC8E,EAAKpG,SAASmH,QAAQ","file":"block-0.317c86355b23b3978b5f.js","sourcesContent":["const NS = 'ArticleListingBlock';\nconst CLS = 'articleListingBlock';\n\nimport * as getTemplate from '../../../../global/js/template';\nimport { spinnerContainerWidgetService } from '../../../../global/js/ara/spinnerContainerWidgetService';\nimport { alertService } from '../../../../global/js/ara/alertService';\nimport { paginationjs } from '../../../../global/js/pagination';\nimport * as Api from '../../../../global/js/api';\nimport {utils} from '../../../../global/js/utils';\n\nexport class ArticleListingBlock {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\tthis.$pagination = this.$element.find(`.${CLS}-pagination`);\n\t\tthis.$content = this.$element.find(`.${CLS}-content`);\n\t\tthis.$list = this.$element.find(`.${CLS}-list`);\n\t\tthis.$result = this.$element.find(`.${CLS}-result`);\n\t\tthis.$search = this.$element.find(`.${CLS}-search`);\n\t\tthis.$searchInput = this.$element.find(`.${CLS}-search-input`);\n\t\tthis.$select = this.$element.find(`.${CLS}-select`);\n\t\tthis.$error = this.$element.find(`.${CLS}-error`);\n\t\tthis.$footer = this.$element.find(`.${CLS}-footer`);\n\t\tthis.$filter = this.$element.find(`.${CLS}-filterWrap`);\n\n\t\tthis.getApi = this.$element.data('api');\n\t\tthis.pageSize = this.$element.data('pageSize') || 9;\n\t\tthis.collapse = this.$element.data('collapse');\n\t\t// this.firstLoadRequest = true;\n\n\t\tthis.articleTileTemplate = null;\n\t\tthis.spinnerContainerWidgetService = spinnerContainerWidgetService;\n\t\tthis.alertService = alertService;\n\n\t\tthis.params = {\n\t\t\t\"keyword\":\"\",\n\t\t\t\"pageNumber\": 1,\n\t\t\t\"pageSize\": this.pageSize,\n\t\t\t\"firstLoadRequest\": true,\n\t\t\t\"filters\":{\n\n\t\t\t}\n\t\t};\n\n\t\t// query string logic starts\n\t\tlet parsedQuery = utils.queryStringParsed(location.search);\n\t\tlet keys = Object.keys(parsedQuery);\n\n\t\tconsole.log(location.search, parsedQuery, keys);\n\n\t\tif(parsedQuery.keyword && parsedQuery.keyword !== '') {\n\t\t\tthis.params['keyword'] = parsedQuery.keyword;\n\t\t}\n\n\t\tfor(let i = 0; i < keys.length; i++) {\n\t\t\tthis.params[keys[i]] = parsedQuery[keys[i]]\n\t\t}\n\t\tconsole.log(this.params);\n\n\t\t// this.updateBrowseUrl();\n\t\t// query string logic ends\n\n\t\tthis.initFilterCollapse();\n\t\tthis.getItems();\n\t\tthis.handlePagination();\n\t\tthis.handleKeyword();\n\t\t// need bind event after render div\n\t\t// this.handleFilter();\n\t}\n\n\thandlePagination() {\n\t\tthis.$element.on('pagination.trigger', () => {\n\t\t\tthis.getCurrentFilters();\n\t\t\tthis.getItems();\n\t\t});\n\t}\n\n\t// updateBrowseUrl() {\n\t// \tlet href = this.$browse.attr('href');\n\t// \tconsole.log(href);\n\t// \tlet k = this.$searchInput.val().trim();\n\n\t// \t// this.$browse.attr('href', utils.updateUrlParameter(href, 'keyword', this.params['keyword']));\n\t// \tthis.$browse.attr('href', utils.updateUrlParameter(href, 'keyword', k));\n\t// }\n\n\thandleKeyword() {\n\t\t// KEYWORD LOGIC 'input'\n\t\tthis.$searchInput.on('keyup', _.debounce((event) => {\n\t\t\tlet keyword = $(event.currentTarget).val().trim();\n\n\t\t\tif(event.key === 'Enter') {\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(_.isEmpty(keyword)) {\n\t\t\t\t// delete this.params.keyword;\n\t\t\t\tthis.params['keyword'] = '';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.params['keyword'] = $(event.currentTarget).val().trim();\n\t\t\t}\n\t\t\tthis.params.pageNumber = 1;\n\t\t\tthis.params.filters = {};\n\t\t\tthis.getItems();\n\t\t}, 250));\n\t}\n\n\t// {\n\t// \"keyword\":\"test\",\n\t// \"pageNumber\":1,\n\t// \"pageSize\":10,\n\t// \"sort\":1,\n\t// \"filters\":{\n\t// \"searchPublishDate\":[\n\t// \"2018-01-01|2018-12-31\",\n\t// \"2019-07-01|2019-07-30\"\n\t// ]\n\t// }\n\t// }\n\n\tgetCurrentFilters() {\n\t\tlet $labels = $(this.$filter.find('span.badge'));\n\t\tthis.params.filters = {};\n\n\t\tfor (let i = 0; i < $labels.length; i++) {\n\t\t\tlet $label = $($labels[i]);\n\t\t\tlet groupkey = $label.data('groupkey');\n\t\t\tlet key = $label.data('key');\n\t\t\tlet bool = $label.hasClass('true');\n\n\t\t\tif(!this.params.filters[groupkey] || this.params.filters[groupkey] === undefined) {\n\t\t\t\tif(bool) {\n\t\t\t\t\tthis.params.filters[groupkey] = [key];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(bool) {\n\t\t\t\t\tif(!this.params.filters[groupkey].includes(key)) {\n\t\t\t\t\t\tthis.params.filters[groupkey].push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\thandleFilter() {\n\t\tthis.$filter.find(`span`).on('click', (e) => {\n\t\t\t$(e.currentTarget).toggleClass('true false')\n\n\t\t\tthis.getCurrentFilters();\n\t\t\tconsole.log(this.params.filters, typeof this.params.filters);\n\t\t\tthis.params.pageNumber = 1;\n\t\t\tthis.getItems();\n\t\t});\n\t}\n\n\tinitFilterCollapse() {\n\t\tif(this.collapse === false) {\n\t\t\t$('#articleListingBlock-filterWrap').addClass('show');\n\t\t} else {\n\t\t\t$('#articleListingBlock-filterWrap').removeClass('show');\n\t\t}\n\t}\n\n\tgetItems() {\n\t\tlet url = this.getApi;\n\t\tif(!url) {\n\t\t\tconsole.error(`${NS}::Error - getItems. Please provide api-url on 'data-api'.`);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$error.html('');\n\t\tthis.spinnerContainerWidgetService.create(this.$content);\n\n\t\tApi.callApi(url, this.params).then((data) => {\n\t\t\tconsole.log(data);\n\t\t\tthis.params.firstLoadRequest = false;\n\n\t\t\t// internal server error\n\t\t\t// {\"successful\":false,\"failureMessage\":\"Failed to perform search: Value cannot be null.\\r\\nParameter name: source\",\"data\":null}\n\t\t\tif(data.successful == false) {\n\t\t\t\tthis.$list.html(this.alertService.getPrimaryMarkup(`Sorry, Failed to perform search.`));\n\t\t\t\tthis.$footer.removeClass('hasResults');\n\t\t\t\tthis.$result.html(null);\n\t\t\t\tthis.spinnerContainerWidgetService.destroy();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(data.data) {\n\t\t\t\tlet items = data.data.results;\n\t\t\t\tlet filters = data.data.facets;\n\n\t\t\t\tif(items.length === 0) {\n\t\t\t\t\tthis.$list.html(this.alertService.getPrimaryMarkup(`Sorry, no articles found.`));\n\t\t\t\t\tthis.$footer.removeClass('hasResults');\n\t\t\t\t\tthis.$result.html(null);\n\t\t\t\t\tthis.spinnerContainerWidgetService.destroy();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet tmpl = '';\n\t\t\t\tlet filterTmpl = '';\n\n\t\t\t\tif(!this.articleTileTemplate) {\n\t\t\t\t\tthis.articleTileTemplate = getTemplate.articleTileBlock();\n\t\t\t\t}\n\n\t\t\t\tif(!this.filterTemplate) {\n\t\t\t\t\tthis.filterTemplate = getTemplate.filterTemplate();\n\t\t\t\t}\n\t\t\t\t// render the filter\n\t\t\t\t_.forEach(filters, (filter) => {\n\t\t\t\t\tconsole.log(filter);\n\t\t\t\t\tfilterTmpl += `\n\t\t\t\t\t\t${this.filterTemplate(filter)}\n\t\t\t\t\t`;\n\t\t\t\t});\n\t\t\t\tthis.$filter.html(`${filterTmpl}`);\n\t\t\t\tthis.handleFilter();\n\n\t\t\t\t// render article cell\n\t\t\t\t_.forEach(items, (item) => {\n\t\t\t\t\t// decode html into plain string txt\n\t\t\t\t\tif(item.description && item.description !== '') {\n\t\t\t\t\t\tlet txt = document.createElement('textarea');\n\t\t\t\t\t\ttxt.innerHTML = item.description;\n\t\t\t\t\t\titem.description = txt.value;\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(item.description);\n\n\t\t\t\t\ttmpl += `\n\t\t\t\t\t