{"version":3,"sources":["webpack:////Users/xingli/Documents/projects/projects/ara-fe/src/views/blocks/eventListingBlock/js/eventListingBlock.js","webpack:///./pagination.js"],"names":["getTemplate","__webpack_require__","_spinnerContainerWidgetService","_alertService","_pagination","Api","CLS","EventListingBlock","element","_classCallCheck","this","$element","$","$pagination","find","$content","$list","$result","$search","$searchInput","$select","$error","$footer","$filter","getApi","data","pageSize","eventTileTemplate","spinnerContainerWidgetService","alertService","params","keyword","pageNumber","filters","getItems","handlePagination","handleKeyword","_this","on","getCurrentFilters","_this2","_","debounce","event","currentTarget","val","trim","key","isEmpty","$labels","i","length","$label","groupkey","bool","hasClass","undefined","includes","push","_this3","e","toggleClass","_this4","url","html","create","callApi","then","successful","getPrimaryMarkup","removeClass","destroy","items","results","facets","tmpl","filterTmpl","eventTileBlock","filterTemplate","forEach","filter","handleFilter","item","addClass","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":"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","file":"block-7.317c86355b23b3978b5f.js","sourcesContent":["const NS = 'EventListingBlock';\nconst CLS = 'eventListingBlock';\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';\n\nexport class EventListingBlock {\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\n\t\tthis.eventTileTemplate = 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\"filters\":{\n\n\t\t\t}\n\t\t};\n\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\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\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\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.eventTileTemplate) {\n\t\t\t\t\tthis.eventTileTemplate = getTemplate.eventTileBlock();\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\ttmpl += `\n\t\t\t\t\t
\n\t\t\t\t\t\t${this.eventTileTemplate(item)}\n\t\t\t\t\t
\n\t\t\t\t\t`;\n\t\t\t\t});\n\t\t\t\tthis.$list.html(`
${tmpl}
`);\n\n\t\t\t\tthis.$footer.addClass('hasResults');\n\n\t\t\t\t// render total result\n\t\t\t\tthis.setResultText(data.data.pageNumber, data.data.totalCount);\n\n\t\t\t\t// render pagination\n\t\t\t\tpaginationjs(this.pageSize, data.data.totalCount, this.$pagination, this);\n\t\t\t\tthis.spinnerContainerWidgetService.destroy();\n\t\t\t}\n\t\t}).catch((error) => {\n\t\t\tconsole.log(error);\n\t\t});\n\t}\n\n\tsetResultText(pageNumber, totalCount) {\n\t\tlet start = (pageNumber - 1) * this.pageSize || 1;\n\t\tlet end = this.pageSize > totalCount ? totalCount : pageNumber * this.pageSize;\n\t\tconsole.log(end, this.pageSize, totalCount);\n\n\t\tthis.$result.html(`Showing ${start}-${end} of ${totalCount} results`);\n\t}\n}\n","import pagination from 'paginationjs';\n\nexport const paginationjs = (itemsPerPage = 10, itemsCount = 0, paginationGroup, self) => {\n\tlet pages = Math.ceil(Number(itemsCount) / Number(itemsPerPage));\n\tpaginationGroup.pagination({\n\t\tdataSource: (done) => {\n\t\t\tlet res = [];\n\t\t\tfor(let i = 1; i <= pages; i++) {\n\t\t\t\tres.push(i);\n\t\t\t}\n\t\t\tdone(res);\n\t\t},\n\t\tpageSize: 1,\n\t\tpageNumber: (self.params.pageNumber && self.params.pageNumber <= pages) ? self.params.pageNumber : 1,\n\t\tprevText: '',\n\t\tnextText: '',\n\t\thideWhenLessThanOnePage: false,\n\t\ttriggerPagingOnInit: false,\n\t\tulClassName: 'pagination',\n\t\tcallback: (data, pagination) => {\n\t\t\tself.params.pageNumber = pagination.pageNumber;\n\t\t\tself.$element.trigger('pagination.trigger');\n\t\t}\n\t});\n};\n"],"sourceRoot":""}