{"version":3,"sources":["webpack:////Users/xingli/Documents/projects/projects/ara-fe/src/views/blocks/studyAreasListingBlock/js/studyAreasListingBlock.js"],"names":["getTemplate","__webpack_require__","_spinnerContainerWidgetService","_alertService","Api","CLS","StudyAreasListingBlock","element","_classCallCheck","this","$element","$","$content","find","$list","$result","$search","$searchInput","$select","$error","$footer","$filter","getApi","data","pageSize","studyAreaTileTemplate","spinnerContainerWidgetService","alertService","params","keyword","pageNumber","filters","getItems","handlePagination","handleKeyword","_this","on","_","debounce","event","currentTarget","val","trim","key","isEmpty","$labels","i","length","$label","groupkey","bool","hasClass","undefined","includes","push","_this2","e","toggleClass","getCurrentFilters","_this3","url","html","create","callApi","then","successful","getPrimaryMarkup","removeClass","destroy","items","results","facets","tmpl","filterTmpl","studyAreaTile","filterTemplate","forEach","filter","handleFilter","item","addClass","setResultText","totalCount","catch","error","start","end"],"mappings":"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","file":"block-20.317c86355b23b3978b5f.js","sourcesContent":["const NS = 'StudyAreasListingBlock';\nconst CLS = 'studyAreasListingBlock';\n\nimport * as getTemplate from '../../../../global/js/template';\nimport { spinnerContainerWidgetService } from '../../../../global/js/ara/spinnerContainerWidgetService';\nimport { alertService } from '../../../../global/js/ara/alertService';\n// import { paginationjs } from '../../../../global/js/pagination';\nimport * as Api from '../../../../global/js/api';\n\nexport class StudyAreasListingBlock {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\t// this.$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.studyAreaTileTemplate = 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\t// this.$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.studyAreaTileTemplate) {\n\t\t\t\t\tthis.studyAreaTileTemplate = getTemplate.studyAreaTile();\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