{"version":3,"sources":["../../../js/Plugins/Progress/itjakub.plugins.progress.ts","../../js/Plugins/itjakub.modul.inicializator.ts","../../js/Plugins/itjakub.list.modul.inicializator.ts","../../js/Plugins/itjakub.search.modul.inicializator.ts","../../../js/Plugins/Reader/itjakub.plugins.reader-pagination.ts","../../../js/Plugins/Reader/itjakub.plugins.reader.ts","../../../js/Plugins/Bibliography/itjakub.plugins.bibliography.variableInterpreter.ts","../../../js/Plugins/Bibliography/itjakub.plugins.bibliography.factories.ts","../../../js/Plugins/Bibliography/itjakub.plugins.bibliography.configuration.ts","../../../js/Plugins/Bibliography/itjakub.plugins.bibliography.ts","../../../js/Plugins/Sort/itjakub.plugins.sort.ts","../../../js/Plugins/DropdownSelect/itjakub.plugins.dropdownselect.ts","../../../js/Plugins/DropdownSelect/itjakub.plugins.dropdownselect2.ts","../../../js/Plugins/RegExSearch/itjakub.plugins.regexsearch.ts","../../../js/Plugins/SearchBox/itjakub.plugins.searchbox.ts","../../../js/Plugins/SearchBox/itjakub.plugins.singlesearchbox.ts"],"names":[],"mappings":"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","file":"itjakub.plugins.bundle.js","sourcesContent":["class Progress {\n printModal: HTMLDivElement;\n $printModal: JQuery;\n\n modalDialog: HTMLDivElement;\n modalBody: HTMLDivElement;\n\n protected created = false;\n protected updateableField=null;\n\n constructor(protected containerId: string,\n protected title: string,\n protected contentConfiguration: IProgressConfiguration = {}) {\n this.printModal = document.createElement(\"div\");\n this.printModal.id = this.containerId;\n this.printModal.classList.add(\"modal\", \"fade\");\n document.body.appendChild(this.printModal);\n\n this.$printModal = $(this.printModal);\n }\n\n private create() {\n this.modalDialog = document.createElement(\"div\");\n this.modalDialog.classList.add(\"modal-dialog\");\n\n const modalContent = document.createElement(\"div\");\n modalContent.classList.add(\"modal-content\");\n\n this.modalDialog.appendChild(modalContent);\n\n const modalHeader = document.createElement(\"div\");\n modalHeader.classList.add(\"modal-header\");\n\n modalContent.appendChild(modalHeader);\n\n const modalTitle = document.createElement(\"h2\");\n modalTitle.classList.add(\"modal-title\");\n modalTitle.innerHTML = this.title;\n\n modalHeader.appendChild(modalTitle);\n\n this.modalBody = document.createElement(\"div\");\n this.modalBody.classList.add(\"modal-body\");\n\n modalContent.appendChild(this.modalBody);\n\n if (this.contentConfiguration.body !== undefined) {\n if (this.contentConfiguration.body.title !== undefined) {\n const bodyTitle = document.createElement(\"span\");\n bodyTitle.innerHTML = this.contentConfiguration.body.title;\n\n this.modalBody.appendChild(bodyTitle);\n\n if (this.contentConfiguration.update.field === ProgressUpdateField.BodyTitle) {\n this.updateableField = bodyTitle;\n }\n }\n if (this.contentConfiguration.body\n .showLoading !==\n undefined &&\n this.contentConfiguration.body.showLoading) {\n const modalLoading = document.createElement(\"div\");\n modalLoading.classList.add(\"loading\", \"loading-modal\");\n\n this.modalBody.appendChild(modalLoading);\n }\n if (this.contentConfiguration.body.afterLoadingText !== undefined) {\n const afterLoadingText = document.createElement(\"span\");\n afterLoadingText.innerHTML = this.contentConfiguration.body.afterLoadingText;\n\n afterLoadingText.classList.add(\"modal-text\");\n\n if (\n this.contentConfiguration.body.afterLoadingTextPosition !== undefined\n && this.contentConfiguration.body.afterLoadingTextPosition === ProgressTextPosition.Center\n ) {\n afterLoadingText.classList.add(\"modal-text-center\");\n }\n\n this.modalBody.appendChild(afterLoadingText);\n\n if (this.contentConfiguration.update.field === ProgressUpdateField.BodyAfterLoading) {\n this.updateableField = afterLoadingText;\n }\n }\n }\n\n this.printModal.appendChild(this.modalDialog);\n\n this.$printModal.modal({\n backdrop: \"static\"\n });\n\n this.created = true;\n }\n\n show() {\n if (!this.created) {\n this.create();\n }\n\n this.$printModal.modal(\"show\");\n\n return this;\n }\n\n update(value: number, max: number) {\n if (this.updateableField !== null && this.contentConfiguration.update.valueCallback !== undefined) {\n this.updateableField.innerHTML = this.contentConfiguration.update.valueCallback(value, max);\n }\n\n return this;\n }\n\n hide() {\n this.$printModal.modal(\"hide\");\n\n return this;\n }\n}\n\ninterface IProgressConfiguration {\n body?: {\n title?: string;\n showLoading?: boolean;\n afterLoadingText?: string;\n afterLoadingTextPosition?: ProgressTextPosition; //default left\n };\n update?: {\n field?: ProgressUpdateField;\n valueCallback?: (value: number, max:number)=>string;\n };\n}\n\nenum ProgressUpdateField {\n BodyTitle,\n BodyAfterLoading\n}\n\nenum ProgressTextPosition {\n Center,\n Left\n}\n","class ModulInicializator {\r\n protected bibliographyModule: BibliographyModule;\r\n protected search: Search;\r\n protected searchBox: SearchBox;\r\n protected dropDownSelect: DropDownSelect2;\r\n\r\n protected bookIdsInQuery = new Array();\r\n protected categoryIdsInQuery = new Array();\r\n\r\n protected initPage: number = null;\r\n protected booksCountOnPage = Number($(\"#bibliography-configuration\").data(\"page-size\"));\r\n\r\n protected readyForInit = false;\r\n protected notInitialized = true;\r\n\r\n protected firstLoad: boolean = true;\r\n\r\n protected configuration: IModulInicializatorConfiguration;\r\n protected defaultConfiguration = {\r\n base: {\r\n autosearch: true,\r\n searchOnFill: true,\r\n url: {\r\n searchKey: \"search\",\r\n pageKey: \"page\",\r\n selectionKey: \"selected\",\r\n sortAscKey: \"sortAsc\",\r\n sortCriteriaKey: \"sortCriteria\"\r\n }\r\n },\r\n bibliographyModule: {\r\n resultsContainer: \"#listResults\",\r\n sortBarContainer: \"#listResultsHeader\",\r\n sortChangeCallback: this.sortOrderChanged.bind(this),\r\n forcedBookType: null,\r\n customConfigurationPath: null\r\n },\r\n search: {\r\n container: document.getElementById(\"listSearchDiv\") as HTMLDivElement,\r\n processSearchJsonCallback: this.editionAdvancedSearch.bind(this),\r\n processSearchTextCallback: this.editionBasicSearch.bind(this)\r\n },\r\n dropDownSelect: {\r\n dropDownSelectContainer: \"#dropdownSelectDiv\",\r\n showStar: true\r\n }\r\n };\r\n\r\n constructor(configuration: IModulInicializatorConfiguration) {\r\n this.configuration = this.parseConfig(configuration, this.getDefaultConfiguration());\r\n console.log(this.configuration);\r\n }\r\n\r\n protected getDefaultConfiguration() {\r\n return this.defaultConfiguration;\r\n }\r\n\r\n protected parseConfig(config, defaultConfiguration) {\r\n const typeOf = typeof defaultConfiguration;\r\n const typeOfConfig = typeof config;\r\n\r\n switch (typeOf) {\r\n //case \"array\": // Arrays always returns type object\r\n case \"object\":\r\n if (config === undefined) {\r\n config = defaultConfiguration;\r\n }\r\n else {\r\n for (let key in defaultConfiguration) {\r\n if (defaultConfiguration.hasOwnProperty(key)) {\r\n if (config.hasOwnProperty(key)) {\r\n config[key] = this.parseConfig(config[key], defaultConfiguration[key]);\r\n } else {\r\n config[key] = defaultConfiguration[key];\r\n }\r\n }\r\n }\r\n }\r\n\r\n break;\r\n\r\n case \"boolean\":\r\n case \"number\":\r\n case \"string\":\r\n if (config === undefined) {\r\n config = defaultConfiguration;\r\n }\r\n\r\n break;\r\n case \"function\":\r\n if (config === undefined) {\r\n config = defaultConfiguration;\r\n } else if (typeOfConfig == \"function\") {\r\n config = config.bind(this);\r\n } else {\r\n console.error(`Config is not typeof function`, defaultConfiguration, config);\r\n }\r\n\r\n break;\r\n\r\n default:\r\n console.error(`Unknown defaultConfiguration type: ${typeOf}`, defaultConfiguration, config);\r\n }\r\n\r\n return config;\r\n }\r\n\r\n public init() {\r\n this.getBibliographyModule();\r\n this.getSearch();\r\n this.getDropDownSelect();\r\n\r\n this.initializeFromUrlParams();\r\n }\r\n\r\n //---------------------------------------------------\r\n\r\n protected getBibliographyModule() {\r\n if (this.bibliographyModule === undefined) {\r\n this.bibliographyModule = this.createBibliographyModule();\r\n }\r\n\r\n return this.bibliographyModule;\r\n }\r\n\r\n protected createBibliographyModule() {\r\n return new BibliographyModule(\r\n this.configuration.bibliographyModule.resultsContainer,\r\n this.configuration.bibliographyModule.sortBarContainer,\r\n this.configuration.bibliographyModule.sortChangeCallback,\r\n this.configuration.bibliographyModule.forcedBookType,\r\n this.configuration.bibliographyModule.customConfigurationPath,\r\n this\r\n );\r\n }\r\n\r\n protected sortOrderChanged() {\r\n this.getBibliographyModule().showPage(1);\r\n }\r\n\r\n //---------------------------------------------------\r\n\r\n public getSearch() {\r\n if (this.search === undefined) {\r\n this.search = this.createSearch();\r\n }\r\n\r\n return this.search;\r\n }\r\n\r\n protected createSearch() {\r\n const search = new Search(\r\n this.configuration.search.container,\r\n this.configuration.search.processSearchJsonCallback,\r\n this.configuration.search.processSearchTextCallback,\r\n this.configuration.search.favoriteQueries\r\n );\r\n search.makeSearch(this.configuration.search.enabledOptions, this.configuration.search.enabledSearchInSecondPortal);\r\n search.setPlaceholder(this.configuration.search.placeholder);\r\n\r\n return search;\r\n }\r\n\r\n protected hideTypeahead() {\r\n $(\".twitter-typeahead\").find(\".tt-menu\").hide();\r\n };\r\n\r\n protected editionAdvancedSearchPaged(json: string, pageNumber: number = 1) {\r\n this.hideTypeahead();\r\n if (typeof json === \"undefined\" || json === null || json === \"\") return;\r\n\r\n var bibliographyModule = this.getBibliographyModule();\r\n const start = (pageNumber - 1) * bibliographyModule.getBooksCountOnPage();\r\n const count = bibliographyModule.getBooksCountOnPage();\r\n const sortAsc = bibliographyModule.isSortedAsc();\r\n const sortingEnum = bibliographyModule.getSortCriteria();\r\n\r\n if (!this.firstLoad) {\r\n bibliographyModule.clearBooks();\r\n bibliographyModule.showLoading();\r\n }\r\n this.firstLoad = false;\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n traditional: true,\r\n url: this.configuration.search.url.advanced,\r\n data: { json: json, start: start, count: count, sortingEnum: sortingEnum, sortAsc: sortAsc, selectedBookIds: this.bookIdsInQuery, selectedCategoryIds: this.categoryIdsInQuery } as JQuery.PlainObject,\r\n dataType: \"json\",\r\n contentType: \"application/json\",\r\n success: response => {\r\n bibliographyModule.showBooks(response.books);\r\n updateQueryStringParameter(this.configuration.base.url.searchKey, json);\r\n updateQueryStringParameter(this.configuration.base.url.pageKey, pageNumber);\r\n updateQueryStringParameter(this.configuration.base.url.sortAscKey, bibliographyModule.isSortedAsc());\r\n updateQueryStringParameter(this.configuration.base.url.sortCriteriaKey, bibliographyModule.getSortCriteria());\r\n },\r\n error: () => {\r\n bibliographyModule.showPageLoadError();\r\n }\r\n });\r\n }\r\n\r\n protected editionBasicSearchPaged(text: string, pageNumber: number = 1) {\r\n this.hideTypeahead();\r\n //if (typeof text === \"undefined\" || text === null || text === \"\") return;\r\n\r\n var bibliographyModule = this.getBibliographyModule();\r\n bibliographyModule.runAsyncOnLoad(() => {\r\n const start = (pageNumber - 1) * bibliographyModule.getBooksCountOnPage();\r\n const count = bibliographyModule.getBooksCountOnPage();\r\n const sortAsc = bibliographyModule.isSortedAsc();\r\n const sortingEnum = bibliographyModule.getSortCriteria();\r\n\r\n if (!this.firstLoad) {\r\n bibliographyModule.clearBooks();\r\n bibliographyModule.showLoading();\r\n }\r\n this.firstLoad = false;\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n traditional: true,\r\n url: this.configuration.search.url.text,\r\n data: { text: text, start: start, count: count, sortingEnum: sortingEnum, sortAsc: sortAsc, selectedBookIds: this.bookIdsInQuery, selectedCategoryIds: this.categoryIdsInQuery } as JQuery.PlainObject,\r\n dataType: \"json\",\r\n contentType: \"application/json\",\r\n success: response => {\r\n bibliographyModule.showBooks(response.books);\r\n updateQueryStringParameter(this.configuration.base.url.searchKey, text);\r\n updateQueryStringParameter(this.configuration.base.url.pageKey, pageNumber);\r\n updateQueryStringParameter(this.configuration.base.url.sortAscKey, bibliographyModule.isSortedAsc());\r\n updateQueryStringParameter(this.configuration.base.url.sortCriteriaKey, bibliographyModule.getSortCriteria());\r\n },\r\n error: () => {\r\n bibliographyModule.showPageLoadError();\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected actualizeSelectedBooksAndCategoriesInQuery() {\r\n var selectedIds = this.dropDownSelect.getSelectedIds();\r\n this.bookIdsInQuery = this.dropDownSelect.hasBooksLoaded()\r\n ? selectedIds.selectedBookIds // Don't use bookIds from Dropdown select but only from FavoriteBook component\r\n : this.dropDownSelect.getFavoriteBookComponent().getLastSelectedBookIds(); // Get booksIds only from FavoriteBook\r\n this.categoryIdsInQuery = selectedIds.selectedCategoryIds;\r\n }\r\n\r\n protected createPagination(booksCount: number) {\r\n const bibliographyModule = this.getBibliographyModule();\r\n\r\n const pages = Math.ceil(booksCount / this.booksCountOnPage);\r\n if (this.initPage && this.initPage <= pages) {\r\n bibliographyModule.createPagination(this.booksCountOnPage, this.pageClickCallbackForBiblModule.bind(this), booksCount, this.initPage);\r\n } else {\r\n bibliographyModule.createPagination(this.booksCountOnPage, this.pageClickCallbackForBiblModule.bind(this), booksCount);\r\n }\r\n }\r\n\r\n protected pageClickCallbackForBiblModule(pageNumber: number = 1) {\r\n const search = this.getSearch();\r\n\r\n if (search.isLastQueryJson()) {\r\n this.editionAdvancedSearchPaged(search.getLastQuery(), pageNumber);\r\n } else {\r\n this.editionBasicSearchPaged(search.getLastQuery(), pageNumber);\r\n }\r\n }\r\n\r\n protected editionAdvancedSearch(json: string) {\r\n this.hideTypeahead();\r\n this.actualizeSelectedBooksAndCategoriesInQuery();\r\n if (typeof json === \"undefined\" || json === null || json === \"\") return;\r\n\r\n var bibliographyModule = this.getBibliographyModule();\r\n\r\n bibliographyModule.clearBooks();\r\n bibliographyModule.showLoading();\r\n bibliographyModule.destroyPagination();\r\n\r\n // the same condition in SearchModulInicializator class\r\n if (json === \"[]\") {\r\n bibliographyModule.showError(localization.translate(\"SearchCriteriaError\", \"PluginsJs\").value);\r\n return;\r\n }\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n traditional: true,\r\n url: this.configuration.search.url.advancedCount,\r\n data: { json: json, selectedBookIds: this.bookIdsInQuery, selectedCategoryIds: this.categoryIdsInQuery } as JQuery.PlainObject,\r\n dataType: \"json\",\r\n contentType: \"application/json\",\r\n success: response => {\r\n this.createPagination(response[\"count\"]); //enable pagination\r\n updateQueryStringParameter(this.configuration.base.url.searchKey, json);\r\n updateQueryStringParameter(this.configuration.base.url.sortAscKey, bibliographyModule.isSortedAsc());\r\n updateQueryStringParameter(this.configuration.base.url.sortCriteriaKey, bibliographyModule.getSortCriteria());\r\n },\r\n error: () => {\r\n bibliographyModule.showSearchError();\r\n }\r\n });\r\n }\r\n\r\n // XXX: this really serves not only editions but also dictionaries and likely even grammars etc.\r\n protected editionBasicSearch(text: string) {\r\n this.hideTypeahead();\r\n this.actualizeSelectedBooksAndCategoriesInQuery();\r\n //if (typeof text === \"undefined\" || text === null || text === \"\") return;\r\n\r\n var bibliographyModule = this.getBibliographyModule();\r\n\r\n bibliographyModule.clearBooks();\r\n bibliographyModule.showLoading();\r\n bibliographyModule.destroyPagination();\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n traditional: true,\r\n url: this.configuration.search.url.textCount,\r\n data: { text: text, selectedBookIds: this.bookIdsInQuery, selectedCategoryIds: this.categoryIdsInQuery } as JQuery.PlainObject,\r\n dataType: \"json\",\r\n contentType: \"application/json\",\r\n success: response => {\r\n this.createPagination(response[\"count\"]); //enable pagination\r\n updateQueryStringParameter(this.configuration.base.url.searchKey, text);\r\n updateQueryStringParameter(this.configuration.base.url.sortAscKey, bibliographyModule.isSortedAsc());\r\n updateQueryStringParameter(this.configuration.base.url.sortCriteriaKey, bibliographyModule.getSortCriteria());\r\n },\r\n error: () => {\r\n bibliographyModule.showSearchError();\r\n }\r\n });\r\n }\r\n\r\n //---------------------------------------------------\r\n\r\n protected getDropDownSelect() {\r\n if (this.dropDownSelect === undefined) {\r\n this.dropDownSelect = this.createDropDownSelect();\r\n }\r\n\r\n return this.dropDownSelect;\r\n }\r\n\r\n protected createDropDownSelect() {\r\n const callbackDelegate = new DropDownSelectCallbackDelegate();\r\n\r\n callbackDelegate.selectedChangedCallback = (state: State) => {\r\n var serializedState = this.dropDownSelect.getSerializedState();\r\n updateQueryStringParameter(this.configuration.base.url.selectionKey, serializedState);\r\n };\r\n\r\n const dropDownSelect = new DropDownSelect2(\r\n this.configuration.dropDownSelect.dropDownSelectContainer,\r\n this.configuration.dropDownSelect.dataUrl,\r\n this.configuration.search.favoriteQueries.bookType,\r\n this.configuration.dropDownSelect.showStar,\r\n callbackDelegate,\r\n {\r\n extraCssClasses: ['books-select'],\r\n },\r\n );\r\n\r\n callbackDelegate.dataLoadedCallback = () => {\r\n $(\"#listResults\").removeClass(\"loader\");\r\n this.initializeFromUrlParams();\r\n };\r\n\r\n dropDownSelect.makeDropdown();\r\n\r\n return dropDownSelect;\r\n }\r\n\r\n //---------------------------------------------------\r\n\r\n protected initializeFromUrlParams() {\r\n if (this.readyForInit && this.notInitialized) {\r\n this.notInitialized = false;\r\n\r\n const bibliographyModule = this.getBibliographyModule();\r\n bibliographyModule.runAsyncOnLoad(() =>{\r\n const search = this.getSearch();\r\n const dropDownSelect = this.getDropDownSelect();\r\n\r\n const page = getQueryStringParameterByName(this.configuration.base.url.pageKey);\r\n\r\n if (page) {\r\n this.initPage = parseInt(page);\r\n }\r\n\r\n const sortedAsc = getQueryStringParameterByName(this.configuration.base.url.sortAscKey);\r\n const sortCriteria = getQueryStringParameterByName(this.configuration.base.url.sortCriteriaKey);\r\n\r\n if (sortedAsc && sortCriteria) {\r\n bibliographyModule.setSortedAsc(sortedAsc === \"true\");\r\n bibliographyModule.setSortCriteria(((sortCriteria) as any) as SortEnum);\r\n }\r\n\r\n const selected = getQueryStringParameterByName(this.configuration.base.url.selectionKey);\r\n const searched = getQueryStringParameterByName(this.configuration.base.url.searchKey);\r\n\r\n search.writeTextToTextField(searched);\r\n\r\n if (selected) {\r\n dropDownSelect.restoreFromSerializedState(selected);\r\n }\r\n if (this.configuration.base.autosearch || (\r\n this.configuration.base.searchOnFill\r\n && search.getTextFromTextField().length > 0\r\n )) {\r\n search.processSearch(); //if not explicitly selected\r\n }\r\n });\r\n } else if (!this.notInitialized) {\r\n this.getSearch().processSearch();\r\n } else {\r\n this.readyForInit = true;\r\n }\r\n }\r\n}\r\n\r\ninterface IModulInicializatorConfiguration {\r\n base?: {\r\n autosearch?: boolean;\r\n searchOnFill?: boolean;\r\n url?: {\r\n searchKey?: string;\r\n pageKey?: string;\r\n selectionKey?: string;\r\n sortAscKey?: string;\r\n sortCriteriaKey?: string;\r\n };\r\n };\r\n bibliographyModule: {\r\n resultsContainer?: string;\r\n sortBarContainer?: string;\r\n sortChangeCallback?: () => void;\r\n forcedBookType?: BookTypeEnum;\r\n customConfigurationPath?: string;\r\n };\r\n search: IModulInicializatorConfigurationSearch;\r\n dropDownSelect: {\r\n dropDownSelectContainer?: string;\r\n dataUrl: string;\r\n showStar?: boolean;\r\n };\r\n}\r\n\r\ninterface IModulInicializatorConfigurationSearch {\r\n container?: HTMLDivElement;\r\n processSearchJsonCallback?: (jsonData: string, pageNumber?:number) => void;\r\n processSearchTextCallback?: (text: string) => void;\r\n\r\n enabledOptions: Array;\r\n enabledSearchInSecondPortal: boolean;\r\n placeholder?: string;\r\n\r\n url: IModulInicializatorConfigurationSearchUrl;\r\n favoriteQueries: IModulInicializatorConfigurationSearchFavorites;\r\n}\r\n\r\ninterface IModulInicializatorConfigurationSearchUrl {\r\n advanced: string;\r\n text: string;\r\n advancedCount: string;\r\n textCount: string;\r\n}\r\n\r\ninterface IModulInicializatorConfigurationSearchFavorites {\r\n bookType: BookTypeEnum;\r\n queryType: QueryTypeEnum;\r\n}\r\n","class ListModulInicializator extends ModulInicializator {\r\n protected configuration: IListModulInicializatorConfiguration;\r\n\r\n constructor(configuration: IListModulInicializatorConfiguration) {\r\n super(configuration);\r\n }\r\n\r\n protected getDefaultConfiguration() {\r\n return this.parseConfig({\r\n searchBox: {\r\n inputFieldElement: \".searchbar-input\",\r\n searchBoxInputSelector: \".searchbar-input.tt-input\",\r\n dataSet: {\r\n name: \"Title\",\r\n groupHeader: localization.translate(\"TitleSearchBox\", \"PluginsJs\").value,\r\n parameterUrlString: null\r\n }\r\n },\r\n search: {\r\n placeholder: localization.translate(\"SearchInTitles...\", \"PluginsJs\").value\r\n }\r\n }, super.getDefaultConfiguration());\r\n }\r\n\r\n public init() {\r\n this.getBibliographyModule();\r\n this.getSearch();\r\n this.getSearchBox();\r\n this.getDropDownSelect();\r\n\r\n this.initializeFromUrlParams();\r\n }\r\n\r\n protected createDropDownSelect() {\r\n const callbackDelegate = new DropDownSelectCallbackDelegate();\r\n\r\n callbackDelegate.selectedChangedCallback = (state: State) => {\r\n var serializedState = this.dropDownSelect.getSerializedState();\r\n updateQueryStringParameter(this.configuration.base.url.selectionKey, serializedState);\r\n\r\n var parametersUrl = DropDownSelect2.getUrlStringFromState(state);\r\n var searchBox = this.getSearchBox();\r\n searchBox.clearAndDestroy();\r\n searchBox.addDataSet(\r\n this.configuration.searchBox.dataSet.name,\r\n this.configuration.searchBox.dataSet.groupHeader,\r\n parametersUrl\r\n );\r\n searchBox.create();\r\n searchBox.value($(this.configuration.searchBox.searchBoxInputSelector).val());\r\n };\r\n\r\n const dropDownSelect = new DropDownSelect2(\r\n this.configuration.dropDownSelect.dropDownSelectContainer,\r\n this.configuration.dropDownSelect.dataUrl,\r\n this.configuration.search.favoriteQueries.bookType,\r\n this.configuration.dropDownSelect.showStar,\r\n callbackDelegate,\r\n {\r\n extraCssClasses: ['books-select'],\r\n },\r\n );\r\n\r\n callbackDelegate.dataLoadedCallback = () => {\r\n $(\"#listResults\").removeClass(\"loader\");\r\n this.initializeFromUrlParams();\r\n };\r\n\r\n dropDownSelect.makeDropdown();\r\n\r\n return dropDownSelect;\r\n }\r\n\r\n //---------------------------------------------------\r\n\r\n protected getSearchBox() {\r\n if (this.searchBox === undefined) {\r\n this.searchBox = this.createSearchBox();\r\n }\r\n\r\n return this.searchBox;\r\n }\r\n\r\n protected createSearchBox() {\r\n var searchBox = new SearchBox(\r\n this.configuration.searchBox.inputFieldElement,\r\n this.configuration.searchBox.controllerPath\r\n );\r\n searchBox.addDataSet(\r\n this.configuration.searchBox.dataSet.name,\r\n this.configuration.searchBox.dataSet.groupHeader\r\n );\r\n searchBox.create();\r\n //var searchBoxOnput = $(this.configuration.searchBox.searchBoxInputSelector);\r\n //searchBox.value(searchBoxOnput.val());\r\n\r\n //searchBoxOnput.change(() => { //prevent clearing input value on blur()\r\n // searchBox.value(searchBoxOnput.val());\r\n //});\r\n\r\n this.search.setOverrideQueryCallback(newQuery => searchBox.value(newQuery));\r\n\r\n return searchBox;\r\n }\r\n}\r\n\r\ninterface IListModulInicializatorConfiguration extends IModulInicializatorConfiguration {\r\n searchBox: {\r\n inputFieldElement?: string;\r\n controllerPath: string;\r\n\r\n dataSet?: {\r\n name?: string;\r\n groupHeader?: string;\r\n parameterUrlString?: string;\r\n };\r\n searchBoxInputSelector?: string;\r\n };\r\n}\r\n","class SearchModulInicializator extends ModulInicializator {\n\n protected configuration: ISearchModulInicializatorConfiguration;\n \n constructor(configuration: ISearchModulInicializatorConfiguration) {\n super(configuration);\n }\n\n protected getDefaultConfiguration() {\n return this.parseConfig({\n base: {\n autosearch: false\n },\n search: {\n processSearchJsonCallback: this.editionAdvancedSearch.bind(this),\n placeholder: localization.translate(\"SearchInFulltext...\", \"PluginsJs\").value\n }\n }, super.getDefaultConfiguration());\n }\n\n protected editionAdvancedSearch(json: string) {\n if (typeof json === \"undefined\" || json === null || json === \"\") return;\n this.actualizeSelectedBooksAndCategoriesInQuery();\n\n var bibliographyModule = this.getBibliographyModule();\n bibliographyModule.clearBooks();\n bibliographyModule.showLoading();\n bibliographyModule.destroyPagination();\n\n // the same condition in ModulInicializator class\n if (json === \"[]\") {\n bibliographyModule.showError(localization.translate(\"SearchCriteriaError\", \"PluginsJs\").value);\n return;\n }\n\n $.ajax({\n type: \"GET\",\n traditional: true,\n url: this.configuration.search.url.advancedCount,\n data: { json: json, selectedBookIds: this.bookIdsInQuery, selectedCategoryIds: this.categoryIdsInQuery } as JQuery.PlainObject,\n dataType: \"json\",\n contentType: \"application/json\",\n success: response => {\n this.createPagination(response[\"count\"]); //enable pagination\n updateQueryStringParameter(this.configuration.base.url.searchKey, json);\n updateQueryStringParameter(this.configuration.base.url.sortAscKey, bibliographyModule.isSortedAsc());\n updateQueryStringParameter(this.configuration.base.url.sortCriteriaKey, bibliographyModule.getSortCriteria());\n },\n error: () => {\n bibliographyModule.showSearchError();\n }\n });\n }\n}\n\ninterface ISearchModulInicializatorConfiguration extends IModulInicializatorConfiguration {\n search: ISearchModulInicializatorConfigurationSearch;\n}\n\ninterface ISearchModulInicializatorConfigurationSearch extends IModulInicializatorConfigurationSearch {\n url: ISearchModulInicializatorConfigurationSearchUrl;\n}\n\ninterface ISearchModulInicializatorConfigurationSearchUrl extends IModulInicializatorConfigurationSearchUrl {\n //advancedCount: string;\n}","class ReaderPagination {\n protected readonly pagerDisplayPages: number;\n protected clickedMoveToPage: boolean;\n public readerContainer: HTMLElement;\n public pages: Array;\n public actualPageIndex = 0;\n private pageChangedCallback: (pageId: number, pageIndex: number, scrollTo: boolean) => void;\n\n constructor(readerContainer: HTMLElement) {\n this.pagerDisplayPages = 5;\n this.readerContainer = readerContainer;\n }\n\n init(pageChangedCallback: (pageId: number, pageIndex: number, scrollTo: boolean) => void) {\n this.pageChangedCallback = pageChangedCallback;\n }\n\n createPagination(multiStepArrow = false, clickedPaginationLinkCallback?: (pageIndex: number) => void, clickedPageNumberCallback?: (pageIndex: number) => void): HTMLElement {\n const paginationUl: HTMLUListElement = document.createElement(\"ul\");\n paginationUl.classList.add(\"pagination\", \"pagination-sm\");\n\n const toLeft = document.createElement(\"ul\");\n toLeft.classList.add(\"page-navigation-container\", \"page-navigation-container-left\");\n\n let liElement: HTMLLIElement = document.createElement(\"li\");\n $(liElement).addClass(\"page-navigation page-navigation-left\");\n let anchor: HTMLAnchorElement = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(\"|<\");\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if (clickedPaginationLinkCallback) {\n clickedPaginationLinkCallback(0)\n } else {\n this.moveToPageNumber(0, true);\n }\n return false;\n });\n liElement.appendChild(anchor);\n toLeft.appendChild(liElement);\n\n if (multiStepArrow) {\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"page-navigation page-navigation-left\");\n anchor = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(\"<<\");\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if (clickedPaginationLinkCallback) {\n clickedPaginationLinkCallback(this.actualPageIndex - 5)\n } else {\n this.moveToPageNumber(this.actualPageIndex - 5, true);\n }\n return false;\n });\n liElement.appendChild(anchor);\n toLeft.appendChild(liElement);\n }\n\n\n let toRight = document.createElement(\"ul\");\n toRight.classList.add(\"page-navigation-container\", \"page-navigation-container-right\");\n\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"page-navigation page-navigation-left\");\n anchor = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(\"<\");\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if (clickedPaginationLinkCallback) {\n clickedPaginationLinkCallback(this.actualPageIndex - 1)\n } else {\n this.moveToPageNumber(this.actualPageIndex - 1, true);\n }\n return false;\n });\n liElement.appendChild(anchor);\n toLeft.appendChild(liElement);\n\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"page-navigation page-navigation-right\");\n anchor = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(\">\");\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if (clickedPaginationLinkCallback) {\n clickedPaginationLinkCallback(this.actualPageIndex + 1)\n } else {\n this.moveToPageNumber(this.actualPageIndex + 1, true);\n }\n return false;\n });\n liElement.appendChild(anchor);\n toRight.appendChild(liElement);\n\n\n if (multiStepArrow) {\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"page-navigation page-navigation-right\");\n anchor = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(\">>\");\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if (clickedPaginationLinkCallback) {\n clickedPaginationLinkCallback(this.actualPageIndex + 5)\n } else {\n this.moveToPageNumber(this.actualPageIndex + 5, true);\n }\n return false;\n });\n liElement.appendChild(anchor);\n toRight.appendChild(liElement);\n }\n\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"page-navigation page-navigation-right\");\n anchor = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(\">|\");\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if (clickedPaginationLinkCallback) {\n clickedPaginationLinkCallback(this.pages.length - 1)\n } else {\n this.moveToPageNumber(this.pages.length - 1, true);\n }\n return false;\n });\n liElement.appendChild(anchor);\n toRight.appendChild(liElement);\n\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"more-pages more-pages-left\");\n $(liElement).text(\"...\");\n paginationUl.appendChild(liElement);\n\n $.each(this.pages, (index, page) => {\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"page\");\n $(liElement).data(\"page-index\", index);\n anchor = document.createElement(\"a\");\n anchor.href = \"#\";\n $(anchor).text(page.text);\n $(anchor).click((event: JQuery.Event) => {\n event.stopPropagation();\n if(clickedPageNumberCallback) {\n clickedPageNumberCallback(page.pageId);\n } else {\n this.moveToPage(page.pageId);\n }\n return false;\n });\n liElement.appendChild(anchor);\n paginationUl.appendChild(liElement);\n });\n\n liElement = document.createElement(\"li\");\n $(liElement).addClass(\"more-pages more-pages-right\");\n $(liElement).text(\"...\");\n paginationUl.appendChild(liElement);\n\n var listingContainer = document.createElement(\"div\");\n listingContainer.classList.add(\"page-navigation-container-helper\");\n listingContainer.appendChild(toLeft);\n listingContainer.appendChild(paginationUl);\n listingContainer.appendChild(toRight);\n\n return listingContainer;\n }\n\n moveToPageNumber(pageIndex: number, scrollTo: boolean) {\n if (pageIndex < 0) {\n pageIndex = 0;\n } else if (pageIndex >= this.pages.length) {\n pageIndex = this.pages.length - 1;\n }\n\n if (!scrollTo) {\n this.clickedMoveToPage = true;\n }\n\n this.actualPageIndex = pageIndex;\n this.actualizePagination(pageIndex);\n\n const pageId = this.pages[pageIndex].pageId;\n this.pageChangedCallback.call(null, pageId, pageIndex, scrollTo);\n }\n\n actualizePagination(pageIndex: number) {\n const pager = $(this.readerContainer).find(\"ul.pagination\");\n pager.find(\"li.page-navigation\").css(\"visibility\", \"visible\");\n pager.find(\"li.more-pages\").css(\"visibility\", \"visible\");\n if (pageIndex === 0) {\n pager.find(\"li.page-navigation-left\").css(\"visibility\", \"hidden\");\n pager.find(\"li.more-pages-left\").css(\"visibility\", \"hidden\");\n } else if (pageIndex === this.pages.length - 1) {\n pager.find(\"li.page-navigation-right\").css(\"visibility\", \"hidden\");\n pager.find(\"li.more-pages-right\").css(\"visibility\", \"hidden\");\n }\n\n const pages = $(pager).find(\".page\");\n $(pages).css(\"display\", \"none\");\n $(pages).removeClass(\"page-active\");\n const actualPage = $(pages).filter(function (index) {\n return $(this).data(\"page-index\") === pageIndex;\n });\n\n const displayPagesOnEachSide = (this.pagerDisplayPages - 1) / 2;\n let displayOnRight = displayPagesOnEachSide;\n let displayOnLeft = displayPagesOnEachSide;\n const pagesOnLeft = pageIndex;\n const pagesOnRight = this.pages.length - (pageIndex + 1);\n if (pagesOnLeft <= displayOnLeft) {\n displayOnRight += displayOnLeft - pagesOnLeft;\n pager.find(\"li.more-pages-left\").css(\"visibility\", \"hidden\");\n } else if (pagesOnRight <= displayOnRight) {\n displayOnLeft += displayOnRight - pagesOnRight;\n pager.find(\"li.more-pages-right\").css(\"visibility\", \"hidden\");\n }\n\n const displayedPages = $(pages).filter(function (index) {\n const itemPageIndex = $(this).data(\"page-index\");\n return (itemPageIndex >= pageIndex - displayOnLeft && itemPageIndex <= pageIndex + displayOnRight);\n });\n $(displayedPages).css(\"display\", \"inline-block\");\n $(actualPage).addClass(\"page-active\");\n }\n\n moveToPage(pageId: number, scrollTo = false) {\n let pageIndex = -1;\n for (let i = 0; i < this.pages.length; i++) {\n if (this.pages[i].pageId === pageId) {\n pageIndex = i;\n break;\n }\n }\n if (pageIndex >= 0 && pageIndex < this.pages.length) {\n this.moveToPageNumber(pageIndex, scrollTo);\n }\n }\n}","class ReaderModule extends ReaderPagination {\n\n // XXX: this is probably the legacy reader, while the new one (by Jan Vitha)\n // is in Areas/BookReader/js\n\n private favoriteManager: FavoriteManager;\n private newFavoriteDialog: NewFavoriteDialog;\n readerContainer: HTMLDivElement;\n sliderOnPage: number;\n pagesById: IDictionary;\n bookmarks: Array;\n preloadPagesBefore: number;\n preloadPagesAfter: number;\n bookId: string;\n versionId: string;\n loadedBookContent: boolean;\n\n clickedMoveToPage: boolean;\n\n leftSidePanels: Array;\n rightSidePanels: Array;\n\n\n imagePanelIdentificator: string = \"ImagePanel\";\n textPanelIdentificator: string = \"TextPanel\";\n searchPanelIdentificator: string = \"SearchPanel\";\n termsPanelIdentificator: string = \"TermsPanel\";\n bookmarksPanelIdentificator: string = \"BookmarksPanel\";\n settingsPanelIdentificator: string = \"SettingsPanel\";\n contentPanelIdentificator: string = \"ContentPanel\";\n\n imagePanel: ImagePanelOld;\n textPanel: TextPanelOld;\n searchPanel: SearchResultPanelOld;\n bookmarksPanel: BookmarksPanelOld;\n settingsPanel: SettingsPanel;\n contentPanel: ContentPanelOld;\n termsPanel: TermsPanelOld;\n\n showPanelList: Array;\n showLeftSidePanelsButtonList: Array;\n showMainPanelsButtonList: Array;\n\n pageChangeCallback: (pageId: number) => void;\n\n\n constructor(readerContainer: HTMLDivElement, pageChangedCallback: (pageId: number) => void, showPanelList: Array, showLeftSidePanelsButtonList: Array, showMainPanelsButtonList: Array) {\n super(readerContainer);\n this.pageChangeCallback = pageChangedCallback;\n this.showPanelList = showPanelList;\n this.showLeftSidePanelsButtonList = showLeftSidePanelsButtonList;\n this.showMainPanelsButtonList = showMainPanelsButtonList;\n this.favoriteManager = new FavoriteManager();\n this.newFavoriteDialog = new NewFavoriteDialog(this.favoriteManager, true);\n this.init((pageId, pageIndex, scrollTo) => {\n this.actualizeSlider(pageIndex);\n this.notifyPanelsMovePage(pageIndex, scrollTo);\n this.pageChangeCallback(pageId); \n });\n }\n \n public makeReader(bookXmlId: string, versionXmlId: string, bookTitle: string, pageList: IPage[]) {\n this.bookId = bookXmlId;\n this.versionId = versionXmlId;\n this.actualPageIndex = 0;\n this.sliderOnPage = 0;\n this.pages = new Array();\n this.pagesById = {};\n this.bookmarks = new Array(pageList.length);\n this.leftSidePanels = new Array();\n this.rightSidePanels = new Array();\n\n $(window.document.documentElement).on(\"beforeunload\", (event: JQuery.Event) => {\n for (var k = 0; k < this.leftSidePanels.length; k++) {\n if (this.leftSidePanels && this.leftSidePanels[k].childwindow) {\n this.leftSidePanels[k].childwindow.close(); \n }\n }\n\n for (var k = 0; k < this.rightSidePanels.length; k++) {\n if (this.rightSidePanels && this.rightSidePanels[k].childwindow) {\n this.rightSidePanels[k].childwindow.close();\n }\n }\n });\n\n for (var i = 0; i < pageList.length; i++) { //load pageList\n var page = pageList[i];\n var bookPageItem = new BookPage(page.id, page.name, page.position);\n\n this.pages.push(bookPageItem);\n this.pagesById[bookPageItem.pageId] = bookPageItem;\n }\n\n $(this.readerContainer).empty();\n var readerDiv: HTMLDivElement = document.createElement(\"div\");\n $(readerDiv).addClass(\"reader\");\n\n var readerHeadDiv: HTMLDivElement = document.createElement(\"div\");\n $(readerHeadDiv).addClass(\"reader-head content-container\");\n\n var fullscreenButton = document.createElement(\"button\");\n $(fullscreenButton).addClass(\"fullscreen-button\");\n\n var fullscreenSpan = document.createElement(\"span\");\n $(fullscreenSpan).addClass(\"glyphicon glyphicon-fullscreen\");\n $(fullscreenButton).append(fullscreenSpan);\n $(fullscreenButton).click((event) => {\n $(this.readerContainer).find(\".reader\").addClass(\"fullscreen\");\n });\n readerHeadDiv.appendChild(fullscreenButton);\n\n var fullscreenCloseButton = document.createElement(\"button\");\n $(fullscreenCloseButton).addClass(\"fullscreen-close-button\");\n\n var closeSpan = document.createElement(\"span\");\n $(closeSpan).addClass(\"glyphicon glyphicon-remove\");\n $(fullscreenCloseButton).append(closeSpan);\n $(fullscreenCloseButton).click((event) => {\n $(this.readerContainer).find(\".reader\").removeClass(\"fullscreen\");\n });\n readerHeadDiv.appendChild(fullscreenCloseButton);\n\n\n var title = this.makeTitle(bookTitle);\n readerHeadDiv.appendChild(title);\n\n\n var controls = this.makeControls();\n readerHeadDiv.appendChild(controls);\n readerDiv.appendChild(readerHeadDiv);\n\n var readerBodyDiv = this.makeReaderBody();\n readerDiv.appendChild(readerBodyDiv);\n\n $(this.readerContainer).append(readerDiv);\n\n this.loadBookmarks();\n this.newFavoriteDialog.make();\n this.newFavoriteDialog.setSaveCallback(this.createBookmarks.bind(this));\n\n this.moveToPageNumber(0, false); //load first page\n }\n\n protected hasBookPageCache: { [key: string]: { [key: string]: boolean; }; } = {};\n protected hasBookPageCallOnSuccess: { [key: string]: { [key: string]: Array<()=>any>; }; } = {};\n\n hasBookPage(bookId: string, bookVersionId: string, onTrue: () => any = null, onFalse: () => any = null) {\n if (this.hasBookPageCache[bookId] !== undefined && this.hasBookPageCache[bookId][bookVersionId + \"_loading\"]) {\n this.hasBookPageCallOnSuccess[bookId][bookVersionId].push(() => {\n this.hasBookPage(bookId, bookVersionId, onTrue, onFalse);\n });\n }\n else if (this.hasBookPageCache[bookId] === undefined || this.hasBookPageCache[bookId][bookVersionId] === undefined) {\n if (this.hasBookPageCache[bookId] === undefined) {\n this.hasBookPageCache[bookId] = {};\n this.hasBookPageCache[bookId][bookVersionId + \"_loading\"] = true;\n\n this.hasBookPageCallOnSuccess[bookId] = {};\n this.hasBookPageCallOnSuccess[bookId][bookVersionId] = [];\n }\n\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: { bookId: bookId, snapshotId: bookVersionId } as JQuery.PlainObject,\n url: document.getElementsByTagName(\"body\")[0].getAttribute(\"data-has-book-text-url\"),\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response: { HasBookPage: boolean }) => {\n this.hasBookPageCache[bookId][bookVersionId] = response.HasBookPage;\n this.hasBookPageCache[bookId][bookVersionId + \"_loading\"] = false;\n\n if (response.HasBookPage && onTrue !== null) {\n onTrue();\n } else if (!response.HasBookPage && onFalse !== null) {\n onFalse();\n }\n\n while (this.hasBookPageCallOnSuccess[bookId][bookVersionId].length) {\n this.hasBookPageCallOnSuccess[bookId][bookVersionId].pop()();\n }\n },\n error: (response) => {\n console.error(response);\n\n this.hasBookPageCache[bookId][bookVersionId + \"_loading\"] = false;\n this.hasBookPageCallOnSuccess[bookId][bookVersionId].pop()();\n }\n });\n } else if (this.hasBookPageCache[bookId][bookVersionId] && onTrue !== null) {\n onTrue();\n } else if (!this.hasBookPageCache[bookId][bookVersionId] && onFalse !== null) {\n onFalse();\n }\n }\n\n protected hasBookImageCache: { [key: string]: { [key: string]: boolean; }; } = {};\n\n hasBookImage(bookId: string, bookVersionId: string, onTrue: () => any = null, onFalse: () => any = null) {\n if (this.hasBookImageCache[bookId] === undefined || this.hasBookImageCache[bookId][bookVersionId] === undefined) {\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: { bookId: bookId, snapshotId: bookVersionId } as JQuery.PlainObject,\n url: this.readerContainer.getAttribute(\"data-has-image-url\"),\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response: { HasBookImage: boolean }) => {\n if (this.hasBookImageCache[bookId] === undefined) {\n this.hasBookImageCache[bookId] = {};\n }\n this.hasBookImageCache[bookId][bookVersionId] = response.HasBookImage;\n if (response.HasBookImage && onTrue !== null) {\n onTrue();\n } else if (!response.HasBookImage && onFalse !== null) {\n onFalse();\n }\n },\n error: (response) => {\n console.error(response);\n }\n });\n } else if (this.hasBookImageCache[bookId][bookVersionId] && onTrue !== null) {\n onTrue();\n } else if (!this.hasBookImageCache[bookId][bookVersionId] && onFalse !== null) {\n onFalse();\n }\n }\n\n getBookXmlId(): string {\n return this.bookId;\n }\n\n getVersionXmlId(): string {\n return this.versionId;\n }\n\n getActualPage(): BookPage {\n return this.pages[this.actualPageIndex];\n }\n\n getPageByIndex(pageIndex: number): BookPage {\n return this.pages[pageIndex];\n }\n\n public makeTitle(bookTitle: string): HTMLDivElement {\n var titleDiv: HTMLDivElement = document.createElement(\"div\");\n $(titleDiv).addClass(\"title\");\n titleDiv.innerHTML = bookTitle;\n return titleDiv;\n }\n\n private makeControls(): HTMLDivElement {\n\n var controlsDiv: HTMLDivElement = document.createElement(\"div\");\n $(controlsDiv).addClass(\"reader-controls content-container\");\n\n var slider: HTMLDivElement = document.createElement(\"div\");\n $(slider).addClass(\"slider\");\n $(slider).slider({\n min: 0,\n max: this.pages.length - 1,\n value: 0,\n start: (event, ui) => {\n $(event.target as Node as Element).find(\".ui-slider-handle\").find(\".slider-tip\").show();\n },\n stop: (event, ui) => {\n $(event.target as Node as Element).find(\".ui-slider-handle\").find(\".slider-tip\").fadeOut(1000);\n },\n slide: (event, ui) => {\n const targetEl = $(event.target as Node as Element);\n targetEl.find(\".ui-slider-handle\").find(\".slider-tip\").stop(true, true);\n targetEl.find(\".ui-slider-handle\").find(\".slider-tip\").show();\n if (this.pages[ui.value] !== undefined) {\n targetEl.find(\".ui-slider-handle\").find(\".tooltip-inner\").html(localization.translate(\"Page:\", \"PluginsJs\").value + this.pages[ui.value].text);\n } else {\n console.error(\"missing page \"+ui.value);\n }\n },\n change: (event: Event, ui: JQueryUI.SliderUIParams) => {\n if (this.actualPageIndex !== ui.value) {\n this.moveToPageNumber(ui.value, true);\n }\n }\n });\n\n var sliderTooltip: HTMLDivElement = document.createElement(\"div\");\n sliderTooltip.classList.add(\"tooltip\", \"top\", \"slider-tip\");\n var arrowTooltip: HTMLDivElement = document.createElement(\"div\");\n arrowTooltip.classList.add(\"tooltip-arrow\");\n sliderTooltip.appendChild(arrowTooltip);\n\n var innerTooltip: HTMLDivElement = document.createElement(\"div\");\n $(innerTooltip).addClass(\"tooltip-inner\");\n if (this.pages[0] !== undefined) {\n $(innerTooltip).html(localization.translate(\"Page:\", \"PluginsJs\").value + this.pages[0].text);\n }\n else {\n console.error(\"missing page \" + 0);\n }\n sliderTooltip.appendChild(innerTooltip);\n $(sliderTooltip).hide();\n\n var sliderHandle:JQuery = $(slider).find(\".ui-slider-handle\");\n sliderHandle.append(sliderTooltip);\n sliderHandle.hover((event) => {\n $(event.target).find(\".slider-tip\").stop(true, true);\n $(event.target).find(\".slider-tip\").show();\n });\n sliderHandle.mouseout((event) => {\n $(event.target).find(\".slider-tip\").fadeOut(1000);\n });\n controlsDiv.appendChild(slider);\n\n var pagingDiv: HTMLDivElement = document.createElement(\"div\");\n pagingDiv.classList.add(\"paging\");\n\n var pageInputDiv: HTMLDivElement = document.createElement(\"div\");\n pageInputDiv.classList.add(\"page-input\");\n\n var pageInputText = document.createElement(\"input\");\n pageInputText.setAttribute(\"type\", \"text\");\n pageInputText.setAttribute(\"id\", \"pageInputText\");\n pageInputText.setAttribute(\"placeholder\", localization.translate(\"GotoPage\", \"PluginsJs\").value + \"...\");\n pageInputText.classList.add(\"page-input-text\");\n pageInputDiv.appendChild(pageInputText);\n\n var pageInputButton = document.createElement(\"button\");\n $(pageInputButton).addClass(\"btn btn-default page-input-button\");\n\n var pageInputButtonSpan = document.createElement(\"span\");\n $(pageInputButtonSpan).addClass(\"glyphicon glyphicon-arrow-right\");\n $(pageInputButton).append(pageInputButtonSpan);\n\n $(pageInputButton).click((event: JQuery.Event) => {\n var pageName = $(\"#pageInputText\").val() as string;\n var pageIndex: number = -1;\n for (var i = 0; i < this.pages.length; i++) {\n if (this.pages[i].text === pageName) {\n pageIndex = i;\n break;\n }\n }\n\n if (this.pages[pageIndex] !== undefined) {\n var page: BookPage = this.pages[pageIndex];\n this.moveToPage(page.pageId, true);\n }\n else {\n console.error(\"missing page \" + pageIndex);\n }\n });\n\n pageInputDiv.appendChild(pageInputButton);\n\n $(pageInputText).keypress((event: any) => {\n var keyCode = event.which || event.keyCode;\n if (keyCode === 13) { //13 = Enter\n $(pageInputButton).click();\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n });\n\n this.activateTypeahead(pageInputText);\n\n const listingContainer = this.createPagination(true);\n\n var buttonsDiv: HTMLDivElement = document.createElement(\"div\");\n $(buttonsDiv).addClass(\"buttons\");\n\n var addBookmarkButton = document.createElement(\"button\");\n $(addBookmarkButton).addClass(\"bookmark-button\");\n\n var addBookmarkSpan = document.createElement(\"span\");\n $(addBookmarkSpan).addClass(\"glyphicon glyphicon-bookmark\");\n $(addBookmarkButton).append(addBookmarkSpan);\n\n var addBookmarkSpanText = document.createElement(\"span\");\n $(addBookmarkSpanText).addClass(\"button-text\");\n $(addBookmarkSpanText).append(localization.translate(\"AddBookmark\", \"PluginsJs\").value);\n $(addBookmarkButton).append(addBookmarkSpanText);\n\n $(addBookmarkButton).click((event: JQuery.Event) => {\n var actualPageName = this.getActualPage().text;\n this.newFavoriteDialog.show(actualPageName);\n });\n\n var bookmarkButton = document.createElement(\"button\");\n $(bookmarkButton).addClass(\"bookmark-button\");\n\n var bookmarkSpan = document.createElement(\"span\");\n $(bookmarkSpan).addClass(\"glyphicon glyphicon-bookmark\");\n $(bookmarkButton).append(bookmarkSpan);\n\n var bookmarkSpanText = document.createElement(\"span\");\n $(bookmarkSpanText).addClass(\"button-text\");\n $(bookmarkSpanText).append(localization.translate(\"Bookmarks\", \"PluginsJs\").value);\n $(bookmarkButton).append(bookmarkSpanText);\n\n $(bookmarkButton).click((event: JQuery.Event) => {\n var panelId = this.bookmarksPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var bookmarksPanel: BookmarksPanelOld = new BookmarksPanelOld(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(bookmarksPanel.panelHtml);\n this.leftSidePanels.push(bookmarksPanel);\n this.bookmarksPanel = bookmarksPanel;\n }\n this.changeSidePanelVisibility(this.bookmarksPanelIdentificator, \"left\");\n });\n\n buttonsDiv.appendChild(addBookmarkButton);\n buttonsDiv.appendChild(bookmarkButton);\n\n if (this.showPanelList.indexOf(ReaderPanelEnum.SettingsPanel) >= 0) {\n\n var settingsButton = document.createElement(\"button\");\n $(settingsButton).addClass(\"comment-button\");\n\n var settingsSpan = document.createElement(\"span\");\n $(settingsSpan).addClass(\"glyphicon glyphicon-cog\");\n $(settingsButton).append(settingsSpan);\n\n var settingsSpanText = document.createElement(\"span\");\n $(settingsSpanText).addClass(\"button-text\");\n $(settingsSpanText).append(localization.translate(\"View\", \"PluginsJs\").value);\n $(settingsButton).append(settingsSpanText);\n\n $(settingsButton).click((event: JQuery.Event) => {\n var panelId = this.settingsPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var settingsPanel: SettingsPanel = new SettingsPanel(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(settingsPanel.panelHtml);\n this.leftSidePanels.push(settingsPanel);\n this.settingsPanel = settingsPanel;\n }\n this.changeSidePanelVisibility(this.settingsPanelIdentificator, \"left\");\n });\n\n buttonsDiv.appendChild(settingsButton);\n }\n\n if (this.showPanelList.indexOf(ReaderPanelEnum.SearchPanel) >= 0) {\n\n var searchResultButton = document.createElement(\"button\");\n $(searchResultButton).addClass(\"search-button\");\n\n var searchSpan = document.createElement(\"span\");\n $(searchSpan).addClass(\"glyphicon glyphicon-search\");\n $(searchResultButton).append(searchSpan);\n\n var searchSpanText = document.createElement(\"span\");\n $(searchSpanText).addClass(\"button-text\");\n $(searchSpanText).append(localization.translate(\"Search\", \"PluginsJs\").value);\n $(searchResultButton).append(searchSpanText);\n\n $(searchResultButton).click((event: JQuery.Event) => {\n var panelId = this.searchPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var searchPanel = new SearchResultPanelOld(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(searchPanel.panelHtml);\n this.leftSidePanels.push(searchPanel);\n this.searchPanel = searchPanel;\n }\n this.changeSidePanelVisibility(this.searchPanelIdentificator, \"left\");\n });\n\n buttonsDiv.appendChild(searchResultButton);\n }\n\n if (this.showPanelList.indexOf(ReaderPanelEnum.TermsPanel) >= 0) {\n\n var termsButton = document.createElement(\"button\");\n $(termsButton).addClass(\"terms-button\");\n\n var termsSpan = document.createElement(\"span\");\n $(termsSpan).addClass(\"glyphicon glyphicon-list-alt\");\n $(termsButton).append(termsSpan);\n\n var termsSpanText = document.createElement(\"span\");\n $(termsSpanText).addClass(\"button-text\");\n $(termsSpanText).append(localization.translate(\"Terms\", \"PluginsJs\").value);\n $(termsButton).append(termsSpanText);\n\n $(termsButton).click((event: JQuery.Event) => {\n var panelId = this.termsPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var termsPanel = new TermsPanelOld(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(termsPanel.panelHtml);\n this.leftSidePanels.push(termsPanel);\n this.termsPanel = termsPanel;\n }\n this.changeSidePanelVisibility(this.termsPanelIdentificator, \"left\");\n });\n\n buttonsDiv.appendChild(termsButton);\n }\n\n if (this.showPanelList.indexOf(ReaderPanelEnum.ContentPanel) >= 0) {\n\n var contentButton = document.createElement(\"button\");\n $(contentButton).addClass(\"content-button\");\n\n var contentSpan = document.createElement(\"span\");\n $(contentSpan).addClass(\"glyphicon glyphicon-book\");\n $(contentButton).append(contentSpan);\n\n \n var contentSpanText = document.createElement(\"span\");\n $(contentSpanText).addClass(\"button-text\");\n $(contentSpanText).append(localization.translate(\"Content\", \"PluginsJs\").value);\n $(contentButton).append(contentSpanText);\n\n $(contentButton).click((event: JQuery.Event) => {\n var panelId = this.contentPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var contentPanel: ContentPanelOld = new ContentPanelOld(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(contentPanel.panelHtml);\n this.leftSidePanels.push(contentPanel);\n this.contentPanel = contentPanel;\n }\n this.changeSidePanelVisibility(this.contentPanelIdentificator, \"left\");\n });\n\n buttonsDiv.appendChild(contentButton);\n }\n\n pagingDiv.appendChild(pageInputDiv);\n pagingDiv.appendChild(buttonsDiv);\n pagingDiv.appendChild(listingContainer);\n\n controlsDiv.appendChild(pagingDiv);\n\n var resetDiv = document.createElement(\"div\");\n resetDiv.classList.add(\"reset\");\n controlsDiv.appendChild(resetDiv);\n\n return controlsDiv;\n }\n\n public activateTypeahead(input: HTMLInputElement) {\n\n var pagesTexts = new Array();\n $.each(this.pages, (index, page: BookPage) => {\n pagesTexts.push(page.text);\n });\n\n var pages = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.whitespace, queryTokenizer: Bloodhound.tokenizers.whitespace, local: (): string[] => { return pagesTexts; } });\n\n $(input as Node as Element).typeahead({ hint: true, highlight: true, minLength: 1 },{ name: \"pages\", source: pages });\n }\n\n private loadBookmarks() {\n this.favoriteManager.getPageBookmarks(Number(this.bookId), (bookmarks) => {\n for (var i = 0; i < bookmarks.length; i++) {\n var bookmark = bookmarks[i];\n this.loadBookmark(bookmark);\n }\n });\n }\n\n private loadBookmark(actualBookmark: IBookPageBookmark) {\n for (var pageIndex = 0; pageIndex < this.pages.length; pageIndex++) {\n var actualPage = this.pages[pageIndex];\n if (actualBookmark.pageId === actualPage.pageId) {\n var bookmarkPosition = this.bookmarks[pageIndex];\n if (!bookmarkPosition) {\n bookmarkPosition = {\n bookmarks: new Array(),\n bookmarkSpan: null,\n pageIndex: pageIndex\n };\n this.bookmarks[pageIndex] = bookmarkPosition;\n }\n\n bookmarkPosition.bookmarks.push(actualBookmark);\n\n this.recreateAndShowBookmarkSpan(bookmarkPosition);\n break;\n }\n }\n }\n\n private existSidePanel(sidePanelIdentificator: string): boolean {\n var sidePanel = document.getElementById(sidePanelIdentificator);\n return ($(sidePanel).length > 0 && sidePanel != null);\n }\n\n private loadSidePanel(sidePanel) {\n var bodyContainerDiv = $(\".reader-body-container\");\n $(sidePanel).hide();\n $(bodyContainerDiv).prepend(sidePanel);\n }\n\n changeSidePanelVisibility(sidePanelIdentificator: string, slideDirection: string) {\n var sidePanel = document.getElementById(sidePanelIdentificator);\n if ($(sidePanel).is(\":visible\")) {\n if ($(sidePanel).hasClass(\"ui-draggable\")) {\n $(sidePanel).hide();\n } else {\n if (slideDirection) {\n $(sidePanel).hide(\"slide\", { direction: slideDirection });\n } else {\n $(sidePanel).hide();\n }\n }\n } else {\n if ($(sidePanel).hasClass(\"windowed\")) {\n var panelInstance = this.findPanelInstanceById(sidePanelIdentificator);\n panelInstance.childwindow.focus();\n }\n else if ($(sidePanel).hasClass(\"ui-draggable\")) {\n $(sidePanel).show();\n } else {\n if (slideDirection) {\n $(sidePanel).show(\"slide\", { direction: slideDirection });\n } else {\n $(sidePanel).css(\"display\", \"\");\n }\n }\n }\n }\n\n findPanelInstanceById(panelIdentificator: string): SidePanelOld {\n for (var k = 0; k < this.leftSidePanels.length; k++) {\n if (this.leftSidePanels[k].identificator === panelIdentificator) {\n return this.leftSidePanels[k];\n }\n }\n\n for (var k = 0; k < this.rightSidePanels.length; k++) {\n if (this.rightSidePanels[k].identificator === panelIdentificator) {\n return this.rightSidePanels[k];\n }\n }\n\n return null;\n }\n\n private makeReaderBody(): HTMLDivElement {\n var bodyContainerDiv: HTMLDivElement = document.createElement(\"div\");\n $(bodyContainerDiv).addClass(\"reader-body-container content-container\");\n\n var textPanel: TextPanelOld = null;\n if (this.showPanelList.indexOf(ReaderPanelEnum.TextPanel) >= 0) {\n textPanel = this.appendTextPanel(bodyContainerDiv);\n }\n\n if (this.showPanelList.indexOf(ReaderPanelEnum.ImagePanel) >= 0) {\n var imagePanel: ImagePanelOld =this.appendImagePanel(bodyContainerDiv);\n\n if (textPanel !== null && this.showPanelList.indexOf(ReaderPanelEnum.TextPanel) >= 0) {\n this.hasBookPage(this.bookId, this.versionId, null, () => {\n $(textPanel.panelHtml).hide();\n $(imagePanel.panelHtml).show();\n });\n\n this.hasBookImage(this.bookId, this.versionId, null, () => {\n imagePanel.isDisabled = true;\n });\n }\n }\n\n return bodyContainerDiv;\n }\n\n protected appendTextPanel(bodyContainerDiv: HTMLDivElement): TextPanelOld {\n var textPanel: TextPanelOld = new TextPanelOld(this.textPanelIdentificator, this, this.showMainPanelsButtonList);\n this.rightSidePanels.push(textPanel);\n this.textPanel = textPanel;\n\n bodyContainerDiv.appendChild(textPanel.panelHtml);\n\n return textPanel;\n }\n \n protected appendImagePanel(bodyContainerDiv: HTMLDivElement): ImagePanelOld {\n var imagePanel: ImagePanelOld = new ImagePanelOld(this.imagePanelIdentificator, this, this.showMainPanelsButtonList);\n this.rightSidePanels.push(imagePanel);\n this.imagePanel = imagePanel;\n\n if (this.showPanelList.indexOf(ReaderPanelEnum.TextPanel) >= 0) { //Text panel is higher priority\n $(imagePanel.panelHtml).hide();\n }\n\n bodyContainerDiv.appendChild(imagePanel.panelHtml);\n\n return imagePanel;\n }\n\n notifyPanelsMovePage(pageIndex: number, scrollTo: boolean) {\n for (var k = 0; k < this.leftSidePanels.length; k++) {\n this.leftSidePanels[k].onMoveToPage(pageIndex, scrollTo);\n }\n\n for (var k = 0; k < this.rightSidePanels.length; k++) {\n this.rightSidePanels[k].onMoveToPage(pageIndex, scrollTo);\n }\n }\n \n actualizeSlider(pageIndex: number) {\n var slider = $(this.readerContainer).find(\".slider\");\n $(slider).slider().slider(\"value\", pageIndex);\n $(slider).find(\".ui-slider-handle\").find(\".tooltip-inner\").html(localization.translate(\"Page:\", \"PluginsJs\").value + this.pages[pageIndex].text);\n }\n \n private createBookmarkSpan(pageIndex: number, pageName: string, pageId: number, title: string, tooltipTitle: string|(()=>string), favoriteLabel: IFavoriteLabel) {\n var positionStep = 100 / (this.pages.length - 1);\n var bookmarkSpan = document.createElement(\"span\");\n var $bookmarkSpan = $(bookmarkSpan);\n\n $bookmarkSpan.addClass(\"glyphicon glyphicon-bookmark bookmark\");\n $bookmarkSpan.data(\"page-index\", pageIndex);\n $bookmarkSpan.data(\"page-name\", pageName);\n $bookmarkSpan.data(\"page-xmlId\", pageId);\n $bookmarkSpan.data(\"title\", title);\n\n $bookmarkSpan.click(() => {\n this.moveToPage(pageId, true);\n });\n\n if (favoriteLabel) {\n $bookmarkSpan.css(\"color\", favoriteLabel.color);\n $bookmarkSpan.data(\"label-id\", favoriteLabel.id);\n $bookmarkSpan.data(\"label-name\", favoriteLabel.name);\n $bookmarkSpan.data(\"label-color\", favoriteLabel.color);\n }\n\n var tooltipOptions: TooltipOptions = {\n placement: \"bottom\",\n title: tooltipTitle\n };\n $bookmarkSpan.tooltip(tooltipOptions);\n\n var computedPosition = (positionStep * pageIndex);\n $bookmarkSpan.css(\"left\", computedPosition + \"%\");\n\n return bookmarkSpan;\n }\n\n createSingleBookmarkSpan(pageIndex: number, pageName: string, pageId: number, title: string, favoriteLabel: IFavoriteLabel): HTMLSpanElement {\n var tooltipTitle = function() {\n var bookmarkTitle = $(this).data(\"title\");\n return favoriteLabel\n ? localization.translateFormat(\"Label\", new Array(bookmarkTitle, favoriteLabel.name))\n : bookmarkTitle;\n };\n\n var bookmarkSpan = this.createBookmarkSpan(pageIndex, pageName, pageId, title, tooltipTitle, favoriteLabel);\n return bookmarkSpan;\n }\n\n createMultipleBookmarkSpan(pageIndex: number, pageName: string, pageId: number, labelCount: number): HTMLSpanElement {\n var favoriteLabel: IFavoriteLabel = {\n id: 0,\n name: \"\",\n isDefault: false,\n color: \"#000000\",\n lastUseTime: null\n };\n\n var tooltipTitle: string;\n if (labelCount > 4 || labelCount < 1) {\n tooltipTitle = labelCount + localization.translate(\"BookmarksGt4\", \"PluginsJs\").value;\n } else if (labelCount > 1) {\n tooltipTitle = labelCount + localization.translate(\"BookmarksLt4\", \"PluginsJs\").value;\n } else {\n tooltipTitle = \"1\" + localization.translate(\"Bookmark\", \"PluginsJs\").value;\n }\n\n var bookmarkSpan = this.createBookmarkSpan(pageIndex, pageName, pageId, \"\", tooltipTitle, favoriteLabel);\n var $bookmarkSpan = $(bookmarkSpan);\n $bookmarkSpan.addClass(\"bookmark-multiple\");\n\n if (labelCount >= 2 && labelCount < 10) {\n $bookmarkSpan.addClass(\"bookmark-content-\" + labelCount);\n } else if (labelCount >= 10) {\n $bookmarkSpan.addClass(\"bookmark-content-9plus\");\n }\n \n return bookmarkSpan;\n }\n \n showBookmark(bookmarkHtml: HTMLSpanElement) {\n $(this.readerContainer).find(\".slider\").append(bookmarkHtml).promise();\n }\n\n recreateAndShowBookmarkSpan(bookmarkPosition: IBookmarkPosition) {\n var pageIndex = bookmarkPosition.pageIndex;\n var actualPage = this.pages[pageIndex];\n\n $(bookmarkPosition.bookmarkSpan).remove();\n \n if (bookmarkPosition.bookmarks.length > 1) {\n bookmarkPosition.bookmarkSpan = this.createMultipleBookmarkSpan(pageIndex, actualPage.text, actualPage.pageId, bookmarkPosition.bookmarks.length);\n $(bookmarkPosition.bookmarkSpan).data(\"favorite-id\", 0);\n } else if (bookmarkPosition.bookmarks.length === 1) {\n let actualBookmark = bookmarkPosition.bookmarks[0];\n bookmarkPosition.bookmarkSpan = this.createSingleBookmarkSpan(pageIndex, actualPage.text, actualPage.pageId, actualBookmark.title, actualBookmark.favoriteLabel);\n $(bookmarkPosition.bookmarkSpan).data(\"favorite-id\", actualBookmark.id);\n } else {\n bookmarkPosition.bookmarkSpan = null;\n }\n\n if (bookmarkPosition.bookmarkSpan) {\n this.showBookmark(bookmarkPosition.bookmarkSpan);\n }\n }\n\n getBookmarks(): IBookmarksInfo {\n var result: IBookmarksInfo = {\n positions: new Array(),\n totalCount: 0\n };\n\n for (var i = 0; i < this.bookmarks.length; i++) {\n var bookmarkPosition = this.bookmarks[i];\n if (bookmarkPosition && bookmarkPosition.bookmarks.length > 0) {\n result.positions.push(bookmarkPosition);\n result.totalCount += bookmarkPosition.bookmarks.length;\n }\n }\n\n return result;\n }\n \n createBookmarks(data: INewFavoriteItemData) {\n if (data.labels.length === 0) {\n // TODO possible create default label\n return;\n }\n\n var pageIndex: number = this.actualPageIndex;\n var page: BookPage = this.pages[pageIndex];\n var bookmarkPosition: IBookmarkPosition = this.bookmarks[pageIndex];\n\n if (!bookmarkPosition) {\n bookmarkPosition = {\n bookmarks: new Array(),\n bookmarkSpan: null,\n pageIndex: pageIndex\n };\n this.bookmarks[pageIndex] = bookmarkPosition;\n }\n\n var newBookmarks = new Array();\n var labelIds = new Array();\n for (let i = 0; i < data.labels.length; i++) {\n var labelItem = data.labels[i];\n var favoriteLabel: IFavoriteLabel = {\n id: labelItem.labelId,\n name: labelItem.labelName,\n color: labelItem.labelColor,\n isDefault: false,\n lastUseTime: null\n }\n var bookPageBookmark: IBookPageBookmark = {\n id: 0,\n favoriteLabel: favoriteLabel,\n pageId: page.pageId,\n title: data.itemName\n };\n\n newBookmarks.push(bookPageBookmark);\n bookmarkPosition.bookmarks.push(bookPageBookmark);\n labelIds.push(labelItem.labelId);\n }\n \n $(bookmarkPosition.bookmarkSpan).remove();\n \n if (bookmarkPosition.bookmarks.length > 1) {\n bookmarkPosition.bookmarkSpan = this.createMultipleBookmarkSpan(pageIndex, page.text, page.pageId, bookmarkPosition.bookmarks.length);\n } else {\n bookmarkPosition.bookmarkSpan = this.createSingleBookmarkSpan(pageIndex, page.text, page.pageId, data.itemName, bookmarkPosition.bookmarks[0].favoriteLabel);\n }\n \n const postShowAction = () => {\n const $bookmarksContainer = $(\".reader-bookmarks-container\");\n if (this.bookmarksPanel !== undefined && $bookmarksContainer.length > 0) {\n this.bookmarksPanel.createBookmarkList(\n $bookmarksContainer.parent().get(0) as Node as HTMLElement,\n this.bookmarksPanel\n );\n }\n };\n\n this.favoriteManager.createPageBookmark(Number(this.bookId), page.pageId, data.itemName, labelIds, (ids, error) => {\n if (error) {\n this.newFavoriteDialog.showError(localization.translate(\"CreatingBookmarkError\", \"PluginsJs\").value);\n return;\n }\n\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n var bookmark = newBookmarks[i];\n bookmark.id = id;\n\n }\n this.newFavoriteDialog.hide();\n this.showBookmark(bookmarkPosition.bookmarkSpan);\n postShowAction();\n });\n }\n\n setBookmarkTitle(bookmarkId: number, pageIndex: number, title: string) {\n var bookmarkPosition = this.bookmarks[pageIndex];\n var bookmark: IBookPageBookmark = null;\n for (let i = 0; i < bookmarkPosition.bookmarks.length; i++) {\n var bookmarkItem = bookmarkPosition.bookmarks[i];\n if (bookmarkItem.id === bookmarkId) {\n bookmark = bookmarkItem;\n break;\n }\n }\n\n if (!bookmark || bookmark.title === title) {\n return;\n }\n\n bookmark.title = title;\n if (bookmarkPosition.bookmarks.length === 1) {\n $(bookmarkPosition.bookmarkSpan).data(\"title\", title);\n }\n \n this.favoriteManager.updateFavoriteItem(bookmarkId, title, () => { });\n }\n \n public persistRemoveBookmark(pageIndex: number, bookmarkId: number) {\n const postRemoveAction = () => {\n const $bookmarksContainer = $(\".reader-bookmarks-container\");\n if (this.bookmarksPanel !== undefined && $bookmarksContainer.length > 0) {\n this.bookmarksPanel.createBookmarkList(\n $bookmarksContainer.parent().get(0) as Node as HTMLElement,\n this.bookmarksPanel\n );\n }\n };\n\n this.favoriteManager.deleteFavoriteItem(bookmarkId, () => {\n var bookmarkPosition = this.bookmarks[pageIndex];\n var indexToRemove: number;\n for (indexToRemove = 0; indexToRemove < bookmarkPosition.bookmarks.length; indexToRemove++) {\n if (bookmarkPosition.bookmarks[indexToRemove].id === bookmarkId) {\n bookmarkPosition.bookmarks.splice(indexToRemove, 1);\n break;\n }\n }\n\n this.recreateAndShowBookmarkSpan(bookmarkPosition);\n postRemoveAction();\n });\n }\n\n repaint() {//no usages found\n for (var i = 0; i < this.leftSidePanels.length; i++) {\n if ($(this.leftSidePanels[i].panelHtml).is(\":visible\")) {\n $(this.leftSidePanels[i].panelHtml).hide();\n $(this.leftSidePanels[i].panelHtml).show();\n }\n }\n\n for (var i = 0; i < this.rightSidePanels.length; i++) {\n if ($(this.rightSidePanels[i].panelHtml).is(\":visible\")) {\n $(this.rightSidePanels[i].panelHtml).hide();\n $(this.rightSidePanels[i].panelHtml).show();\n }\n }\n }\n\n setRightPanelsLayout() {\n var rightPanels = this.rightSidePanels;\n var pinnedPanelsCount = 0;\n for (var i = 0; i < rightPanels.length; i++) {\n var panel = rightPanels[i].panelHtml;\n if ($(panel).is(\":visible\") && !$(panel).hasClass(\"ui-draggable\")) {\n ++pinnedPanelsCount;\n }\n }\n\n if (pinnedPanelsCount > 1) {\n $(\".reader-body-container\").addClass(\"both-pinned\");\n var leftPanels = this.leftSidePanels;\n for (var i = 0; i < leftPanels.length; i++) {\n var leftPanel = leftPanels[i];\n if (!leftPanel.isDraggable) {\n leftPanel.pinButton.click();\n }\n }\n\n } else {\n $(\".reader-body-container\").removeClass(\"both-pinned\");\n }\n }\n\n populatePanelOnTop(panel: SidePanelOld) {\n if (!panel.isDraggable) {\n return;\n }\n\n var max: number = 0;\n var leftPanels = this.leftSidePanels;\n for (var i = 0; i < leftPanels.length; i++) {\n var leftPanel = leftPanels[i];\n var zIndex = parseInt($(leftPanel.panelHtml).css(\"z-index\"));\n if (zIndex > max) {\n max = zIndex;\n }\n }\n\n var rightPanels = this.rightSidePanels;\n for (var i = 0; i < rightPanels.length; i++) {\n var rightPanel = rightPanels[i];\n var zIndex = parseInt($(rightPanel.panelHtml).css(\"z-index\"));\n if (zIndex > max) {\n max = zIndex;\n }\n }\n\n $(panel.panelHtml).css(\"z-index\", max + 1);\n }\n\n //******** Reader search panel start ************\n \n showSearchInPanel(searchResults: Array) {\n this.getSearchPanel().showResults(searchResults);\n }\n\n setResultsPaging(itemsCount: number, pageChangedCallback: (pageNumner: number) => void) {\n this.getSearchPanel().createPagination(pageChangedCallback, itemsCount);\n }\n\n getSearchResultsCountOnPage(): number {\n return this.getSearchPanel().getResultsCountOnPage();\n }\n\n private getSearchPanel(): SearchResultPanelOld {\n var panelId = this.searchPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var searchPanel = new SearchResultPanelOld(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(searchPanel.panelHtml);\n this.leftSidePanels.push(searchPanel);\n this.searchPanel = searchPanel;\n }\n\n return this.searchPanel;\n }\n\n showSearchResultInPages(searchQuery: string, isQueryJson: boolean, pages: Array) {\n this.textPanel.setSearchedQuery(searchQuery, isQueryJson);\n $(\".search-unloaded\").removeClass(\".search-unloaded\");\n var previousSearchPages = $(\".search-loaded\");\n $(previousSearchPages).removeClass(\".search-loaded\");\n $(previousSearchPages).addClass(\"unloaded\");\n for (var i = 0; i < pages.length; i++) {\n var page = pages[i];\n var pageDiv = document.getElementById(page.id.toString());\n $(pageDiv).addClass(\"search-unloaded\");\n }\n this.moveToPageNumber(this.actualPageIndex, true);\n }\n\n searchPanelShowLoading() {\n this.getSearchPanel().showLoading();\n\n }\n\n searchPanelRemoveLoading() {\n this.getSearchPanel().clearLoading();\n }\n\n searchPanelClearResults() {\n this.getSearchPanel().clearResults();\n }\n\n //******** Reader search panel end ************\n\n\n //******** Reader terms search panel start ************\n\n showSearchInTermsPanel(searchResults: Array) {\n this.getTermsPanel().showResults(searchResults);\n }\n\n private getTermsPanel(): TermsPanelOld {\n var panelId = this.termsPanelIdentificator;\n if (!this.existSidePanel(panelId)) {\n var termPanel = new TermsPanelOld(panelId, this, this.showLeftSidePanelsButtonList);\n this.loadSidePanel(termPanel.panelHtml);\n this.leftSidePanels.push(termPanel);\n this.termsPanel = termPanel;\n }\n\n return this.termsPanel;\n }\n\n setTermPanelCallback(callback: (termId: number, text: string) => void) {\n this.getTermsPanel().setTermClickedCallback(callback);\n }\n\n termsPanelShowLoading() {\n this.getTermsPanel().showLoading();\n\n }\n\n termsPanelRemoveLoading() {\n this.getTermsPanel().clearLoading();\n }\n\n termsPanelClearResults() {\n this.getTermsPanel().clearResults();\n }\n\n //******** Reader terms search panel end ************\n \n}\n\n\nclass SidePanelOld {\n panelHtml: HTMLDivElement;\n panelBodyHtml: HTMLDivElement;\n closeButton: HTMLButtonElement;\n pinButton: HTMLButtonElement;\n newWindowButton: HTMLButtonElement;\n identificator: string;\n headerName: string;\n innerContent: HTMLElement;\n parentReader: ReaderModule;\n windowBody: HTMLDivElement;\n childwindow: Window;\n isDraggable: boolean;\n documentWindow: Window;\n\n protected panelHeaderDiv: HTMLDivElement;\n\n public constructor(identificator: string, headerName: string, parentReader: ReaderModule, showPanelButtonList: Array) {\n this.parentReader = parentReader;\n this.identificator = identificator;\n this.headerName = headerName;\n this.isDraggable = false;\n var sidePanelDiv: HTMLDivElement = document.createElement(\"div\");\n sidePanelDiv.id = identificator;\n this.decorateSidePanel(sidePanelDiv);\n\n this.panelHeaderDiv = document.createElement(\"div\");\n this.panelHeaderDiv.classList.add(\"reader-left-panel-header\");\n\n var nameSpan = document.createElement(\"span\");\n $(nameSpan).addClass(\"panel-header-name\");\n nameSpan.innerHTML=headerName;\n this.panelHeaderDiv.appendChild(nameSpan);\n\n if (showPanelButtonList.indexOf(PanelButtonEnum.Close) >= 0) {\n var sidePanelCloseButton = document.createElement(\"button\");\n $(sidePanelCloseButton).addClass(\"close-button\");\n $(sidePanelCloseButton).click((event: JQuery.Event) => {\n this.onCloseButtonClick(sidePanelDiv);\n });\n\n var closeSpan = document.createElement(\"span\");\n $(closeSpan).addClass(\"glyphicon glyphicon-remove\");\n $(sidePanelCloseButton).append(closeSpan);\n\n this.closeButton = sidePanelCloseButton;\n\n this.panelHeaderDiv.appendChild(sidePanelCloseButton);\n }\n\n if(showPanelButtonList.indexOf(PanelButtonEnum.Pin) >= 0)\n {\n var panelPinButton = document.createElement(\"button\");\n $(panelPinButton).addClass(\"pin-button\");\n $(panelPinButton).click((event: JQuery.Event) => {\n this.onPinButtonClick(sidePanelDiv);\n });\n\n var pinSpan = document.createElement(\"span\");\n $(pinSpan).addClass(\"glyphicon glyphicon-pushpin\");\n $(panelPinButton).append(pinSpan);\n\n this.pinButton = panelPinButton;\n\n this.panelHeaderDiv.appendChild(panelPinButton); \n }\n\n if (showPanelButtonList.indexOf(PanelButtonEnum.ToNewWindow) >= 0) {\n var newWindowButton = document.createElement(\"button\");\n $(newWindowButton).addClass(\"new-window-button\");\n $(newWindowButton).click((event: JQuery.Event) => {\n this.onNewWindowButtonClick(sidePanelDiv);\n });\n\n var windowSpan = document.createElement(\"span\");\n $(windowSpan).addClass(\"glyphicon glyphicon-new-window\");\n newWindowButton.appendChild(windowSpan);\n\n this.newWindowButton = newWindowButton;\n\n this.panelHeaderDiv.appendChild(newWindowButton);\n }\n\n //sidePanelDiv.appendChild(this.panelHeaderDiv);\n\n this.innerContent = this.makeBody(this, window);\n var panelBodyDiv = this.makePanelBody(this.innerContent, this, window);\n \n sidePanelDiv.appendChild(panelBodyDiv);\n\n $(sidePanelDiv).mousedown((event: JQuery.Event) => {\n this.parentReader.populatePanelOnTop(this);\n });\n\n this.panelHtml = sidePanelDiv;\n this.panelBodyHtml = panelBodyDiv;\n\n\n }\n\n protected makePanelBody(innerContent, rootReference, window: Window): HTMLDivElement {\n var panelBodyDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(panelBodyDiv).addClass(\"reader-left-panel-body\");\n panelBodyDiv.appendChild(innerContent);\n return panelBodyDiv;\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n throw new Error(\"Not implemented\");\n }\n\n public onMoveToPage(pageIndex: number, scrollTo: boolean) {\n }\n\n protected placeOnDragStartPosition(sidePanelDiv: HTMLDivElement) {\n var dispersion = Math.floor((Math.random() * 15) + 1) * 3;\n $(sidePanelDiv).css(\"top\", 135 + dispersion); //TODO kick out magic number\n $(sidePanelDiv).css(\"left\", dispersion);\n }\n\n protected setRightPanelsLayout(sidePanelDiv: HTMLDivElement) {\n this.parentReader.setRightPanelsLayout();\n }\n\n makePanelWindow(documentWindow: Window): HTMLDivElement {\n return this.makePanelBody($(this.innerContent).clone(true), this, window);\n }\n\n decorateSidePanel(htmlDivElement: HTMLDivElement) { throw new Error(\"Not implemented\"); }\n\n onNewWindowButtonClick(sidePanelDiv: HTMLDivElement) {\n this.closeButton.click();\n var newWindow = window.open(\"//\" + document.domain, \"_blank\", \"width=400,height=600,resizable=yes\");\n newWindow.document.open();\n newWindow.document.close();\n\n $(newWindow.document.documentElement).on(\"beforeunload\", (event: JQuery.Event) => {\n this.onUnloadWindowMode();\n });\n\n $(newWindow.document.getElementsByTagName(\"head\")[0]).append($(\"script\").clone(true));\n $(newWindow.document.getElementsByTagName(\"head\")[0]).append($(\"link\").clone(true));\n\n var panelWindow = this.makePanelWindow(newWindow);\n\n $(newWindow.document.getElementsByTagName(\"body\")[0]).append(panelWindow);\n $(newWindow.document.getElementsByTagName(\"body\")[0]).css(\"padding\", 0);\n $(newWindow.document.getElementsByTagName(\"body\")[0]).css(\"background-color\", \"white\");\n newWindow.document.title = this.headerName;\n $(document.getElementById(this.identificator)).addClass(\"windowed\");\n this.windowBody = panelWindow;\n this.childwindow = newWindow;\n }\n\n onUnloadWindowMode() {\n $(document.getElementById(this.identificator)).removeClass(\"windowed\");\n $(this.windowBody).val(\"\");\n $(this.childwindow.document.documentElement).val(\"\");\n }\n\n onPinButtonClick(sidePanelDiv: HTMLDivElement) { throw new Error(\"Not implemented\"); }\n\n onCloseButtonClick(sidePanelDiv: HTMLDivElement) { throw new Error(\"Not implemented\"); }\n}\n\n\nclass LeftSidePanel extends SidePanelOld {\n decorateSidePanel(sidePanelDiv: HTMLDivElement) {\n $(sidePanelDiv).addClass(\"reader-left-panel\");\n \n }\n\n onPinButtonClick(sidePanelDiv: HTMLDivElement) {\n if ($(sidePanelDiv).data(\"ui-draggable\")) {\n $(sidePanelDiv).draggable(\"destroy\");\n $(sidePanelDiv).css(\"top\", \"\");\n $(sidePanelDiv).css(\"left\", \"\");\n $(sidePanelDiv).css(\"width\", \"\");\n $(sidePanelDiv).css(\"height\", \"\");\n $(sidePanelDiv).resizable(\"destroy\");\n $(sidePanelDiv).resizable({ handles: \"e\", maxWidth: 250, minWidth: 100 });\n this.isDraggable = false;\n $(sidePanelDiv).css(\"z-index\", 9999);\n\n } else {\n $(sidePanelDiv).draggable({ containment: \"body\", appendTo: \"body\", cursor: \"move\" });\n $(sidePanelDiv).resizable(\"destroy\");\n $(sidePanelDiv).resizable({ handles: \"all\", minWidth: 100 });\n this.placeOnDragStartPosition(sidePanelDiv);\n this.isDraggable = true;\n this.parentReader.populatePanelOnTop(this);\n }\n\n this.setRightPanelsLayout(sidePanelDiv);\n }\n\n onCloseButtonClick(sidePanelDiv: HTMLDivElement) {\n if ($(sidePanelDiv).data(\"ui-draggable\")) {\n $(sidePanelDiv).hide();\n } else {\n $(sidePanelDiv).hide(\"slide\", { direction: \"left\" });\n }\n }\n}\n\nclass SettingsPanel extends LeftSidePanel {\n\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"View\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var textButtonSpan = window.document.createElement(\"span\");\n $(textButtonSpan).addClass(\"glyphicon glyphicon-text-size\");\n var textButton = window.document.createElement(\"button\");\n var $textButton = $(textButton);\n $textButton.addClass(\"reader-settings-button\");\n $textButton.append(textButtonSpan);\n\n $(textButton).click((event: JQuery.Event) => {\n rootReference.parentReader.changeSidePanelVisibility(rootReference.parentReader.textPanelIdentificator, \"\");\n rootReference.parentReader.setRightPanelsLayout();\n });\n\n var imageButtonSpan = window.document.createElement(\"span\");\n $(imageButtonSpan).addClass(\"glyphicon glyphicon-picture\");\n var imageButton = window.document.createElement(\"button\");\n var $imageButton = $(imageButton);\n $imageButton.addClass(\"reader-settings-button\");\n $imageButton.append(imageButtonSpan);\n\n $(imageButton).click((event: JQuery.Event) => {\n rootReference.parentReader.changeSidePanelVisibility(rootReference.parentReader.imagePanelIdentificator, \"\");\n rootReference.parentReader.setRightPanelsLayout();\n });\n\n var buttonsDiv = window.document.createElement(\"div\");\n $(buttonsDiv).addClass(\"reader-settings-buttons-area\");\n \n buttonsDiv.appendChild(textButton);\n buttonsDiv.appendChild(imageButton);\n \n var checkboxesDiv = window.document.createElement(\"div\");\n $(checkboxesDiv).addClass(\"reader-settings-checkboxes-area\");\n\n var showPageCheckboxDiv: HTMLDivElement = window.document.createElement(\"div\");\n var showPageNameCheckbox: HTMLInputElement = window.document.createElement(\"input\");\n showPageNameCheckbox.type = \"checkbox\";\n\n $(showPageNameCheckbox).change((eventData) => {\n var readerText:JQuery = $(\"#\" + this.parentReader.textPanelIdentificator).find(\".reader-text\");\n var currentTarget: HTMLInputElement = (eventData.currentTarget as Node as HTMLElement);\n if (currentTarget.checked) {\n readerText.addClass(\"reader-text-show-page-names\");\n } else {\n readerText.removeClass(\"reader-text-show-page-names\");\n }\n });\n\n var showPageNameLabel: HTMLLabelElement = window.document.createElement(\"label\");\n showPageNameLabel.innerHTML = localization.translate(\"ViewPagination\", \"PluginsJs\").value;\n showPageCheckboxDiv.appendChild(showPageNameCheckbox);\n showPageCheckboxDiv.appendChild(showPageNameLabel);\n showPageNameCheckbox.id = \"checkbox-show-page-numbers\";\n showPageNameLabel.setAttribute(\"for\", showPageNameCheckbox.id);\n\n var showPageOnNewLineDiv: HTMLDivElement = window.document.createElement(\"div\");\n var showPageOnNewLineCheckbox: HTMLInputElement = window.document.createElement(\"input\");\n showPageOnNewLineCheckbox.type = \"checkbox\";\n\n $(showPageOnNewLineCheckbox).change((eventData) => {\n var readerText = $(\"#\" + this.parentReader.textPanelIdentificator).find(\".reader-text\");\n var currentTarget: HTMLInputElement = (eventData.currentTarget as Node as HTMLElement);\n if (currentTarget.checked) {\n $(readerText).addClass(\"reader-text-page-new-line\");\n } else {\n $(readerText).removeClass(\"reader-text-page-new-line\");\n }\n });\n\n var showPageOnNewLineLabel: HTMLLabelElement = window.document.createElement(\"label\");\n showPageOnNewLineLabel.innerHTML = localization.translate(\"WrapPages\", \"PluginsJs\").value;\n showPageOnNewLineDiv.appendChild(showPageOnNewLineCheckbox);\n showPageOnNewLineDiv.appendChild(showPageOnNewLineLabel);\n showPageOnNewLineCheckbox.id = \"checkbox-page-breaks\";\n showPageOnNewLineLabel.setAttribute(\"for\", showPageOnNewLineCheckbox.id);\n\n var showCommentCheckboxDiv: HTMLDivElement = window.document.createElement(\"div\");\n var showCommentCheckbox: HTMLInputElement = window.document.createElement(\"input\");\n showCommentCheckbox.type = \"checkbox\";\n\n $(showCommentCheckbox).change((eventData) => {\n var readerText = $(\"#\" + this.parentReader.textPanelIdentificator).find(\".reader-text\");\n var currentTarget: HTMLInputElement = (eventData.currentTarget as Node as HTMLElement);\n if (currentTarget.checked) {\n $(readerText).addClass(\"show-notes\");\n } else {\n $(readerText).removeClass(\"show-notes\");\n }\n });\n\n var showCommentLabel: HTMLLabelElement = window.document.createElement(\"label\");\n showCommentLabel.innerHTML = localization.translate(\"ViewComments\", \"PluginsJs\").value;\n showCommentCheckboxDiv.appendChild(showCommentCheckbox);\n showCommentCheckboxDiv.appendChild(showCommentLabel);\n showCommentCheckbox.id = \"checkbox-show-comment\";\n showCommentLabel.setAttribute(\"for\",showCommentCheckbox.id);\n\n rootReference.parentReader.hasBookPage(rootReference.parentReader.bookId, rootReference.parentReader.versionId, null, () => {\n textButton.disabled = true;\n showPageNameCheckbox.disabled = true;\n showPageOnNewLineCheckbox.disabled = true;\n showCommentCheckbox.disabled = true;\n });\n rootReference.parentReader.hasBookImage(rootReference.parentReader.bookId, rootReference.parentReader.versionId, null, () => {\n imageButton.disabled = true;\n });\n\n checkboxesDiv.appendChild(showPageCheckboxDiv);\n checkboxesDiv.appendChild(showPageOnNewLineDiv);\n checkboxesDiv.appendChild(showCommentCheckboxDiv);\n var innerContent: HTMLDivElement = window.document.createElement(\"div\");\n var displaySettingsHead = document.createElement(\"h2\");\n displaySettingsHead.innerHTML = localization.translate(\"ViewOptions\", \"PluginsJs\").value;\n displaySettingsHead.classList.add(\"reader-view-head\");\n innerContent.appendChild(displaySettingsHead);\n\n innerContent.appendChild(buttonsDiv);\n innerContent.appendChild(checkboxesDiv);\n\n return innerContent;\n }\n}\n\nclass BookmarksPanelOld extends LeftSidePanel {\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"Bookmarks\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var innerContent: HTMLDivElement = window.document.createElement(\"div\");\n this.createBookmarkList(innerContent, rootReference);\n return innerContent;\n }\n\n public createBookmarkList(\n innerContent: HTMLElement,\n rootReference: SidePanelOld\n ) {\n const bookmarksPerPage = 20;\n const actualBookmarkPage = 1;\n\n const $bookmarksContainer = $(innerContent).children(\".reader-bookmarks-container\");\n let bookmarksContainer: HTMLDivElement;\n\n if ($(innerContent).children(\".reader-bookmarks-container\").length == 0) {\n bookmarksContainer = document.createElement(\"div\");\n bookmarksContainer.classList.add(\"reader-bookmarks-container\");\n innerContent.appendChild(bookmarksContainer);\n }\n else {\n $bookmarksContainer.empty();\n bookmarksContainer = $bookmarksContainer.get(0) as Node as HTMLDivElement;\n }\n\n var bookmarksHead = document.createElement(\"h2\");\n bookmarksHead.innerHTML = localization.translate(\"AllBookmarks\", \"PluginsJs\").value;\n bookmarksHead.classList.add(\"reader-bookmarks-head\");\n bookmarksContainer.appendChild(bookmarksHead);\n\n var bookmarksContent = document.createElement(\"div\");\n bookmarksContent.classList.add(\"reader-bookmarks-content\");\n bookmarksContainer.appendChild(bookmarksContent);\n\n var bookmarks = rootReference.parentReader.getBookmarks();\n\n var pageInContainer: Array = [];\n var pagesContainer: HTMLDivElement = document.createElement(\"div\");\n bookmarksContent.appendChild(pagesContainer);\n\n var paginationContainer: HTMLDivElement = document.createElement(\"div\");\n paginationContainer.classList.add(\"reader-bookmarks-pagination\");\n bookmarksContent.appendChild(paginationContainer);\n\n for (let i = 0; i < Math.ceil(bookmarks.totalCount / bookmarksPerPage); i++) {\n pageInContainer[i] = document.createElement(\"ul\");\n pageInContainer[i].classList.add(\"reader-bookmarks-content-list\");\n pageInContainer[i].setAttribute(\"data-page-index\", (i + 1).toString());\n if (i != actualBookmarkPage) {\n pageInContainer[i].classList.add(\"hide\");\n }\n\n pagesContainer.appendChild(pageInContainer[i]);\n }\n\n var currentIndex = 0;\n for (let i = 0; i < bookmarks.positions.length; i++) {\n var bookmarkPosition = bookmarks.positions[i];\n for (let j = 0; j < bookmarkPosition.bookmarks.length; j++) {\n var bookmark = bookmarkPosition.bookmarks[j];\n var bookmarkElement = this.createBookmark(bookmark, rootReference, bookmarkPosition.pageIndex);\n pageInContainer[Math.floor(currentIndex / bookmarksPerPage)].appendChild(bookmarkElement);\n currentIndex++;\n }\n }\n \n const paginator = new Pagination({\n container: paginationContainer,\n pageClickCallback: (pageNumber: number) => this.showBookmarkPage(pagesContainer, pageNumber),\n callPageClickCallbackOnInit: true\n });\n paginator.make(bookmarks.totalCount, bookmarksPerPage, actualBookmarkPage);\n \n $(\".pagination\", paginationContainer).addClass(\"pagination-extra-small\");\n }\n\n protected showBookmarkPage(pagesContainer: HTMLDivElement, page: number) {\n $(pagesContainer).children().addClass(\"hide\");\n $(pagesContainer).children(`[data-page-index=\"${page}\"]`).removeClass(\"hide\");\n }\n\n protected createBookmark(bookmark: IBookPageBookmark, rootReference: SidePanelOld, pageIndex: number) {\n const bookmarkItem = document.createElement(\"li\");\n bookmarkItem.classList.add(\"reader-bookmarks-content-item\");\n\n const bookmarkRemoveIco = document.createElement(\"a\");\n bookmarkRemoveIco.href = \"#\";\n bookmarkRemoveIco.classList.add(\"glyphicon\", \"glyphicon-trash\", \"bookmark-remote-ico\");\n bookmarkItem.appendChild(bookmarkRemoveIco);\n\n bookmarkRemoveIco.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n rootReference.parentReader.persistRemoveBookmark(pageIndex, bookmark.id);\n });\n\n const bookmarkIco = document.createElement(\"span\");\n bookmarkIco.classList.add(\"glyphicon\", \"glyphicon-bookmark\", \"bookmark-ico\");\n if (bookmark.favoriteLabel) {\n $(bookmarkIco).css(\"color\", bookmark.favoriteLabel.color);\n $(bookmarkIco).attr(\"title\", bookmark.favoriteLabel.name);\n }\n bookmarkItem.appendChild(bookmarkIco);\n\n const pageInfo = rootReference.parentReader.getPageByIndex(pageIndex);\n const page = document.createElement(\"a\");\n page.href = \"#\";\n page.innerHTML = pageInfo.text;\n page.classList.add(\"reader-bookmarks-content-item-page\");\n\n const actionHook = () => {\n var pageId = bookmark.pageId;\n rootReference.parentReader.moveToPage(pageId, true);\n };\n bookmarkIco.addEventListener(\"click\", actionHook);\n page.addEventListener(\"click\", actionHook);\n\n bookmarkItem.appendChild(page);\n bookmarkItem.appendChild(document.createTextNode(\" \"));\n\n const titleContainer = document.createElement(\"span\");\n titleContainer.classList.add(\"reader-bookmarks-content-item-title-container\");\n bookmarkItem.appendChild(titleContainer);\n\n const titleInput = document.createElement(\"input\");\n titleInput.classList.add(\"reader-bookmarks-content-item-title-input\", \"hide\");\n titleInput.value = bookmark.title;\n $(titleInput).attr(\"maxlength\", FavoriteManager.maxTitleLength);\n bookmarkItem.appendChild(titleInput);\n\n const title = document.createElement(\"span\");\n this.setBookmarkTitle(title, rootReference, bookmark.id, pageIndex, bookmark.title);\n title.classList.add(\"reader-bookmarks-content-item-title\");\n\n titleContainer.addEventListener(\"click\", () => {\n titleContainer.classList.add(\"hide\");\n titleInput.classList.remove(\"hide\");\n\n titleInput.focus();\n });\n const updateHook = () => {\n this.setBookmarkTitle(title, rootReference, bookmark.id, pageIndex, titleInput.value);\n\n titleInput.classList.add(\"hide\");\n titleContainer.classList.remove(\"hide\");\n };\n titleInput.addEventListener(\"blur\", updateHook);\n titleInput.addEventListener(\"keyup\", (e: KeyboardEvent) => {\n if (e.keyCode == 13) {\n updateHook();\n }\n });\n\n titleContainer.appendChild(title);\n titleContainer.appendChild(document.createTextNode(\" \"));\n\n const titleEdit = document.createElement(\"span\");\n titleEdit.classList.add(\"glyphicon\", \"glyphicon-pencil\", \"edit-button\");\n titleContainer.appendChild(titleEdit);\n\n return bookmarkItem;\n }\n \n protected setBookmarkTitle(titleItem: HTMLElement, rootReference: SidePanelOld, bookmarkId: number, pageIndex: number, title: string) {\n rootReference.parentReader.setBookmarkTitle(bookmarkId, pageIndex, title);\n\n if (!title) {\n //title = \"<bez názvu>\";\n title = localization.translateFormat(\"NoTitle\", new Array(\"<\", \">\")).value;\n }\n\n titleItem.innerHTML = title;\n }\n}\n\nclass SearchResultPanelOld extends LeftSidePanel {\n private searchResultItemsDiv: HTMLDivElement;\n private searchPagingDiv: HTMLDivElement;\n\n private paginator: Pagination;\n private paginatorOptions: Pagination.Options;\n private resultsOnPage;\n private maxPaginatorVisibleElements;\n\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"Search\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n }\n\n showLoading() {\n $(this.searchResultItemsDiv).addClass(\"loader\");\n\n }\n\n clearLoading() {\n $(this.searchResultItemsDiv).removeClass(\"loader\");\n }\n\n clearResults() {\n $(this.searchResultItemsDiv).empty();\n }\n\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var innerContent: HTMLDivElement = window.document.createElement(\"div\");\n\n var searchResultItemsDiv = window.document.createElement(\"div\");\n $(searchResultItemsDiv).addClass(\"reader-search-result-items-div\");\n this.searchResultItemsDiv = searchResultItemsDiv;\n\n var pagingDiv = window.document.createElement(\"div\");\n $(pagingDiv).addClass(\"reader-search-result-paging pagination-extra-small\");\n this.searchPagingDiv = pagingDiv;\n\n this.resultsOnPage = 8;\n this.maxPaginatorVisibleElements = 11;\n\n this.paginatorOptions = {\n container: this.searchPagingDiv,\n maxVisibleElements: this.maxPaginatorVisibleElements,\n callPageClickCallbackOnInit: true\n };\n this.paginator = new Pagination(this.paginatorOptions);\n\n innerContent.appendChild(this.searchPagingDiv);\n innerContent.appendChild(searchResultItemsDiv);\n\n return innerContent;\n }\n\n createPagination(pageChangedCallback: (pageNumber: number) => void, itemsCount: number) {\n this.paginatorOptions.pageClickCallback = pageChangedCallback;\n this.paginator.make(itemsCount, this.resultsOnPage);\n }\n\n getResultsCountOnPage(): number {\n return this.resultsOnPage;\n }\n\n showResults(searchResults: SearchHitResult[]) {\n $(this.searchResultItemsDiv).empty();\n for (var i = 0; i < searchResults.length; i++) {\n var result = searchResults[i];\n var resultItem = this.createResultItem(result);\n this.searchResultItemsDiv.appendChild(resultItem);\n }\n }\n\n private createResultItem(result: SearchHitResult): HTMLDivElement {\n var resultItemDiv = document.createElement(\"div\");\n $(resultItemDiv).addClass(\"reader-search-result-item\");\n $(resultItemDiv).click(() => {\n var pageId = Number(result.pageId);\n this.parentReader.moveToPage(pageId, true);\n });\n\n var pageNameSpan = document.createElement(\"span\");\n $(pageNameSpan).addClass(\"reader-search-result-name\");\n pageNameSpan.innerHTML = result.pageName;\n\n var resultBeforeSpan = document.createElement(\"span\");\n $(resultBeforeSpan).addClass(\"reader-search-result-before\");\n resultBeforeSpan.innerHTML = result.before;\n\n var resultMatchSpan = document.createElement(\"span\");\n $(resultMatchSpan).addClass(\"reader-search-result-match\");\n resultMatchSpan.innerHTML = result.match;\n\n var resultAfterSpan = document.createElement(\"span\");\n $(resultAfterSpan).addClass(\"reader-search-result-after\");\n resultAfterSpan.innerHTML = result.after;\n\n resultItemDiv.appendChild(pageNameSpan);\n resultItemDiv.appendChild(resultBeforeSpan);\n resultItemDiv.appendChild(resultMatchSpan);\n resultItemDiv.appendChild(resultAfterSpan);\n\n return resultItemDiv;\n }\n}\n\nclass ContentPanelOld extends LeftSidePanel {\n\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"Content\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var bodyDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(bodyDiv).addClass(\"content-panel-container\");\n this.downloadBookContent();\n return bodyDiv;\n }\n\n private downloadBookContent() {\n\n $(this.panelBodyHtml).empty();\n $(this.panelBodyHtml).addClass(\"loader\");\n\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: { bookId: this.parentReader.bookId } as JQuery.PlainObject,\n url: getBaseUrl() + \"Reader/GetBookContent\",\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response) => {\n var rootContentItems: IChapterHieararchyContract[] = response[\"content\"];\n var ulElement = document.createElement(\"ul\");\n $(ulElement).addClass(\"content-item-root-list\");\n for (var i = 0; i < rootContentItems.length; i++) {\n var chapterItem: IChapterHieararchyContract = rootContentItems[i];\n $(ulElement).append(this.makeContentItem(this.parseJsonItemToContentItem(chapterItem)));\n }\n\n $(this.panelBodyHtml).removeClass(\"loader\");\n $(this.panelBodyHtml).empty();\n $(this.panelBodyHtml).append(ulElement);\n\n this.innerContent = this.panelBodyHtml;\n\n if (typeof this.windowBody !== \"undefined\") {\n $(this.windowBody).empty();\n $(this.windowBody).append(ulElement);\n }\n },\n error: (response) => {\n $(this.panelBodyHtml).empty();\n $(this.panelBodyHtml).append(localization.translate(\"LoadingContentError\", \"PluginsJs\").value);\n }\n });\n }\n\n private parseJsonItemToContentItem(chapterItem: IChapterHieararchyContract): ContentItem {\n var pageItem = chapterItem.beginningPageId != null\n ? this.parentReader.pagesById[chapterItem.beginningPageId]\n : null;\n var pageItemText = pageItem != null ? pageItem.text : \"\";\n\n return new ContentItem(chapterItem.name, chapterItem.beginningPageId,\n pageItemText, chapterItem.subChapters);\n }\n\n private makeContentItemChilds(contentItem: ContentItem): HTMLUListElement {\n var childItems: IChapterHieararchyContract[] = contentItem.childBookContentItems;\n if (childItems.length === 0) return null;\n var ulElement = document.createElement(\"ul\");\n $(ulElement).addClass(\"content-item-list\");\n for (var i = 0; i < childItems.length; i++) {\n var jsonItem: IChapterHieararchyContract = childItems[i];\n $(ulElement).append(this.makeContentItem(this.parseJsonItemToContentItem(jsonItem)));\n }\n return ulElement;\n }\n\n private makeContentItem(contentItem: ContentItem): HTMLLIElement {\n var liElement = document.createElement(\"li\");\n $(liElement).addClass(\"content-item\");\n\n var hrefElement = document.createElement(\"a\");\n hrefElement.href = \"#\";\n $(hrefElement).click(() => {\n this.parentReader.moveToPage(contentItem.referredPageId, true);\n });\n\n\n var textSpanElement = document.createElement(\"span\");\n $(textSpanElement).addClass(\"content-item-text\");\n textSpanElement.innerHTML = contentItem.text;\n\n var pageNameSpanElement = document.createElement(\"span\");\n $(pageNameSpanElement).addClass(\"content-item-page-name\");\n pageNameSpanElement.innerHTML = \"[\" + contentItem.referredPageName + \"]\";\n\n $(hrefElement).append(pageNameSpanElement);\n $(hrefElement).append(textSpanElement);\n\n $(liElement).append(hrefElement);\n $(liElement).append(this.makeContentItemChilds(contentItem));\n return liElement;\n }\n}\n\n\nclass RightSidePanel extends SidePanelOld {\n decorateSidePanel(sidePanelDiv: HTMLDivElement) {\n $(sidePanelDiv).addClass(\"reader-right-panel\");\n }\n\n onPinButtonClick(sidePanelDiv: HTMLDivElement) {\n if ($(sidePanelDiv).data(\"ui-draggable\")) {\n $(sidePanelDiv).draggable(\"destroy\");\n $(sidePanelDiv).css(\"top\", \"\");\n $(sidePanelDiv).css(\"left\", \"\");\n $(sidePanelDiv).css(\"width\", \"\");\n $(sidePanelDiv).css(\"position\", \"\");\n $(sidePanelDiv).css(\"height\", \"\");\n $(sidePanelDiv).resizable(\"destroy\");\n this.isDraggable = false;\n $(sidePanelDiv).css(\"z-index\", 9999);\n\n } else {\n var height = $(sidePanelDiv).css(\"height\");\n var width = $(sidePanelDiv).css(\"width\");\n $(sidePanelDiv).draggable({ containment: \"body\", appendTo: \"body\", cursor: \"move\" });\n $(sidePanelDiv).resizable({ handles: \"all\", minWidth: 100 });\n $(sidePanelDiv).css(\"width\", width);\n $(sidePanelDiv).css(\"height\", height);\n this.placeOnDragStartPosition(sidePanelDiv);\n this.isDraggable = true;\n this.parentReader.populatePanelOnTop(this);\n }\n\n this.setRightPanelsLayout(sidePanelDiv);\n }\n\n onCloseButtonClick(sidePanelDiv: HTMLDivElement) {\n $(sidePanelDiv).hide();\n this.setRightPanelsLayout(sidePanelDiv);\n }\n\n onNewWindowButtonClick(sidePanelDiv: HTMLDivElement) {\n super.onNewWindowButtonClick(sidePanelDiv);\n this.setRightPanelsLayout(sidePanelDiv);\n }\n\n protected makePanelBody(innerContent, rootReference, window: Window): HTMLDivElement {\n var panelBodyDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(panelBodyDiv).addClass(\"reader-right-panel-body\");\n $(panelBodyDiv).append(innerContent);\n return panelBodyDiv;\n }\n}\n\nclass ImagePanelOld extends RightSidePanel {\n isDisabled: boolean;\n\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"Pictures\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n this.isDisabled = false;\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var imageContainerDiv: HTMLDivElement = window.document.createElement(\"div\");\n imageContainerDiv.classList.add(\"reader-image-container\");\n return imageContainerDiv;\n }\n\n public onMoveToPage(pageIndex: number, scrollTo: boolean) {\n var pageInfo = this.parentReader.pages[pageIndex];\n $(this.innerContent).empty();\n\n if (this.isDisabled)\n return;\n \n var image: HTMLImageElement = document.createElement(\"img\");\n image.classList.add(\"reader-image\");\n image.src = getBaseUrl() + \"Reader/GetBookImage?snapshotId=\" + this.parentReader.versionId + \"&pageId=\" + pageInfo.pageId;\n\n var imageLink: HTMLAnchorElement = document.createElement(\"a\");\n imageLink.classList.add(\"no-click-href\");\n imageLink.href = image.src;\n imageLink.onclick = (event: MouseEvent) => { return event.ctrlKey;};\n\n imageLink.appendChild(image);\n this.innerContent.appendChild(imageLink);\n\n var zoomOnClick = false;\n\n var img = new Image();\n img.onload = () => {\n var $innerContent = $(this.innerContent);\n\n if (zoomOnClick) {\n $innerContent.zoom({ on: \"click\" });\n } else {\n image.setAttribute(\"data-image-src\", image.src);\n wheelzoom(image);\n\n var lastWidth = $innerContent.width();\n var lastHeight = $innerContent.height();\n $(window.document.documentElement).resize(() => {\n var newWidth = $innerContent.width();\n var newHeight = $innerContent.height();\n\n if (lastWidth != newWidth || lastHeight != newHeight) {\n image.src=image.getAttribute(\"data-image-src\");\n\n console.log(image);\n wheelzoom(image);\n\n lastWidth = newWidth;\n lastHeight = newHeight;\n }\n });\n \n }\n };\n img.src = getBaseUrl() + \"Reader/GetBookImage?snapshotId=\" + this.parentReader.versionId + \"&pageId=\" + pageInfo.pageId;\n\n if (typeof this.windowBody !== \"undefined\") {\n $(this.windowBody).empty();\n this.windowBody.appendChild(image);\n }\n }\n}\n\nclass TextPanelOld extends RightSidePanel {\n preloadPagesBefore: number;\n preloadPagesAfter: number;\n\n private query: string; //search for text search\n private queryIsJson: boolean;\n\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"Text\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n this.preloadPagesBefore = 5;\n this.preloadPagesAfter = 10;\n \n if (readerModule.readerContainer.getAttribute(\"data-can-print\")===\"True\") {\n const sidePanelPrintButton = document.createElement(\"button\");\n sidePanelPrintButton.classList.add(\"print-button\");\n sidePanelPrintButton.addEventListener(\"click\", (event: Event) => {\n this.onPrintButtonClick(sidePanelPrintButton);\n });\n\n const printSpan = document.createElement(\"span\");\n printSpan.classList.add(\"glyphicon\",\"glyphicon-print\");\n sidePanelPrintButton.appendChild(printSpan);\n\n this.panelHeaderDiv.appendChild(sidePanelPrintButton);\n }\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var textContainerDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(textContainerDiv).addClass(\"reader-text-container\");\n\n $(textContainerDiv).scroll((event) => {\n this.parentReader.clickedMoveToPage = false;\n\n var pages = $(event.target as Node as HTMLElement).find(\".page\");\n var minOffset = Number.MAX_VALUE;\n var pageWithMinOffset;\n $.each(pages, (index, page) => {\n var pageOfsset = Math.abs($(page as Node as Element).offset().top - $(event.target as Node as Element).offset().top);\n if (minOffset > pageOfsset) {\n minOffset = pageOfsset;\n pageWithMinOffset = page;\n }\n });\n\n rootReference.parentReader.moveToPage($(pageWithMinOffset).data(\"page-xmlId\"), false);\n });\n\n var textAreaDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(textAreaDiv).addClass(\"reader-text\");\n for (var i = 0; i < rootReference.parentReader.pages.length; i++) {\n var page: BookPage = rootReference.parentReader.pages[i];\n\n var pageTextDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(pageTextDiv).addClass(\"page\");\n $(pageTextDiv).addClass(\"unloaded\");\n $(pageTextDiv).data(\"page-name\", page.text);\n $(pageTextDiv).data(\"page-xmlId\", page.pageId);\n pageTextDiv.id = page.pageId.toString(); // each page has own id\n\n var pageNameDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(pageNameDiv).addClass(\"page-name\");\n $(pageNameDiv).html(\"[\" + page.text + \"]\");\n\n var pageDiv: HTMLDivElement = window.document.createElement(\"div\");\n $(pageDiv).addClass(\"page-wrapper\");\n $(pageDiv).append(pageTextDiv);\n $(pageDiv).append(pageNameDiv);\n textAreaDiv.appendChild(pageDiv);\n }\n\n var dummyPage: HTMLDivElement = window.document.createElement(\"div\");\n $(dummyPage).addClass(\"dummy-page\");\n textAreaDiv.appendChild(dummyPage);\n\n textContainerDiv.appendChild(textAreaDiv);\n return textContainerDiv;\n }\n\n public onMoveToPage(pageIndex: number, scrollTo: boolean) {\n //fetch page only if exist\n this.parentReader.hasBookPage(this.parentReader.bookId, this.parentReader.versionId, () => {\n for (var j = 1; pageIndex - j >= 0 && j <= this.preloadPagesBefore; j++) {\n this.displayPage(this.parentReader.pages[pageIndex - j], false);\n }\n for (var i = 1; pageIndex + i < this.parentReader.pages.length && i <= this.preloadPagesAfter; i++) {\n this.displayPage(this.parentReader.pages[pageIndex + i], false);\n }\n this.displayPage(this.parentReader.pages[pageIndex], scrollTo);\n });\n }\n\n displayPage(page: BookPage, scrollTo: boolean, onSuccess: () => any = null, onFailed: () => any = null) {\n var pageDiv = document.getElementById(page.pageId.toString());\n var pageLoaded: boolean = !($(pageDiv).hasClass(\"unloaded\"));\n var pageSearchUnloaded: boolean = $(pageDiv).hasClass(\"search-unloaded\");\n var pageLoading: boolean = $(pageDiv).hasClass(\"load\");\n if (!pageLoading) {\n if (pageSearchUnloaded) {\n this.downloadSearchPageByXmlId(this.query, this.queryIsJson, page, onSuccess, onFailed);\n }\n else if (!pageLoaded) {\n this.downloadPageByXmlId(page, onSuccess, onFailed);\n }\n else if (onSuccess!==null) {\n onSuccess();\n }\n }\n else if (onSuccess !== null) {\n onSuccess();\n }\n\n if (scrollTo) {\n this.scrollTextToPositionFromTop(0);\n var topOffset = $(pageDiv).offset().top;\n this.scrollTextToPositionFromTop(topOffset);\n\n if (typeof this.childwindow !== \"undefined\") {\n $(\".reader-text-container\", this.childwindow.document).scrollTop(0);\n var pageToScrollOffset = $(\"#\" + page.pageId, this.childwindow.document).offset().top;\n $(\".reader-text-container\", this.childwindow.document).scrollTop(pageToScrollOffset);\n }\n }\n }\n\n scrollTextToPositionFromTop(topOffset: number) {\n var scrollableContainer = $(this.innerContent);\n var containerTopOffset = $(scrollableContainer).offset().top;\n $(scrollableContainer).scrollTop(topOffset - containerTopOffset);\n }\n\n onNewWindowButtonClick(sidePanelDiv: HTMLDivElement) {\n super.onNewWindowButtonClick(sidePanelDiv);\n var pageIndex = this.parentReader.actualPageIndex;\n $(this.childwindow.document.documentElement).ready(() => {\n this.parentReader.moveToPageNumber(pageIndex, true);\n });\n }\n\n onUnloadWindowMode() {\n super.onUnloadWindowMode();\n var pageIndex = this.parentReader.actualPageIndex;\n this.parentReader.moveToPageNumber(pageIndex, true);\n }\n\n private downloadPageByXmlId(page: BookPage, onSuccess: () => any = null, onFailed: () => any = null) {\n var pageContainer = document.getElementById(page.pageId.toString());\n var loader = '
';\n $(pageContainer).addClass(\"load\");\n $(pageContainer).html(loader);\n if (typeof this.windowBody !== \"undefined\") {\n $(this.windowBody).find(\"#\" + page.pageId).html(loader);\n }\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: { snapshotId: this.parentReader.versionId, pageId: page.pageId } as JQuery.PlainObject,\n url: getBaseUrl() + \"Reader/GetBookPage\",\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response) => {\n $(pageContainer).empty();\n $(pageContainer).append(response[\"pageText\"]);\n $(pageContainer).removeClass(\"load\");\n $(pageContainer).css(\"display\", \"inline\");\n $(pageContainer).removeClass(\"unloaded\");\n\n if (typeof this.windowBody !== \"undefined\") {\n $(this.windowBody).find(\"#\" + page.pageId).removeClass(\"load\");\n $(pageContainer).css(\"display\", \"inline\");\n $(this.windowBody).find(\"#\" + page.pageId).append(response[\"pageText\"]);\n }\n\n if (this.parentReader.clickedMoveToPage) {\n this.parentReader.moveToPageNumber(this.parentReader.actualPageIndex, true);\n }\n\n if (onSuccess != null) {\n onSuccess();\n }\n },\n error: (response) => {\n $(pageContainer).empty();\n $(pageContainer).css(\"display\", \"inline\");\n $(pageContainer).append(localization.translateFormat(\"PageLoadingError\", new Array(page.text), \"PluginsJs\").value);\n\n if (onFailed != null) {\n onFailed();\n }\n }\n });\n }\n\n private downloadSearchPageByXmlId(query: string, queryIsJson: boolean, page: BookPage, onSuccess: () => any = null, onFailed: () => any = null) {\n var pageContainer = document.getElementById(page.pageId.toString());\n var loader = '
';\n $(pageContainer).addClass(\"load\");\n $(pageContainer).html(loader);\n if (typeof this.windowBody !== \"undefined\") {\n $(this.windowBody).find(\"#\" + page.pageId).html(loader);\n }\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: { query: query, isQueryJson: queryIsJson, snapshotId: this.parentReader.versionId, pageId: page.pageId } as JQuery.PlainObject,\n url: getBaseUrl() + \"Reader/GetBookSearchPageByXmlId\",\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response) => {\n $(pageContainer).empty();\n $(pageContainer).append(response[\"pageText\"]);\n $(pageContainer).removeClass(\"load\");\n $(pageContainer).css(\"display\", \"inline\");\n $(pageContainer).removeClass(\"unloaded\");\n $(pageContainer).removeClass(\"search-unloaded\");\n $(pageContainer).addClass(\"search-loaded\");\n\n if (typeof this.windowBody !== \"undefined\") {\n $(this.windowBody).find(\"#\" + page.pageId).removeClass(\"load\");\n $(pageContainer).css(\"display\", \"inline\");\n $(this.windowBody).find(\"#\" + page.pageId).append(response[\"pageText\"]);\n }\n\n if (this.parentReader.clickedMoveToPage) {\n this.parentReader.moveToPageNumber(this.parentReader.actualPageIndex, true);\n }\n\n if (onSuccess != null) {\n onSuccess();\n }\n },\n error: (response) => {\n $(pageContainer).empty();\n $(pageContainer).removeClass(\"load\");\n $(pageContainer).css(\"display\", \"inline\");\n $(pageContainer).append(localization.translateFormat(\"PageLoadingErrorWithSearchResults\", new Array(page.text), \"PluginsJs\").value);\n\n if (onFailed != null) {\n onFailed();\n }\n }\n });\n }\n\n public setSearchedQuery(query: string, isJson: boolean) {\n this.query = query;\n this.queryIsJson = isJson;\n }\n\n private onPrintButtonClick(button: HTMLButtonElement) {\n const loadedPages: Array = [];\n const progress = new Progress(\"print-progress-bar\", localization.translate(\"PreparingPrint\", \"PluginsJs\").value,\n {\n body: {\n showLoading: true,\n afterLoadingText: localization.translate(\"Preparing\", \"PluginsJs\").value,\n afterLoadingTextPosition: ProgressTextPosition.Center\n },\n update: {\n field: ProgressUpdateField.BodyAfterLoading,\n valueCallback: (value:number, max:number) => {\n //return `Zpracováno ${value} z ${max}`;\n return localization\n .translateFormat(\"CompletedIndicator\", new Array(value.toString(), max.toString()), \"PluginsJs\").value;\n }\n }\n });\n progress.show();\n\n for (let i = 1; i < this.parentReader.pages.length; i++) {\n const j = i;\n\n const onFailed = () => {\n loadedPages[j] = false;\n\n this.displayPage(this.parentReader.pages[j], false, () => {\n loadedPages[j] = true;\n\n this.onLoadPage(loadedPages, progress);\n }, onFailed);\n };\n\n onFailed();\n }\n }\n\n private onLoadPage(loadedPages: Array, progress: Progress) {\n let success = 0;\n let failed = 0;\n\n for (let i = 1; i < loadedPages.length; i++) {\n if (loadedPages[i]) {\n success++;\n }\n else {\n failed++;\n }\n }\n \n progress.update(success, this.parentReader.pages.length - 1);\n\n if (success === this.parentReader.pages.length - 1) {\n progress.hide();\n\n window.print();\n }\n }\n}\n\nclass TermsPanelOld extends LeftSidePanel {\n private searchResultItemsDiv: HTMLDivElement;\n private termsResultItemsDiv: HTMLDivElement;\n private searchResultOrderedList: HTMLOListElement;\n private termsOrderedList: HTMLOListElement;\n\n private termsResultItemsLoadDiv: HTMLDivElement;\n private searchResultItemsLoadDiv: HTMLDivElement;\n\n private termClickedCallback: (termId: number, text: string) => void;\n\n constructor(identificator: string, readerModule: ReaderModule, showPanelButtonList: Array) {\n super(identificator, localization.translate(\"Topics\", \"PluginsJs\").value, readerModule, showPanelButtonList);\n }\n\n protected makeBody(rootReference: SidePanelOld, window: Window): HTMLElement {\n var innerContent: HTMLDivElement = window.document.createElement(\"div\");\n $(innerContent).addClass(\"reader-terms-div\");\n\n var searchResultDiv = window.document.createElement(\"div\");\n $(searchResultDiv).addClass(\"reader-search-result-div\");\n\n var searchResultDivHeading = window.document.createElement(\"h2\");\n searchResultDivHeading.innerHTML = localization.translate(\"OccurrencesOnPage\", \"PluginsJs\").value;\n searchResultDiv.appendChild(searchResultDivHeading);\n\n var searchResultItemsLoadDiv = window.document.createElement(\"div\");\n $(searchResultItemsLoadDiv).addClass(\"reader-terms-search-result-items-div-load loader\");\n this.searchResultItemsLoadDiv = searchResultItemsLoadDiv;\n $(searchResultItemsLoadDiv).hide();\n searchResultDiv.appendChild(searchResultItemsLoadDiv);\n\n var searchResultItemsDiv = window.document.createElement(\"div\");\n $(searchResultItemsDiv).addClass(\"reader-terms-search-result-items-div\");\n this.searchResultItemsDiv = searchResultItemsDiv;\n searchResultDiv.appendChild(searchResultItemsDiv);\n\n this.searchResultOrderedList = window.document.createElement(\"ol\");\n\n this.searchResultItemsDiv.appendChild(this.searchResultOrderedList);\n\n innerContent.appendChild(searchResultDiv);\n\n\n var termsResultDiv = window.document.createElement(\"div\");\n $(termsResultDiv).addClass(\"reader-terms-result-div\");\n\n var termsResultDivHeading = window.document.createElement(\"h2\");\n termsResultDivHeading.innerHTML = localization.translate(\"TopicsOnPage\", \"PluginsJs\").value;\n termsResultDiv.appendChild(termsResultDivHeading);\n\n var termsResultItemsLoadDiv = window.document.createElement(\"div\");\n $(termsResultItemsLoadDiv).addClass(\"reader-terms-result-items-div-load loader\");\n this.termsResultItemsLoadDiv = termsResultItemsLoadDiv;\n $(termsResultItemsLoadDiv).hide();\n termsResultDiv.appendChild(termsResultItemsLoadDiv);\n\n var termsResultItemsDiv = window.document.createElement(\"div\");\n $(termsResultItemsDiv).addClass(\"reader-terms-result-items-div\");\n this.termsResultItemsDiv = termsResultItemsDiv;\n termsResultDiv.appendChild(termsResultItemsDiv);\n\n this.termsOrderedList = window.document.createElement(\"ol\");\n\n this.termsResultItemsDiv.appendChild(this.termsOrderedList);\n\n innerContent.appendChild(termsResultDiv);\n\n var actualPage = this.parentReader.pages[this.parentReader.actualPageIndex];\n\n this.loadTermsOnPage(actualPage);\n this.clearResults();\n\n return innerContent;\n }\n\n \n\n showLoading() {\n $(this.searchResultItemsDiv).hide();\n $(this.searchResultItemsLoadDiv).show();\n\n }\n\n clearLoading() {\n $(this.searchResultItemsLoadDiv).hide();\n $(this.searchResultItemsDiv).show();\n }\n\n clearResults() {\n $(this.searchResultOrderedList).empty();\n $(this.searchResultOrderedList).append(localization.translate(\"UseSearch\", \"PluginsJs\").value);\n $(this.searchResultOrderedList).addClass(\"no-items\");\n }\n\n showResults(searchResults: PageDescription[]) {\n\n $(this.searchResultOrderedList).empty();\n $(this.searchResultOrderedList).removeClass(\"no-items\");\n\n for (var i = 0; i < searchResults.length; i++) {\n var result = searchResults[i];\n var resultItem = this.createResultItem(result);\n this.searchResultOrderedList.appendChild(resultItem);\n }\n\n if (searchResults.length === 0) {\n $(this.searchResultOrderedList).addClass(\"no-items\");\n $(this.searchResultOrderedList).append(localization.translate(\"NoOccurrencesOnPage\", \"PluginsJs\").value);\n }\n }\n\n setTermClickedCallback(callback: (termId: number, text: string)=>void) {\n this.termClickedCallback = callback;\n }\n\n private createResultItem(page: PageDescription): HTMLLIElement {\n var resultItemListElement = document.createElement(\"li\");\n\n var hrefElement = document.createElement(\"a\");\n hrefElement.href = \"#\";\n $(hrefElement).click(() => {\n this.parentReader.moveToPage(page.id, true);\n });\n\n var textSpanElement = document.createElement(\"span\");\n textSpanElement.innerHTML = `[${page.name}]`;\n \n $(hrefElement).append(textSpanElement);\n\n $(resultItemListElement).append(hrefElement);\n\n return resultItemListElement;\n }\n\n private createTermItem(termId: number, text: string): HTMLLIElement {\n var termItemListElement = document.createElement(\"li\");\n\n var hrefElement = document.createElement(\"a\");\n hrefElement.href = \"#\";\n $(hrefElement).click(() => {\n if (typeof this.termClickedCallback !== \"undefined\" && this.termClickedCallback !== null) {\n this.termClickedCallback(termId, text); \n }\n });\n\n var textSpanElement = document.createElement(\"span\");\n textSpanElement.innerHTML = `[${text}]`;\n\n $(hrefElement).append(textSpanElement);\n\n $(termItemListElement).append(hrefElement);\n\n return termItemListElement;\n }\n\n\n public onMoveToPage(pageIndex: number, scrollTo: boolean) {\n var page = this.parentReader.getPageByIndex(pageIndex);\n this.loadTermsOnPage(page);\n }\n\n private loadTermsOnPage(page: BookPage) {\n\n $(this.termsOrderedList).empty();\n $(this.termsOrderedList).removeClass(\"no-items\");\n $(this.termsResultItemsLoadDiv).show();\n $(this.termsResultItemsDiv).hide();\n\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: { snapshotId: this.parentReader.bookId, pageId: page.pageId } as JQuery.PlainObject,\n url: getBaseUrl() + \"Reader/GetTermsOnPage\",\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response) => {\n\n if (page.pageId === this.parentReader.getActualPage().pageId) {\n\n $(this.termsResultItemsLoadDiv).hide();\n $(this.termsResultItemsDiv).show();\n\n var terms = response[\"terms\"] as Array;\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i];\n this.termsOrderedList.appendChild(this.createTermItem(term.id, term.name));\n }\n\n if (terms.length === 0 && this.termsOrderedList.innerHTML == \"\") {\n $(this.termsOrderedList).addClass(\"no-items\");\n $(this.termsOrderedList).append(localization.translate(\"NoTopicOnPage\", \"PluginsJs\").value);\n }\n }\n },\n error: (response) => {\n if (page.pageId === this.parentReader.getActualPage().pageId) {\n $(this.termsResultItemsLoadDiv).hide();\n $(this.termsResultItemsDiv).show();\n $(this.termsOrderedList).addClass(\"no-items\");\n $(this.termsOrderedList).append(localization.translateFormat(\"LoadingTopicsError\", new Array(page.text), \"PluginsJs\").value);\n }\n }\n });\n }\n}\n\n\n\nclass BookPage {\n private _pageId: number;\n private _text: string;\n private _position: number;\n\n constructor(pageId: number, text: string, position: number) {\n this._pageId = pageId;\n this._text = text;\n this._position = position;\n }\n\n get pageId(): number {\n return this._pageId;\n }\n\n get text(): string {\n return this._text;\n }\n\n get position(): number {\n return this._position;\n }\n}\n\nclass ContentItem {\n private _referredPageId: number;\n private _referredPageName: string;\n private _text: string;\n private _childBookContentItems: IChapterHieararchyContract[];\n\n constructor(text: string, referredPageId: number, referredPageName: string, childBookContentItems: IChapterHieararchyContract[]) {\n this._referredPageId = referredPageId;\n this._referredPageName = referredPageName;\n this._text = text;\n this._childBookContentItems = childBookContentItems;\n }\n\n get referredPageId(): number {\n return this._referredPageId;\n }\n\n get referredPageName(): string {\n return this._referredPageName;\n }\n\n get text(): string {\n return this._text;\n }\n\n get childBookContentItems(): IChapterHieararchyContract[] {\n return this._childBookContentItems;\n }\n}\n\n\nclass SearchHitResult {\n pageId: string;\n pageName: string;\n before: string;\n after: string;\n match: string;\n}\n\nclass PageDescription {\n id: number;\n name: string;\n}\n\ninterface IBookmarkPosition {\n bookmarks: Array;\n bookmarkSpan: HTMLSpanElement;\n pageIndex: number;\n}\n\ninterface IBookmarksInfo {\n positions: Array;\n totalCount: number;\n}\n\nenum ReaderPanelEnum {\n TextPanel,\n ImagePanel,\n SearchPanel,\n ContentPanel,\n TermsPanel,\n SettingsPanel\n}\n\nenum PanelButtonEnum {\n Close,\n Pin,\n ToNewWindow\n}","class VariableInterpreter {\n private static _instance: VariableInterpreter = null;\n\n constructor() {\n if (VariableInterpreter._instance) {\n throw new Error(\"Cannot instantiate...Use getInstance method instead\");\n }\n VariableInterpreter._instance = this;\n }\n\n public static getInstance(): VariableInterpreter {\n if (VariableInterpreter._instance === null) {\n VariableInterpreter._instance = new VariableInterpreter();\n }\n return VariableInterpreter._instance;\n }\n\n public interpret(valueString: string, variables: Object, bibItem: IBookInfo): string {\n if (typeof valueString === 'undefined' || typeof bibItem === 'undefined') {\n console.log(\"VariableInterpreter: cannot interpret undefined type\");\n return \"\";\n }\n return this.interpretPattern(\"bibItem\", valueString, variables, bibItem, true, \"\");\n }\n\n private resolveScope(interpretedVariable: Object, scopedObject: Object): Object {\n var scope: string = interpretedVariable[\"scope\"];\n var actualScopedObject: Object = scopedObject;\n if (typeof scope !== 'undefined') {\n if (scope === \"{$parent}\") {\n actualScopedObject = this.getParentScope(actualScopedObject);\n } else {\n actualScopedObject = this.changeToInnerScope(actualScopedObject, scope);\n }\n }\n return actualScopedObject;\n }\n\n private changeToInnerScope(actualScope: Object, newScopeName: string): Object {\n var newScope: Object = actualScope[newScopeName];\n this.setParentScope(newScope, actualScope);\n return newScope;\n }\n\n private changeToOuterScope(actualScope: Object): Object {\n return this.getParentScope(actualScope);\n }\n\n private setParentScope(scope: Object, parentScope: Object) {\n if (typeof scope === 'undefined' || scope === null) {\n console.log(\"cannot set parent scope to undefined or null scope\");\n return;\n }\n scope['parentScope'] = parentScope;\n }\n\n private getParentScope(scope: Object): Object {\n var parentScope = scope['parentScope'];\n if (typeof parentScope !== 'undefined') {\n return parentScope;\n }\n return scope;\n }\n\n private interpretPattern(interpretedVariableName: string, pattern: string, variables: Object, actualScopeObject: Object, continueOnNullValue: boolean, replacementForNullValue: string): string {\n if (typeof actualScopeObject === 'undefined') {\n console.error(\"'\" + interpretedVariableName + \"' has an undefined scope\");\n return \"\";\n }\n var foundNullValue: boolean;\n // TODO: `pattern` could be null so maybe use a construction like 'pattern ?? \"\"' here (not in callers because there are multiple) or simply bail out\n var interpretedpattern = pattern.replace(/{(.+?)}/g, (foundPattern, varName: string) => {\n if (!continueOnNullValue && foundNullValue) return \"\";\n var result: string;\n if (varName.indexOf(\"$\") === 0) { //is config variable\n if (varName === \"$this\") {\n result = actualScopeObject; //if config variable is this, return this as value (can be used for primitive types like array of numbers or strings)\n } else if (varName === \"$baseUrl\") {\n result = getBaseUrl();\n } else {\n result = this.interpretConfigurationVariable(varName, variables, actualScopeObject);\n }\n } else if (varName.indexOf(\"@\") === 0) {\n result = localization.translate(varName.substring(1), \"BibliographyModule\").value;\n }\n else {\n result = actualScopeObject[varName];\n var tmpScope = actualScopeObject;\n while (typeof result === 'undefined' && this.getParentScope(tmpScope) !== tmpScope) { //if result is undefined bubble up to outer scope\n tmpScope = this.getParentScope(tmpScope);\n result = tmpScope[varName];\n }\n }\n\n if (typeof result !== 'undefined' && result !== null) {\n result = String(result); //convert if typeof result was not string\n if (result.length > 0) {\n return result;\n }\n }\n foundNullValue = true;\n if (!continueOnNullValue) return \"\";\n return replacementForNullValue;\n });\n if (foundNullValue && !continueOnNullValue) {\n return null;\n }\n return interpretedpattern;\n }\n\n private interpretConfigurationVariable(varName: string, variables: Object, actualScopeObject: Object): string {\n if (typeof variables === 'undefined') {\n console.error(\"No variables are specified in bibliography configuration\");\n return \"\";\n }\n if (typeof actualScopeObject === 'undefined') {\n console.log(\"Variable '\" + varName + \"' has null scope object\");\n return \"\";\n }\n\n var interpretedVariable = variables[varName];\n if (typeof interpretedVariable === 'undefined') {\n console.error(\"Variable with name \" + varName + \" is not specidfied in bibliography configuration\");\n return \"\";\n }\n\n var typeOfVariable = interpretedVariable['type'];\n if (typeof typeOfVariable === \"undefined\") {\n console.error(\"Variable with name \" + varName + \" does not have specified type\");\n return \"\";\n }\n\n switch (typeOfVariable) {\n case \"basic\":\n return this.interpretBasic(varName, interpretedVariable, variables, actualScopeObject);\n case \"replace\":\n return this.interpretReplace(varName, interpretedVariable, variables, actualScopeObject);\n case \"if\":\n return this.interpretIfStatement(varName, interpretedVariable, variables, actualScopeObject);\n case \"array\":\n return this.interpretArray(varName, interpretedVariable, variables, actualScopeObject);\n case \"table\":\n return this.interpretTable(varName, interpretedVariable, variables, actualScopeObject);\n case \"script\":\n return this.interpretScript(varName, interpretedVariable, variables, actualScopeObject);\n default:\n console.error(\"Variable with name \" + varName + \" does not have correct type\");\n return \"\";\n }\n }\n\n private interpretBasic(varName: string, interpretedVariable: Object, variables: Object, scopedObject: Object): string {\n var printIfNull: boolean = interpretedVariable[\"printIfNullValue\"];\n // XXX: \"Localized string with key=undefined was not found in dictionary=BibliographyModule with culture=undefined\"\n // should be fixed here by not passing `undefined` further (to lib/scalesoft-localization-web/dist/localization.ts)\n // XXX: in ITJakub.Web.Hub/wwwroot/content/BibliographyConfiguration/configuration.json,\n // Grammar/middle-panel/variables/$printAuthors lacks replaceNullValueBy, unlike $LiteraryTypeStart, for instance\n\n var replacementForNullValue: string = \"\";\n if (interpretedVariable[\"replaceNullValueBy\"]) {\n replacementForNullValue = localization.translate(interpretedVariable[\"replaceNullValueBy\"], \"BibliographyModule\").value;\n\n } else {\n console.log(`${varName} is missing a \"replaceNullValueBy\" property, resorting to an empty string.`);\n\n }\n\n var pattern: string = interpretedVariable[\"pattern\"];\n var actualScopedObject = this.resolveScope(interpretedVariable, scopedObject);\n var value: string = this.interpretPattern(varName, pattern, variables, actualScopedObject, printIfNull, replacementForNullValue);\n if ((value === null || value.length <= 0) && !printIfNull) {\n return \"\";\n } else {\n return value;\n }\n }\n\n private interpretReplace(varName: string, interpretedVariable: Object, variables: Object, scopedObject: Object): string {\n var replacing: string = interpretedVariable[\"replacing\"];\n var replacement: string = interpretedVariable[\"replacement\"];\n var pattern: string = interpretedVariable[\"pattern\"];\n var actualScopedObject = this.resolveScope(interpretedVariable, scopedObject);\n var value: string = this.interpretPattern(varName, pattern, variables, actualScopedObject, true, \"\");\n return value.replace(new RegExp(replacing, 'g'), replacement);\n }\n\n private interpretIfStatement(varName: string, interpretedVariable: Object, variables: Object, scopedObject: Object): string {\n var pattern: string = interpretedVariable[\"pattern\"];\n var actualScopedObject = this.resolveScope(interpretedVariable, scopedObject);\n var truePattern: string = interpretedVariable[\"onTrue\"];\n var falsePattern: string = interpretedVariable[\"onFalse\"];\n var patternResult = this.interpretPattern(varName, pattern, variables, actualScopedObject, true, \"\");\n if (typeof patternResult === \"undefined\" || patternResult === null || patternResult === \"\" || patternResult === \"false\" || patternResult === \"0\") {\n return this.interpretPattern(varName, falsePattern, variables, actualScopedObject, true, \"\");\n }\n return this.interpretPattern(varName, truePattern, variables, actualScopedObject, true, \"\");\n }\n\n private interpretArray(varName: string, interpretedVariable: Object, variables: Object, scopedObject: Object): string {\n var pattern: string = interpretedVariable[\"pattern\"];\n var delimeter: string = interpretedVariable[\"delimeter\"];\n var actualScopedObject = this.resolveScope(interpretedVariable, scopedObject);\n if (!$.isArray(actualScopedObject)) {\n console.error(\"Variable with name \" + varName + \" must be scoped on array.\");\n return \"\";\n }\n var value: string = \"\";\n var actualScopedObjectList = actualScopedObject as Array;\n $.each(actualScopedObjectList, (index: number, item: Object) => {\n if (typeof item === 'undefined' || item === null) {\n return true; //continue\n }\n this.setParentScope(item, actualScopedObject);\n var itemValue = this.interpretPattern(varName, pattern, variables, item, true, \"\");\n if (index > 0) {\n itemValue = delimeter + itemValue;\n }\n value += itemValue;\n });\n\n return value;\n\n }\n\n private interpretTable(varName: string, interpretedVariable: Object, variables: Object, scopedObject: Object): string {\n var printRowIfNullValue: boolean = interpretedVariable[\"printRowIfNullValue\"];\n var replaceNullValueBy: string = interpretedVariable[\"replaceNullValueBy\"];\n if (!replaceNullValueBy)\n replaceNullValueBy = '';\n\n if (replaceNullValueBy)\n replaceNullValueBy = localization.translate(replaceNullValueBy, \"BibliographyModule\").value;\n\n var rows: Array = interpretedVariable[\"rows\"];\n var actualScopedObject = this.resolveScope(interpretedVariable, scopedObject);\n var tableBuilder = new TableBuilder();\n\n $.each(rows, (index, item) => {\n var label: string = localization.translate(item[\"label\"], \"BibliographyModule\").value;\n var pattern: string = item[\"pattern\"];\n var value: string = this.interpretPattern(varName, pattern, variables, actualScopedObject, true, \"\");\n if (typeof value !== 'undefined' && value !== null && value.length > 0) {\n tableBuilder.makeTableRow(label, value);\n } else {\n if (printRowIfNullValue) {\n tableBuilder.makeTableRow(label, replaceNullValueBy);\n }\n }\n });\n\n return tableBuilder.build().outerHTML;\n }\n\n private interpretScript(varName: string, interpretedVariable: Object, variables: Object, scopedObject: Object): string {\n var printIfNull: boolean = interpretedVariable[\"printIfNullValue\"];\n var replaceNullValueBy: string = localization.translate(interpretedVariable[\"replaceNullValueBy\"], \"BibliographyModule\").value;\n var pattern: string = interpretedVariable[\"pattern\"];\n var actualScopedObject = this.resolveScope(interpretedVariable, scopedObject);\n var interpretedScript = this.interpretPattern(varName, pattern, variables, actualScopedObject, false, \"\");\n var patternResult = eval(interpretedScript);\n if (typeof patternResult === \"undefined\" || patternResult === null || patternResult === \"\" || patternResult === \"false\" || patternResult === \"0\") {\n if (printIfNull) {\n if (typeof replaceNullValueBy !== \"undefined\" || replaceNullValueBy !== null) {\n return replaceNullValueBy;\n } else {\n return patternResult;\n }\n\n } else {\n return \"\";\n }\n }\n\n return patternResult;\n }\n}\n\nclass TableBuilder {\n private m_tableDiv: HTMLDivElement;\n\n constructor() {\n this.m_tableDiv = document.createElement('div');\n $(this.m_tableDiv).addClass('bib-table');\n }\n\n public makeTableRow(label: string, value: string): void {\n var rowDiv: HTMLDivElement = document.createElement('div');\n $(rowDiv).addClass('bib-table-row');\n var labelDiv: HTMLDivElement = document.createElement('div');\n $(labelDiv).addClass('bib-table-cell bib-label');\n labelDiv.innerHTML = label;\n rowDiv.appendChild(labelDiv);\n var valueDiv: HTMLDivElement = document.createElement('div');\n $(valueDiv).addClass('bib-table-cell');\n valueDiv.innerHTML = value;\n rowDiv.appendChild(valueDiv);\n this.m_tableDiv.appendChild(rowDiv);\n }\n\n public build(): HTMLDivElement {\n return this.m_tableDiv;\n }\n}","class BibliographyFactoryResolver {\n private factories: BibliographyFactory[]=[];\n\n constructor(protected booksConfigurations: Object, protected modulInicializator?: ModulInicializator) {}\n\n public getFactoryForType(bookType: BookTypeEnum): BibliographyFactory {\n if (this.factories[bookType] === undefined) {\n this.factories[bookType] = this.createFactory(bookType);\n }\n\n if (this.factories[bookType] !== undefined) {\n return this.factories[bookType];\n }\n\n return null;\n }\n\n protected createFactory(bookType: BookTypeEnum): BibliographyFactory {\n switch (bookType) {\n case BookTypeEnum.Edition:\n return new BasicFactory(new BookTypeConfiguration(BookTypeEnum.Edition, this.booksConfigurations[\"Edition\"]), this.modulInicializator); //TODO make enum bookType, BookTypeConfiguration should make config manager\n case BookTypeEnum.Dictionary:\n return new DictionaryFactory(new BookTypeConfiguration(BookTypeEnum.Dictionary, this.booksConfigurations[\"Dictionary\"]), this.modulInicializator);\n case BookTypeEnum.TextBank:\n return new BasicFactory(new BookTypeConfiguration(BookTypeEnum.TextBank, this.booksConfigurations[\"TextBank\"]), this.modulInicializator);\n case BookTypeEnum.CardFile:\n return new CardFileFactory(new BookTypeConfiguration(BookTypeEnum.CardFile, this.booksConfigurations[\"CardFile\"]), this.modulInicializator);\n case BookTypeEnum.Grammar:\n return new BasicFactory(new BookTypeConfiguration(BookTypeEnum.Grammar, this.booksConfigurations[\"Grammar\"]), this.modulInicializator);\n case BookTypeEnum.BibliographicalItem:\n return new BasicFactory(new BookTypeConfiguration(BookTypeEnum.BibliographicalItem, this.booksConfigurations[\"BibliographicalItem\"]), this.modulInicializator);\n case BookTypeEnum.ProfessionalLiterature:\n return new BasicFactory(new BookTypeConfiguration(BookTypeEnum.ProfessionalLiterature, this.booksConfigurations[\"ProfessionalLiterature\"]), this.modulInicializator);\n case BookTypeEnum.AudioBook:\n return new BasicFactory(new BookTypeConfiguration(BookTypeEnum.AudioBook, this.booksConfigurations[\"AudioBook\"]), this.modulInicializator);\n\n default:\n console.error(`Unknown book type: ${bookType}`);\n return null;\n }\n }\n}\n\nclass BibliographyFactory {\n\n constructor(public configuration: BookTypeConfiguration, public modulInicializator?: ModulInicializator) {}\n\n makeLeftPanel(bookInfo: IBookInfo): HTMLDivElement {\n var leftPanel: HTMLDivElement = document.createElement('div');\n $(leftPanel).addClass('left-panel');\n return leftPanel;\n }\n\n protected runEvalResponse(event: JQuery.Event, callback: (context:Object)=>any) {\n callback({ search: this.modulInicializator.getSearch(), event: event });\n }\n\n makeRightPanel(bookInfo: IBookInfo): HTMLDivElement {\n if (!this.configuration.containsRightPanel()) return null;\n var config = this.configuration.getRightPanelConfig();\n\n var rightPanel: HTMLDivElement = document.createElement('div');\n $(rightPanel).addClass('right-panel');\n\n var self = this;\n\n if (config.containsReadButton()) {\n var bookButton: HTMLAnchorElement = document.createElement('a');\n var $bookButton = $(bookButton);\n $bookButton.addClass('btn btn-sm book-button button');\n var spanBook: HTMLSpanElement = document.createElement('span');\n $(spanBook).addClass('glyphicon glyphicon-book');\n bookButton.appendChild(spanBook);\n\n let readButtonProps = config.configObject['read-button']; // config.getReadUrlProps(bookInfo);\n let tooltip = readButtonProps['tooltip'];\n if (tooltip) {\n $bookButton.attr('title', localization.translate(tooltip, 'PluginsJs').value);\n // $bookButton.attr('data-toggle', 'tooltip');\n // $bookButton.attr('data-placement', 'bottom');\n $bookButton.tooltip({ // $('[data-toggle=\"tooltip\"]').tooltip()\n delay: 200,\n });\n }\n\n let buttonScript = config.getReadButtonOnClick(bookInfo);\n let buttonScriptCallable = config.getReadButtonOnClickCallable(bookInfo);\n let hasButtonScript = typeof buttonScript !== \"undefined\" && buttonScript != null && buttonScript !== \"\";\n let hasButtonScriptCallable = typeof buttonScriptCallable !== \"undefined\" && buttonScriptCallable != null && buttonScriptCallable !== \"\";\n\n let url: string;\n if (hasButtonScript || hasButtonScriptCallable)\n url = '#';\n else\n url = config.getReadButtonUrl(bookInfo);\n\n $bookButton.attr('href', url);\n $bookButton.on('click', (event: JQuery.Event) => {\n if (hasButtonScript)\n eval(buttonScript);\n\n else if (hasButtonScriptCallable)\n this.runEvalResponse(event, eval(buttonScriptCallable));\n\n // else onClickHref(event, config.getReadButtonUrl(bookInfo));\n });\n rightPanel.appendChild(bookButton);\n }\n\n if (config.containsInfoButton()) {\n var infoButton: HTMLAnchorElement = document.createElement('a');\n var $infoButton = $(infoButton);\n infoButton.type = 'button';\n $infoButton.addClass('btn btn-sm information-button button');\n var spanInfo: HTMLSpanElement = document.createElement('span');\n $(spanInfo).addClass('glyphicon glyphicon-info-sign');\n infoButton.appendChild(spanInfo);\n\n let infoButtonProps = config.configObject['info-button'];\n let tooltip = infoButtonProps['tooltip'];\n if (tooltip) {\n $infoButton.attr('title', localization.translate(tooltip, 'PluginsJs').value);\n $infoButton.tooltip({\n delay: 200,\n });\n }\n\n let buttonScript = config.getInfoButtonOnClick(bookInfo);\n let buttonScriptCallable = config.getInfoButtonOnClickCallable(bookInfo);\n let hasButtonScript = typeof buttonScript !== \"undefined\" && buttonScript != null && buttonScript !== \"\";\n let hasButtonScriptCallable = typeof buttonScriptCallable !== \"undefined\" && buttonScriptCallable != null && buttonScriptCallable !== \"\";\n\n let url: string;\n if (hasButtonScript || hasButtonScriptCallable)\n url = '#';\n else\n url = config.getInfoButtonUrl(bookInfo);\n\n $infoButton.attr(\"href\", url);\n $infoButton.on(\"click\", (event: JQuery.Event) => {\n if (hasButtonScript)\n eval(buttonScript);\n\n else if (hasButtonScriptCallable)\n this.runEvalResponse(event, eval(buttonScriptCallable));\n\n // else onClickHref(event, config.getInfoButtonUrl(bookInfo));\n });\n rightPanel.appendChild(infoButton);\n }\n\n if (config.containsFavoriteButton()) {\n var favoriteButton = document.createElement(\"span\");\n var $favoriteButton = $(favoriteButton);\n $favoriteButton.addClass(\"favorite-button\");\n $favoriteButton.data(\"buttonClass\", \"btn btn-sm button\");\n rightPanel.appendChild(favoriteButton);\n }\n\n if (this.configuration.containsBottomPanel()) {\n var contentButton: HTMLButtonElement = document.createElement('button');\n contentButton.type = 'button';\n $(contentButton).addClass('btn btn-sm content-button');\n var spanChevrDown: HTMLSpanElement = document.createElement('span');\n $(spanChevrDown).addClass('glyphicon glyphicon-chevron-down');\n contentButton.appendChild(spanChevrDown);\n $(contentButton).click(function (event) {\n var $hiddenContent = $(this).parents('li.list-item').first().find('.hidden-content');\n $hiddenContent.slideToggle(\"slow\");\n $(this).children('span').toggleClass('glyphicon-chevron-down glyphicon-chevron-up');\n\n if ($hiddenContent.hasClass(\"not-loaded\")) {\n self.makeBottomPanelAsync(bookInfo, config, $hiddenContent);\n }\n });\n rightPanel.appendChild(contentButton);\n }\n\n return rightPanel;\n }\n\n makeMiddlePanel(bookInfo: IBookInfo): HTMLDivElement {\n if (!this.configuration.containsMiddlePanel()) return null;\n var config = this.configuration.getMiddlePanelConfig();\n\n var middlePanel: HTMLDivElement = document.createElement('div');\n $(middlePanel).addClass('middle-panel');\n\n if (config.containsFavorites()) {\n var middlePanelFavorites: HTMLDivElement = document.createElement('div');\n $(middlePanelFavorites).addClass('favorites');\n middlePanel.appendChild(middlePanelFavorites);\n }\n\n if (config.containsShortInfo()) {\n var middlePanelShortInfo: HTMLDivElement = document.createElement('div');\n $(middlePanelShortInfo).addClass('short-info');\n middlePanelShortInfo.innerHTML = config.getShortInfo(bookInfo);\n middlePanel.appendChild(middlePanelShortInfo);\n }\n\n if (config.containsTitle()) {\n var middlePanelHeading: HTMLDivElement = document.createElement('div');\n $(middlePanelHeading).addClass('heading');\n middlePanelHeading.innerHTML = config.getTitle(bookInfo);\n middlePanel.appendChild(middlePanelHeading);\n }\n if (config.containsBody()) {\n var middlePanelBody: HTMLDivElement = document.createElement('div');\n $(middlePanelBody).addClass('body');\n middlePanelBody.innerHTML = config.getBody(bookInfo);\n middlePanel.appendChild(middlePanelBody);\n }\n\n if (config.containsCustom()) {\n var customDiv: HTMLDivElement = document.createElement('div');\n $(customDiv).addClass('custom');\n customDiv.innerHTML = config.getCustom(bookInfo);\n middlePanel.appendChild(customDiv);\n }\n\n return middlePanel;\n }\n\n makeMidRightPanel(bookInfo: IBookInfo): HTMLDivElement {\n if (!this.configuration.containsMiddleRightPanel()) return null;\n var config = this.configuration.getMiddleRightPanelConfig();\n\n var midRightPanel: HTMLDivElement = document.createElement('div');\n $(midRightPanel).addClass('middle-right-panel');\n\n if (config.containsBody()) {\n var middlePanelBody: HTMLDivElement = document.createElement('div');\n $(middlePanelBody).addClass('body');\n middlePanelBody.innerHTML = config.getBody(bookInfo);\n midRightPanel.appendChild(middlePanelBody);\n }\n\n if (config.containsCustom()) {\n var customDiv: HTMLDivElement = document.createElement('div');\n $(customDiv).addClass('custom');\n customDiv.innerHTML = config.getCustom(bookInfo);\n midRightPanel.appendChild(customDiv);\n }\n\n return midRightPanel;\n }\n\n makeBottomPanel(bookInfo: IBookInfo): HTMLDivElement {\n if (!this.configuration.containsBottomPanel()) return null;\n var config = this.configuration.getBottomPanelConfig();\n\n var bottomPanel: HTMLDivElement = document.createElement('div');\n $(bottomPanel).addClass('bottom-panel');\n\n if (config.containsBody()) {\n var bottomPanelBody: HTMLDivElement = document.createElement('div');\n $(bottomPanelBody).addClass('body');\n bottomPanelBody.innerHTML = config.getBody(bookInfo);\n bottomPanel.appendChild(bottomPanelBody);\n }\n\n if (config.containsCustom()) {\n var customDiv: HTMLDivElement = document.createElement('div');\n $(customDiv).addClass('custom');\n customDiv.innerHTML = config.getCustom(bookInfo);\n bottomPanel.appendChild(customDiv);\n }\n\n return bottomPanel;\n }\n\n makeFavoriteBookInfo(bookFavorites: IFavoriteBaseInfoWithLabel[]): HTMLElement[] {\n var resultList = new Array();\n var config = this.configuration.getMiddlePanelConfig();\n var maxFavLabels = bookFavorites.length;\n if (config.containsFavorites() && config.containsFavoritesMaxCount()) {\n maxFavLabels = config.getFavoritesMaxCount();\n }\n\n var max = maxFavLabels < bookFavorites.length ? maxFavLabels : bookFavorites.length;\n for (var i = 0; i < bookFavorites.length; i++) {\n var favoriteInfo = bookFavorites[i];\n var label = BibliographyFactory.makeFavoriteLabel(favoriteInfo.title, favoriteInfo.favoriteLabel.name, favoriteInfo.favoriteLabel.color);\n resultList.push(label);\n\n if (i >= max) {\n $(label).hide();\n }\n }\n\n if (bookFavorites.length > maxFavLabels) {\n var showAllLink = document.createElement(\"a\");\n var showAllSpan = document.createElement(\"span\");\n $(showAllLink)\n .attr(\"href\", \"#\")\n .append(showAllSpan)\n .click(event => {\n var $item = $(event.currentTarget as Node as Element);\n $item.siblings().show();\n $item.hide();\n });\n $(showAllSpan)\n .css(\"color\", \"black\")\n .css(\"font-weight\", \"bold\")\n .css(\"margin-left\", \"3px\")\n .text(\"...\")\n .attr(\"title\", localization.translate(\"ShowAllAssignedLabels\", \"PluginsJs\").value)\n .attr(\"data-toggle\", \"tooltip\")\n .tooltip();\n resultList.push(showAllLink);\n }\n\n return resultList;\n }\n\n private makeBottomPanelAsync(bookInfo: IBookInfo, rightPanelConfig: RightPanelConfiguration, $container: JQuery) {\n if (!rightPanelConfig.containsLoadDetailUrl()) {\n var bottomPanel = this.makeBottomPanel(bookInfo);\n this.appendBottomPanel($container, bottomPanel);\n return;\n }\n\n var url = rightPanelConfig.getLoadDetailUrl(bookInfo);\n $.ajax({\n type: \"GET\",\n traditional: true,\n url: getBaseUrl() + url,\n dataType: 'json',\n contentType: 'application/json',\n success: (response) => {\n var bottomPanel = this.makeBottomPanel(response);\n this.appendBottomPanel($container, bottomPanel);\n }\n });\n }\n\n private appendBottomPanel($container: JQuery, bottomPanel: HTMLElement) {\n var height = $container.height();\n $container\n .finish()\n .empty()\n .removeClass(\"not-loaded\")\n .append(bottomPanel);\n\n var newHeight = $container.height();\n $container\n .height(height)\n .animate({\n height: newHeight\n } as JQuery.PlainObject, null, null, () => {\n $container.css(\"height\", \"\");\n });\n }\n\n static makeFavoriteLabel(favoriteTitle: string, labelName: string, labelColor: string): HTMLSpanElement {\n var colorData = FavoriteHelper.getDefaultLabelColorData(labelColor);\n var label = document.createElement(\"span\");\n $(label)\n .addClass(\"label\")\n .css(\"color\", colorData.fontColor)\n .css(\"background-color\", colorData.backgroundColor)\n .css(\"border-color\", colorData.borderColor)\n .text(labelName)\n .attr(\"data-toggle\", \"tooltip\")\n .attr(\"title\", localization.translateFormat(\"SavedAs:\", new Array(favoriteTitle), \"PluginsJs\").value)\n .tooltip({\n delay: 200,\n });\n return label;\n }\n\n static makeError(text: string): HTMLDivElement {\n var errorContainer = document.createElement(\"div\");\n $(errorContainer).addClass(\"bib-alert\");\n\n var errorAlert = document.createElement(\"div\");\n $(errorAlert)\n .addClass(\"alert alert-danger\")\n .text(text)\n .appendTo(errorContainer);\n\n return errorContainer;\n }\n}\n\nclass BasicFactory extends BibliographyFactory {}\n\nclass DictionaryFactory extends BibliographyFactory {\n makeLeftPanel(bookInfo: IBookInfo): HTMLDivElement {\n var leftPanel: HTMLDivElement = document.createElement('div');\n $(leftPanel).addClass('left-panel');\n\n //var inputCheckbox: HTMLInputElement = document.createElement('input');\n //inputCheckbox.type = \"checkbox\";\n //$(inputCheckbox).addClass('checkbox');\n //leftPanel.appendChild(inputCheckbox);\n\n //var starEmptyButton: HTMLButtonElement = document.createElement('button');\n //starEmptyButton.type = 'button';\n //$(starEmptyButton).addClass('btn btn-xs star-empty-button');\n //var spanEmptyStar: HTMLSpanElement = document.createElement('span');\n //$(spanEmptyStar).addClass('glyphicon glyphicon-star-empty');\n //starEmptyButton.appendChild(spanEmptyStar);\n //$(starEmptyButton).click(function(event) {\n // $(this).siblings('.star-button').show();\n // $(this).hide();\n //}); //TODO fill click action\n //leftPanel.appendChild(starEmptyButton);\n\n //var starButton: HTMLButtonElement = document.createElement('button');\n //starButton.type = 'button';\n //$(starButton).addClass('btn btn-xs star-button');\n //$(starButton).css('display', 'none');\n //var spanStar: HTMLSpanElement = document.createElement('span');\n //$(spanStar).addClass('glyphicon glyphicon-star');\n //starButton.appendChild(spanStar);\n //$(starButton).click(function(event) {\n // $(this).siblings('.star-empty-button').show();\n // $(this).hide();\n //}); //TODO fill click action\n //leftPanel.appendChild(starButton);\n\n return leftPanel;\n }\n}\n\nclass CardFileFactory extends BibliographyFactory {\n makeLeftPanel(bookInfo: IBookInfo): HTMLDivElement {\n var leftPanel: HTMLDivElement = document.createElement('div');\n $(leftPanel).addClass('left-panel');\n\n //var inputCheckbox: HTMLInputElement = document.createElement('input');\n //inputCheckbox.type = \"checkbox\";\n //$(inputCheckbox).addClass('checkbox');\n //leftPanel.appendChild(inputCheckbox);\n\n //var starEmptyButton: HTMLButtonElement = document.createElement('button');\n //starEmptyButton.type = 'button';\n //$(starEmptyButton).addClass('btn btn-xs star-empty-button');\n //var spanEmptyStar: HTMLSpanElement = document.createElement('span');\n //$(spanEmptyStar).addClass('glyphicon glyphicon-star-empty');\n //starEmptyButton.appendChild(spanEmptyStar);\n //$(starEmptyButton).click(function(event) {\n // $(this).siblings('.star-button').show();\n // $(this).hide();\n //}); //TODO fill click action\n //leftPanel.appendChild(starEmptyButton);\n\n //var starButton: HTMLButtonElement = document.createElement('button');\n //starButton.type = 'button';\n //$(starButton).addClass('btn btn-xs star-button');\n //$(starButton).css('display', 'none');\n //var spanStar: HTMLSpanElement = document.createElement('span');\n //$(spanStar).addClass('glyphicon glyphicon-star');\n //starButton.appendChild(spanStar);\n //$(starButton).click(function(event) {\n // $(this).siblings('.star-empty-button').show();\n // $(this).hide();\n //}); //TODO fill click action\n //leftPanel.appendChild(starButton);\n\n return leftPanel;\n }\n}","class ConfigurationManager {\n booksConfigurations: Object;\n\n constructor(config: Object) {\n this.booksConfigurations = config; //TODO booksConfigurations should be just subset of config, here should be iteration over of config for bookTypes\n }\n\n getBookTypeConfigurations() {\n return this.booksConfigurations;\n }\n}\n\nclass BookTypeConfiguration {\n bookType: BookTypeEnum;\n rightPanelConfig: RightPanelConfiguration;\n middlePanelConfig: MiddlePanelConfiguration;\n midRightPanelConfig: MidRightPanelConfiguration;\n bottomPanelConfig: BottomPanelConfiguration;\n\n private exists: boolean;\n\n constructor(bookType: BookTypeEnum, bookTypeConfig: Object) {\n this.bookType = bookType;\n\n if (typeof bookTypeConfig !== \"undefined\" && bookTypeConfig !== null) {\n this.exists = true;\n this.rightPanelConfig = new RightPanelConfiguration(bookTypeConfig['right-panel']);\n this.middlePanelConfig = new MiddlePanelConfiguration(bookTypeConfig['middle-panel']);\n this.midRightPanelConfig = new MidRightPanelConfiguration(bookTypeConfig['middle-right-panel']);\n this.bottomPanelConfig = new BottomPanelConfiguration(bookTypeConfig['bottom-panel']);\n } else {\n this.exists = false;\n }\n }\n\n exist() { return this.exists}\n\n containsMiddlePanel() { return this.middlePanelConfig.exist(); }\n\n containsMiddleRightPanel() { return this.midRightPanelConfig.exist(); }\n\n containsBottomPanel() { return this.bottomPanelConfig.exist(); }\n\n containsRightPanel() { return this.rightPanelConfig.exist(); }\n\n getMiddlePanelConfig() { return this.middlePanelConfig; }\n\n getMiddleRightPanelConfig() { return this.midRightPanelConfig; }\n\n getBottomPanelConfig() { return this.bottomPanelConfig; }\n\n getRightPanelConfig() { return this.rightPanelConfig; }\n\n}\n\nclass Configuration {\n configObject: Object;\n\n constructor(configObj: Object) {\n this.configObject = configObj;\n }\n\n exist(): boolean {\n return typeof this.configObject !== 'undefined';\n }\n\n interpret(interpretedString: string, bibItem: IBookInfo ): string {\n return VariableInterpreter.getInstance().interpret(interpretedString, this.getVariables(), bibItem);\n }\n\n private getVariables() {\n return this.configObject['variables'];\n }\n}\n\nclass RightPanelConfiguration extends Configuration {\n\n constructor(configObj: Object) {\n super(configObj);\n }\n\n containsInfoButton() { return typeof this.configObject['info-button'] !== 'undefined'; }\n containsReadButton() { return typeof this.configObject['read-button'] !== 'undefined'; }\n containsFavoriteButton() { return typeof this.configObject['favorite-button'] !== 'undefined'; }\n containsLoadDetailUrl() { return typeof this.configObject['load-detail-url'] !== 'undefined'; }\n\n getInfoButtonUrl(bibItem: IBookInfo): string { return this.interpret(getBaseUrl()+this.configObject['info-button']['url'], bibItem); }\n getInfoButtonOnClick(bibItem: IBookInfo): string { return this.interpret(this.configObject['info-button']['onclick'], bibItem); }\n getInfoButtonOnClickCallable(bibItem: IBookInfo): string { return this.interpret(this.configObject['info-button']['onclick-callable'], bibItem); }\n getReadButtonUrl(bibItem: IBookInfo): string { return this.interpret(getBaseUrl()+this.configObject[\"read-button\"][\"url\"], bibItem); }\n getReadButtonOnClick(bibItem: IBookInfo): string { return this.interpret(this.configObject[\"read-button\"][\"onclick\"], bibItem); }\n getReadButtonOnClickCallable(bibItem: IBookInfo): string { return this.interpret(this.configObject[\"read-button\"][\"onclick-callable\"], bibItem); }\n getFavoriteButtonOnClick(bibItem: IBookInfo): string { return this.interpret(this.configObject[\"favorite-button\"][\"onclick\"], bibItem); }\n getFavoriteButtonOnClickCallable(bibItem: IBookInfo): string { return this.interpret(this.configObject[\"favorite-button\"][\"onclick-callable\"], bibItem); }\n getLoadDetailUrl(bibItem: IBookInfo): string { return this.interpret(this.configObject[\"load-detail-url\"], bibItem); }\n\n // getReadUrlProps(bibItem: IBookInfo): string { return this.configObject['read-button']; } // \"Tooltip\"\n}\n\nclass MiddlePanelConfiguration extends Configuration {\n\n constructor(configObj: Object) {\n super(configObj);\n }\n\n containsBody() { return typeof this.configObject['body'] !== 'undefined'; }\n containsTitle() { return typeof this.configObject['title'] !== 'undefined'; }\n containsShortInfo() { return typeof this.configObject['short-info'] !== 'undefined'; }\n containsFavorites() { return typeof this.configObject['favorites'] !== 'undefined'; }\n containsFavoritesMaxCount() { return typeof this.configObject['favorites']['maxCount'] !== 'undefined'; }\n containsCustom() { return typeof this.configObject['custom'] !== 'undefined'; }\n\n getCustom(bibItem: IBookInfo): string { return this.interpret(this.configObject['custom'], bibItem); }\n getTitle(bibItem: IBookInfo): string { return this.interpret(this.configObject['title'], bibItem); }\n getShortInfo(bibItem: IBookInfo): string { return this.interpret(this.configObject['short-info'], bibItem); }\n getBody(bibItem: IBookInfo): string { return this.interpret(this.configObject['body'], bibItem); }\n getFavoritesMaxCount(): number { return this.configObject['favorites']['maxCount']; }\n}\n\nclass MidRightPanelConfiguration extends Configuration {\n\n constructor(configObj: Object) {\n super(configObj);\n }\n\n containsBody() { return typeof this.configObject['body'] !== 'undefined'; }\n containsCustom() { return typeof this.configObject['custom'] !== 'undefined'; }\n\n getCustom(bibItem: IBookInfo): string { return this.interpret(this.configObject['custom'], bibItem); }\n getBody(bibItem: IBookInfo): string { return this.interpret(this.configObject['body'], bibItem); }\n}\n\nclass BottomPanelConfiguration extends Configuration {\n\n constructor(configObj: Object) {\n super(configObj);\n }\n\n containsBody() { return typeof this.configObject['body'] !== 'undefined'; }\n containsCustom() { return typeof this.configObject['custom'] !== 'undefined'; }\n\n getCustom(bibItem: IBookInfo): string { return this.interpret(this.configObject['custom'], bibItem); }\n getBody(bibItem: IBookInfo): string { return this.interpret(this.configObject['body'], bibItem); }\n\n}\n\n","/// \r\n/// \r\n/// \r\n/// \r\n\r\nclass BibliographyModule {\r\n\r\n private readonly errorHandler: ErrorHandler;\r\n private resultsContainer;\r\n private booksContainer: HTMLDivElement;\r\n private sortBarContainer: string;\r\n private forcedBookType: BookTypeEnum;\r\n private bibliographyFactoryResolver: BibliographyFactoryResolver;\r\n private configurationManager: ConfigurationManager;\r\n\r\n // https://github.com/Scalesoft/s-pagination\r\n // TODO: rebase (the local modifications) against the latest upstream version (3.0.1)\r\n private paginator: Pagination;\r\n private paginatorContainer: HTMLDivElement;\r\n private topPaginator: Pagination;\r\n private topPaginatorContainer: HTMLDivElement;\r\n private booksCount : number = 0;\r\n private booksOnPage: number = 10;\r\n\r\n private sortBar: SortBar;\r\n\r\n private sortChangeCallback: () => void;\r\n\r\n private defaultConfigurationUrl = $(\"#bibliography-configuration-default-url\").data(\"url\");\r\n\r\n private isConfigurationLoad=false;\r\n private onConfigurationLoad: Array<() => any>=[];\r\n\r\n constructor(resultsContainer: string, sortBarContainer: string, sortChangeCallback: () => void, forcedBookType?: BookTypeEnum, customConfigurationPath?: string, protected modulInicializator?: ModulInicializator) {\r\n this.errorHandler = new ErrorHandler();\r\n this.resultsContainer = $(resultsContainer);\r\n this.sortChangeCallback = sortChangeCallback;\r\n\r\n this.booksContainer = document.createElement(\"div\");\r\n $(this.booksContainer).addClass(\"bib-listing-books-div\");\r\n this.paginatorContainer = document.createElement(\"div\");\r\n $(this.paginatorContainer).addClass(\"bib-listing-pagination-div\");\r\n this.topPaginatorContainer = document.createElement(\"div\");\r\n $(this.topPaginatorContainer).addClass(\"bib-listing-pagination-div\");\r\n\r\n $(this.resultsContainer).append(this.topPaginatorContainer);\r\n $(this.resultsContainer).append(this.booksContainer);\r\n $(this.resultsContainer).append(this.paginatorContainer);\r\n\r\n this.sortBarContainer = sortBarContainer;\r\n this.forcedBookType = forcedBookType;\r\n\r\n //Download configuration\r\n let configDownloadPath = this.defaultConfigurationUrl;\r\n\r\n if (typeof customConfigurationPath !== \"undefined\" && customConfigurationPath !== null && customConfigurationPath !== \"\") {\r\n configDownloadPath = customConfigurationPath;\r\n }\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n traditional: true,\r\n url: configDownloadPath,\r\n dataType: 'json',\r\n contentType: 'application/json',\r\n success: (response) => {\r\n this.configurationManager = new ConfigurationManager(response);\r\n this.bibliographyFactoryResolver = new BibliographyFactoryResolver(this.configurationManager.getBookTypeConfigurations(), this.modulInicializator);\r\n $(this.sortBarContainer).empty();\r\n\r\n let listSortConfig = null;\r\n let moduleConfig = response[this.forcedBookType];\r\n if (moduleConfig) {\r\n listSortConfig = moduleConfig[\"list-sorting\"];\r\n }\r\n\r\n this.sortBar = new SortBar(this.sortChangeCallback, listSortConfig);\r\n var sortBarHtml = this.sortBar.makeSortBar(this.sortBarContainer);\r\n $(this.sortBarContainer).append(sortBarHtml);\r\n\r\n // reflect the correct/actual (as well as current) sort key and order\r\n // as per listSortConfig\r\n this.sortBar.updateSelectedOption();\r\n this.sortBar.updateSortOrderButton();\r\n\r\n this.isConfigurationLoad = true;\r\n for (let i = 0; i < this.onConfigurationLoad.length; i++) {\r\n this.onConfigurationLoad[i]();\r\n }\r\n },\r\n error: (jqXHR) => {\r\n this.showAjaxError(jqXHR);\r\n }\r\n });\r\n }\r\n\r\n public runAsyncOnLoad(callback:()=>any) {\r\n if (this.isConfigurationLoad) {\r\n callback();\r\n } else {\r\n this.onConfigurationLoad.push(callback);\r\n }\r\n\r\n return this.isConfigurationLoad;\r\n }\r\n\r\n public showBooks(books: IBookInfo[]) {\r\n this.clearBooks();\r\n this.clearLoading();\r\n if (typeof books !== \"undefined\" && books !== null && books.length > 0) {\r\n var bookDataList = new Array();\r\n var rootElement: HTMLUListElement = document.createElement('ul');\r\n rootElement.classList.add('bib-listing');\r\n this.booksContainer.appendChild(rootElement);\r\n $.each(books, (index, book: IBookInfo) => {\r\n var bibliographyHtml = this.makeBibliography(book);\r\n rootElement.appendChild(bibliographyHtml);\r\n\r\n bookDataList.push({\r\n bookId: book.BookId,\r\n bookType: book.BookType,\r\n bookName: book.Title,\r\n element: bibliographyHtml\r\n });\r\n });\r\n this.showFavoriteLabels(bookDataList);\r\n } else {\r\n var divElement: HTMLDivElement = document.createElement('div');\r\n $(divElement).addClass('bib-listing-empty');\r\n divElement.innerHTML = localization.translate(\"NoResultsToShow\", \"PluginsJs\").value;\r\n this.booksContainer.appendChild(divElement);\r\n }\r\n\r\n }\r\n\r\n private showFavoriteLabels(bookDataList: IBookRenderData[]) {\r\n var favoriteManager = new FavoriteManager();\r\n var bookIds = new Array();\r\n $.each(bookDataList, (index, bookData) => {\r\n bookData.$favoritesContainer = $(\".favorites\", bookData.element);\r\n bookData.$favoriteButton = $(\".favorite-button\", bookData.element);\r\n if (bookData.$favoritesContainer.length > 0 || bookData.$favoriteButton.length > 0) {\r\n bookIds.push(Number(bookData.bookId));\r\n }\r\n });\r\n if (bookIds.length === 0) return;\r\n\r\n var favoriteLabels: IFavoriteLabel[] = null;\r\n var favoriteBooksDictionary: DictionaryWrapper = null;\r\n\r\n favoriteManager.getLatestFavoriteLabels(labels => {\r\n favoriteLabels = labels;\r\n\r\n if (favoriteBooksDictionary != null) {\r\n this.finishShowingFavoriteLabels(bookDataList, favoriteBooksDictionary, favoriteLabels);\r\n }\r\n });\r\n\r\n favoriteManager.getFavoritesForBooks(null, bookIds, favoriteBooks => {\r\n favoriteBooksDictionary = new DictionaryWrapper();\r\n $.each(favoriteBooks, (index, favoriteLabeledBook) => {\r\n favoriteBooksDictionary.add(favoriteLabeledBook.id, favoriteLabeledBook.favoriteInfo);\r\n });\r\n\r\n if (favoriteLabels != null) {\r\n this.finishShowingFavoriteLabels(bookDataList, favoriteBooksDictionary, favoriteLabels);\r\n }\r\n });\r\n }\r\n\r\n private finishShowingFavoriteLabels(bookDataList: IBookRenderData[], favoriteBooksDictionary: DictionaryWrapper, favoriteLabels: IFavoriteLabel[]) {\r\n $.each(bookDataList, (index, bookData) => {\r\n var bookFavorites = favoriteBooksDictionary.get(bookData.bookId);\r\n if (bookFavorites) {\r\n var bibliographyFactory = this.getBibliographyFactory(bookData.bookType);\r\n bookData.$favoritesContainer.append(bibliographyFactory.makeFavoriteBookInfo(bookFavorites));\r\n }\r\n\r\n // create FavoriteStar\r\n if (bookData.$favoriteButton.length === 0) {\r\n return;\r\n }\r\n var newFavoriteDialog = NewFavoriteDialogProvider.getInstance(true);\r\n var favoriteStar = new FavoriteStar(bookData.$favoriteButton, FavoriteType.Project, bookData.bookId.toString(), bookData.bookName, newFavoriteDialog, new FavoriteManager(), () => {\r\n new NewFavoriteNotification().show();\r\n });\r\n if (bookFavorites) {\r\n favoriteStar.addFavoriteItems(bookFavorites);\r\n }\r\n favoriteStar.addFavoriteLabels(favoriteLabels);\r\n favoriteStar.make(\"left\", true);\r\n\r\n var className = bookData.$favoriteButton.data(\"buttonClass\");\r\n $(\"a\", bookData.$favoriteButton).addClass(className);\r\n });\r\n }\r\n\r\n public clearBooks() {\r\n $(this.booksContainer).empty();\r\n }\r\n\r\n public clearLoading() {\r\n $(\"#loader\").remove();\r\n }\r\n\r\n public showLoading() {\r\n if ($(\"#loader\").length === 0) {\r\n var loader = lv.create(null, \"lv-circles sm lv-mid lvt-5\");\r\n loader.setId(\"loader\");\r\n $(this.booksContainer).append(loader.getElement());\r\n }\r\n }\r\n\r\n public showSearchError() {\r\n this.showError(localization.translate(\"SearchError\", \"PluginsJs\").value);\r\n }\r\n\r\n public showPageLoadError() {\r\n this.showError(localization.translate(\"LoadingBookListError\", \"PluginsJs\").value);\r\n }\r\n\r\n public showAjaxError(jqXHR: JQueryXHR) {\r\n this.showError(this.errorHandler.getErrorMessage(jqXHR));\r\n }\r\n\r\n public showError(text: string) {\r\n var errorDiv = BibliographyFactory.makeError(text);\r\n $(this.booksContainer)\r\n .empty()\r\n .append(errorDiv);\r\n }\r\n\r\n private getBibliographyFactory(bookType: BookTypeEnum): BibliographyFactory {\r\n if (typeof this.forcedBookType == 'undefined') {\r\n return this.bibliographyFactoryResolver.getFactoryForType(bookType);\r\n } else {\r\n return this.bibliographyFactoryResolver.getFactoryForType(this.forcedBookType);\r\n }\r\n }\r\n\r\n private makeBibliography(bibItem: IBookInfo): HTMLLIElement {\r\n var liElement: HTMLLIElement = document.createElement('li');\r\n $(liElement).addClass('list-item');\r\n $(liElement).attr(\"data-id\", bibItem.BookId);\r\n $(liElement).attr(\"data-booktype\", bibItem.BookType);\r\n $(liElement).attr(\"data-name\", bibItem.Title);\r\n\r\n var visibleContent: HTMLDivElement = document.createElement('div');\r\n $(visibleContent).addClass('visible-content');\r\n var visibleWrapper: HTMLDivElement = document.createElement('div');\r\n $(visibleWrapper).addClass('visible-wrapper');\r\n\r\n this.runAsyncOnLoad(()=> {\r\n var bibFactory = this.getBibliographyFactory(bibItem.BookType);\r\n\r\n var leftPanel = bibFactory.makeLeftPanel(bibItem);\r\n if (leftPanel != null) visibleWrapper.appendChild(leftPanel);\r\n\r\n var middlePanel = bibFactory.makeMiddlePanel(bibItem);\r\n if (middlePanel != null) visibleWrapper.appendChild(middlePanel);\r\n\r\n var midRightPanel = bibFactory.makeMidRightPanel(bibItem);\r\n if (midRightPanel != null) visibleWrapper.appendChild(midRightPanel);\r\n\r\n var rightPanel = bibFactory.makeRightPanel(bibItem);\r\n if (rightPanel != null) visibleWrapper.appendChild(rightPanel);\r\n\r\n $(visibleContent).append(visibleWrapper);\r\n $(liElement).append(visibleContent);\r\n\r\n var hiddenContent: HTMLDivElement = document.createElement('div');\r\n $(hiddenContent).addClass('hidden-content');\r\n\r\n if (bibFactory.configuration.containsBottomPanel()) {\r\n $(hiddenContent).addClass(\"not-loaded\");\r\n\r\n var loadingDiv = lv.create(null, \"lv-circles lv-mid sm lvt-2 lvb-2\");\r\n hiddenContent.appendChild(loadingDiv.getElement());\r\n }\r\n\r\n $(liElement).append(hiddenContent);\r\n });\r\n\r\n return liElement;\r\n\r\n }\r\n\r\n public showPage(pageNumber: number) {\r\n this.paginator.goToPage(pageNumber);\r\n this.topPaginator.goToPage(pageNumber);\r\n }\r\n\r\n public createPagination(booksOnPage: number, pageClickCallback: (pageNumber: number) => void, booksCount: number, initPageNumber: number = 1) {\r\n this.booksCount = booksCount;\r\n this.booksOnPage = booksOnPage;\r\n\r\n var paginationOptions: Pagination.Options = {\r\n container: this.paginatorContainer,\r\n pageClickCallback: pageClickCallback,\r\n callPageClickCallbackOnInit: true\r\n };\r\n this.paginator = new Pagination(paginationOptions);\r\n this.paginator.make(booksCount, booksOnPage, initPageNumber);\r\n\r\n var topPaginationOptions: Pagination.Options = {\r\n container: this.topPaginatorContainer,\r\n pageClickCallback: pageClickCallback,\r\n callPageClickCallbackOnInit: true\r\n };\r\n this.topPaginator = new Pagination(topPaginationOptions);\r\n this.topPaginator.make(booksCount, booksOnPage, initPageNumber);\r\n\r\n this.topPaginator.setOtherPagination(this.paginator);\r\n this.paginator.setOtherPagination(this.topPaginator);\r\n }\r\n\r\n public getPagesCount(): number {\r\n return this.paginator.getPageCount();\r\n }\r\n\r\n public getBooksCount(): number {\r\n return this.booksCount;\r\n }\r\n\r\n public getBooksCountOnPage(): number {\r\n return this.booksOnPage;\r\n }\r\n\r\n public destroyPagination() {\r\n $(this.paginatorContainer).empty();\r\n this.paginator = null;\r\n $(this.topPaginatorContainer).empty();\r\n this.topPaginator = null;\r\n }\r\n\r\n public isSortedAsc(): boolean {\r\n return this.sortBar.isSortedAsc();\r\n }\r\n\r\n public setSortedAsc(isSortedAsc: boolean) {\r\n this.sortBar.setSortedAsc(isSortedAsc);\r\n }\r\n\r\n public getSortCriteria(): SortEnum {\r\n return this.sortBar.getSortCriteria();\r\n }\r\n\r\n public setSortCriteria(sortCriteria: SortEnum) {\r\n return this.sortBar.setSortCriteria(sortCriteria);\r\n }\r\n}\r\n\r\n//var newFavoriteFromBibliographyDialog: NewFavoriteDialog;\r\n//function addFavoriteFromBibliography(target) {\r\n// return context => {\r\n// if (!newFavoriteFromBibliographyDialog) {\r\n// var favoriteManager = new FavoriteManager();\r\n// newFavoriteFromBibliographyDialog = new NewFavoriteDialog(favoriteManager, true);\r\n// newFavoriteFromBibliographyDialog.make();\r\n// }\r\n\r\n// var $item = $(target).parents(\"li.list-item\");\r\n// var bookId = $item.attr(\"data-id\");\r\n// var bookName = $item.attr(\"data-name\");\r\n// newFavoriteFromBibliographyDialog.setSaveCallback(data => {\r\n// var favoriteManager = new FavoriteManager();\r\n// var labelIds: Array = [];\r\n// var labelElements: Array = [];\r\n// for (var i = 0; i < data.labels.length; i++) {\r\n// var label = data.labels[i];\r\n// labelIds.push(label.labelId);\r\n// var labelSpan = BibliographyFactory.makeFavoriteLabel(data.itemName, label.labelName, label.labelColor);\r\n// labelElements.push(labelSpan);\r\n// }\r\n// favoriteManager.createFavoriteItem(FavoriteType.Book, bookId, data.itemName, labelIds, (ids, error) => {\r\n// if (error) {\r\n// newFavoriteFromBibliographyDialog.showError(\"Chyba při vytváření oblíbené knihy\");\r\n// return;\r\n// }\r\n\r\n// newFavoriteFromBibliographyDialog.hide();\r\n// $(\".favorites\", $item).append(labelElements);\r\n// });\r\n// });\r\n// newFavoriteFromBibliographyDialog.show(bookName);\r\n// };\r\n//}\r\n\r\n//functions used in VariableInterpreter.interpretScript\r\n\r\nfunction translateAudioType(audioType: AudioType): string {\r\n switch (audioType) {\r\n case AudioType.Mp3:\r\n return \"Mp3\";\r\n case AudioType.Ogg:\r\n return \"Ogg\";\r\n case AudioType.Wav:\r\n return \"Wav\";\r\n default:\r\n return localization.translate(\"Unknown\", \"PluginsJs\").value;\r\n }\r\n}\r\n\r\nfunction fillLeadingZero(seconds: number): string {\r\n var secondsString = seconds.toString();\r\n if (secondsString.length === 1) {\r\n secondsString = `0${secondsString}`;\r\n }\r\n return secondsString;\r\n}\r\n\r\nfunction getAudioLengthString(value: string): string {\r\n return new TimeSpan(value).toShortString();\r\n}\r\n\r\ninterface IBookRenderData {\r\n bookId: string;\r\n bookType: BookTypeEnum;\r\n bookName: string;\r\n element: HTMLLIElement;\r\n $favoritesContainer?: JQuery;\r\n $favoriteButton?: JQuery;\r\n}\r\n\r\ninterface IBookInfo {\r\n BookId: string;\r\n ProjectType: ProjectType;\r\n TextType: ProjectTextType;\r\n BookType: BookTypeEnum;\r\n Title: string;\r\n RelicAbbreviation: string;\r\n SourceAbbreviation: string;\r\n // there are other properties but they are not required in TypeScript because they are used in configuration JSON file\r\n}\r\n\r\nenum BookTypeEnum {\r\n Edition = \"Edition\", //Edice\r\n Dictionary = \"Dictionary\", //Slovnik\r\n Grammar = \"Grammar\", //Mluvnice\r\n ProfessionalLiterature = \"ProfessionalLiterature\", //Odborna literatura\r\n TextBank = \"TextBank\", //Textova banka\r\n BibliographicalItem = \"BibliographicalItem\",\r\n CardFile = \"CardFile\",\r\n AudioBook = \"AudioBook\"\r\n}\r\n\r\nenum ProjectType {\r\n Research = \"Research\",\r\n Community = \"Community\",\r\n Bibliography = \"Bibliography\",\r\n}\r\n\r\nenum ProjectTextType {\r\n NoneOrOriginal = \"NoneOrOriginal\",\r\n Transliterated = \"Transliterated\",\r\n Transcribed = \"Transcribed\",\r\n}\r\n\r\n//interface IPage {\r\n// Start: number;\r\n// End: number;\r\n//}\r\n\r\ninterface IAuthor {\r\n FirstName: string;\r\n LastName: string;\r\n}\r\n","class SortBar {\r\n private currentSortOrder: number;\r\n private currentSortOptionValue: SortEnum;\r\n private sortChangeCallback: () => void;\r\n\r\n private ascSortOrder = 1;\r\n private descSortOrder = -1;\r\n\r\n private sortBarContainer: JQuery;\r\n\r\n constructor(\r\n sortChangeCallback: () => void,\r\n listSortConfig?: {key: string, direction: string})\r\n {\r\n this.currentSortOrder = this.ascSortOrder;\r\n this.currentSortOptionValue = SortEnum.Title;\r\n\r\n // The dictionary and grammar modules can override the defaults through\r\n // .../wwwroot/content/BibliographyConfiguration/configuration.json and\r\n // .../wwwroot/Areas/OldGrammar/content/BibliographyPlugin/list_configuration.json, respectively\r\n if (listSortConfig) {\r\n this.currentSortOrder = listSortConfig.direction == 'asc' ? this.ascSortOrder : this.descSortOrder;\r\n this.currentSortOptionValue = SortEnum[listSortConfig.key];\r\n }\r\n\r\n this.sortChangeCallback = sortChangeCallback;\r\n }\r\n\r\n public makeSortBar(sortBarContainer: string): HTMLDivElement {\r\n this.sortBarContainer = $(sortBarContainer);\r\n\r\n var sortBarDiv: HTMLDivElement = document.createElement('div');\r\n $(sortBarDiv).addClass('bib-sortbar');\r\n\r\n var select: HTMLSelectElement = document.createElement('select');\r\n\r\n $(select).on('change', () =>\r\n {\r\n let selectedOptionValue: string = this.sortBarContainer.find('div.bib-sortbar').find('select').find(\"option:selected\").val() as string;\r\n let intValue = parseInt(selectedOptionValue);\r\n\r\n // Ensure \"relevance\" or \"priority\" sorting is descending by default\r\n // and sorting by the other keys is ascending -- upon selection.\r\n if (this.isSortedAsc() && intValue == SortEnum.Relevance) {\r\n this.currentSortOrder = this.descSortOrder;\r\n\r\n } else if (!this.isSortedAsc() && this.currentSortOptionValue == SortEnum.Relevance) {\r\n this.currentSortOrder = this.ascSortOrder;\r\n }\r\n\r\n this.changeSortCriteria(intValue);\r\n this.updateSortOrderButton();\r\n });\r\n\r\n // XXX: these options should be \"module\"/area-specific\r\n this.addOption(select, localization.translate(\"RelevanceSort\", \"PluginsJs\").value, SortEnum.Relevance.toString());\r\n this.addOption(select, localization.translate(\"TitleSort\", \"PluginsJs\").value, SortEnum.Title.toString());\r\n this.addOption(select, localization.translate(\"DatingSort\", \"PluginsJs\").value, SortEnum.Dating.toString());\r\n this.addOption(select, localization.translate(\"AuthorSort\", \"PluginsJs\").value, SortEnum.Author.toString());\r\n this.addOption(select, localization.translate(\"IntroductionYearSort\", \"PluginsJs\").value, SortEnum.IntroductionYear.toString());\r\n\r\n sortBarDiv.appendChild(select);\r\n\r\n var sortOrderButton: HTMLButtonElement = document.createElement('button');\r\n sortOrderButton.type = 'button';\r\n $(sortOrderButton).addClass('btn btn-sm sort-button');\r\n\r\n var spanSortAsc: HTMLSpanElement = document.createElement('span');\r\n // glyphicon-arrow-up/down is added later by updateSortOrderButton invoked by BibliographyModule\r\n // XXX: but itjakub.bohemiantextbank.search.ts should also be updated...\r\n $(spanSortAsc).addClass('glyphicon');\r\n sortOrderButton.appendChild(spanSortAsc);\r\n\r\n $(sortOrderButton).on('click', () =>\r\n {\r\n this.toggleSortOrder();\r\n this.updateSortOrderButton();\r\n });\r\n\r\n sortBarDiv.appendChild(sortOrderButton);\r\n\r\n return sortBarDiv;\r\n }\r\n\r\n // XXX: they say this is unused\r\n private sort(comparator: (a: HTMLLIElement, b: HTMLLIElement) => number, order: number, booksContainer: string) {\r\n var elems: Array = >$(booksContainer).children('ul.bib-listing').children('li').detach();\r\n var sortFunction = (a, b) => { return order * comparator(a, b); };\r\n elems.sort(sortFunction);\r\n $(booksContainer).children('ul.bib-listing').append(elems);\r\n }\r\n\r\n private toggleSortOrder()\r\n {\r\n this.currentSortOrder = (this.currentSortOrder === this.ascSortOrder) ? this.descSortOrder : this.ascSortOrder;\r\n this.sortingChanged();\r\n }\r\n\r\n private changeSortCriteria(sortOptionValue: SortEnum) // sort \"criterion\" or \"key\"\r\n {\r\n this.currentSortOptionValue = sortOptionValue;\r\n this.sortingChanged();\r\n }\r\n\r\n private sortingChanged() {\r\n this.sortChangeCallback();\r\n }\r\n\r\n private addOption(selectbox: HTMLSelectElement, text: string, value: string) {\r\n var option: HTMLOptionElement = document.createElement('option');\r\n option.text = text;\r\n option.value = value;\r\n selectbox.appendChild(option);\r\n }\r\n\r\n public isSortedAsc(): boolean {\r\n return this.currentSortOrder === this.ascSortOrder;\r\n }\r\n\r\n public setSortedAsc(sortAsc: boolean) {\r\n this.currentSortOrder = sortAsc ? this.ascSortOrder : this.descSortOrder;\r\n this.updateSortOrderButton();\r\n }\r\n\r\n // called by “ModulInicializator”: editionBasicSearchPaged (yep, even in the case of dictionaries)\r\n public getSortCriteria(): SortEnum {\r\n return this.currentSortOptionValue;\r\n }\r\n\r\n public setSortCriteria(sortCriteria: SortEnum) {\r\n this.currentSortOptionValue = sortCriteria;\r\n this.updateSelectedOption();\r\n }\r\n\r\n public updateSelectedOption()\r\n {\r\n this.sortBarContainer.find('div.bib-sortbar').find('select').val(this.currentSortOptionValue.toString());\r\n }\r\n\r\n public updateSortOrderButton()\r\n {\r\n // XXX: why not store this.sortOrderButtonIcon?\r\n let sortOrderButtonIcon = this.sortBarContainer.find('div.bib-sortbar').find('.sort-button').find(\".glyphicon\");\r\n $(sortOrderButtonIcon).removeClass(\"glyphicon-arrow-up glyphicon-arrow-down\");\r\n this.isSortedAsc() ? $(sortOrderButtonIcon).addClass(\"glyphicon-arrow-up\") : $(sortOrderButtonIcon).addClass(\"glyphicon-arrow-down\");\r\n }\r\n}\r\n\r\n/*\r\n * Mirroring of C# datacontract in namespace ITJakub.Shared.Contracts.Searching.Criteria\r\n *\r\n * [DataContract]\r\n public enum SortEnum : short\r\n {\r\n [EnumMember]\r\n Author = 0,\r\n [EnumMember]\r\n Title = 1,\r\n [EnumMember]\r\n Dating = 2,\r\n }\r\n */\r\n\r\nenum SortEnum {\r\n Author = 0,\r\n Title = 1,\r\n Dating = 2,\r\n Relevance = 3,\r\n IntroductionYear = 4,\r\n}\r\n\r\nenum SortDirection {\r\n Asc = 0,\r\n Desc = 1,\r\n}\r\n","class DropDownSelectCallbackDelegate {\r\n // callbacks needs to be implemented\r\n\r\n starSaveItemCallback: (info: CallbackInfo) => void;\r\n starSaveCategoryCallback: (info: CallbackInfo) => void;\r\n starDeleteItemCallback: (info: CallbackInfo) => void;\r\n starDeleteCategoryCallback: (info: CallbackInfo) => void;\r\n\r\n selectedChangedCallback: (state: State) => void;\r\n\r\n getTypeFromResponseCallback: (response) => string;\r\n getRootCategoryCallback: (categories) => any;\r\n getCategoryIdCallback: (category) => string;\r\n getCategoryTextCallback: (category) => string;\r\n\r\n getLeafItemIdCallback: (category) => string;\r\n getLeafItemTextCallback: (category) => string;\r\n\r\n getCategoriesFromResponseCallback: (response) => any;\r\n getLeafItemsFromResponseCallback: (response) => any;\r\n\r\n getChildCategoriesCallback: (categories, currentCategory) => Array;\r\n getChildLeafItemsCallback: (leafItems, currentCategory) => Array;\r\n\r\n dataLoadedCallback: (rootCategoryId) => void;\r\n\r\n\r\n constructor() {\r\n this.makeDefaults();\r\n }\r\n\r\n //working callbacks for advanced search\r\n private makeDefaults() {\r\n this.getTypeFromResponseCallback = (response): string => {\r\n return response[\"type\"];\r\n };\r\n\r\n this.getCategoriesFromResponseCallback = (response): any => {\r\n return response[\"categories\"];\r\n };\r\n\r\n this.getLeafItemsFromResponseCallback = (response): any => {\r\n return response[\"books\"];\r\n };\r\n\r\n this.getRootCategoryCallback = (categories): any => {\r\n if (typeof categories !== \"undefined\" && categories !== null) {\r\n var rootCategories = categories[\"\"];\r\n if (typeof rootCategories !== \"undefined\" && rootCategories !== null && rootCategories.length > 0) {\r\n return rootCategories[0];\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n this.getCategoryIdCallback = (category): string => {\r\n return category[\"Id\"];\r\n };\r\n\r\n this.getLeafItemIdCallback = (leafItem): string => {\r\n return leafItem[\"Id\"];\r\n };\r\n\r\n this.getChildCategoriesCallback = (categories, currentCategory): Array => {\r\n return categories[currentCategory[\"Id\"]];\r\n };\r\n\r\n this.getChildLeafItemsCallback = (leafItems, currentCategory): Array => {\r\n return leafItems[currentCategory[\"Id\"]];\r\n };\r\n\r\n this.getCategoryTextCallback = (category): string => {\r\n return category[\"Description\"];\r\n };\r\n\r\n this.getLeafItemTextCallback = (leafItem): string => {\r\n return leafItem[\"Title\"];\r\n };\r\n }\r\n}\r\n\r\nclass DropDownSelect {\r\n\r\n protected dropDownSelectContainer: string;\r\n protected dataUrl: string;\r\n protected extraCssClasses: string[];\r\n protected showStar: boolean;\r\n protected favoriteCategoryUrl: string;\r\n protected favoriteLeafUrl: string;\r\n private type: string;\r\n private selectedItems: Array;\r\n private selectedCategories: Array;\r\n protected callbackDelegate: DropDownSelectCallbackDelegate;\r\n private moreSpan: HTMLSpanElement;\r\n protected dropDownBodyDiv: HTMLDivElement;\r\n protected favoriteManager: FavoriteManager;\r\n protected favoriteDialog: NewFavoriteDialog;\r\n private headerLoader = lv.create(null, \"lv-circles tiniest dropdown-loader-color dropdown-align-loader\");\r\n\r\n constructor(\r\n dropDownSelectContainer: string,\r\n dataUrl: string,\r\n showStar: boolean,\r\n callbackDelegate: DropDownSelectCallbackDelegate,\r\n props?: {\r\n extraCssClasses: string[];\r\n },\r\n ) {\r\n this.dropDownSelectContainer = dropDownSelectContainer;\r\n this.dataUrl = dataUrl;\r\n // TypeScript 3.7+\r\n this.extraCssClasses = (props ?? {}).extraCssClasses ?? [];\r\n this.showStar = showStar;\r\n this.callbackDelegate = callbackDelegate;\r\n this.selectedCategories = new Array();\r\n this.selectedItems = new Array();\r\n this.favoriteManager = new FavoriteManager();\r\n this.favoriteDialog = NewFavoriteDialogProvider.getInstance(true);\r\n }\r\n\r\n private getType(response): string {\r\n return this.callbackDelegate.getTypeFromResponseCallback(response);\r\n }\r\n\r\n private getRootCategory(categories): any {\r\n return this.callbackDelegate.getRootCategoryCallback(categories);\r\n }\r\n\r\n private getCategoryId(category): string {\r\n return this.callbackDelegate.getCategoryIdCallback(category);\r\n }\r\n\r\n private getCategoryName(category): string {\r\n return this.callbackDelegate.getCategoryTextCallback(category);\r\n }\r\n\r\n private getLeafItemId(leafItem): string {\r\n return this.callbackDelegate.getLeafItemIdCallback(leafItem);\r\n }\r\n\r\n private getLeafItemName(leafItem): string {\r\n return this.callbackDelegate.getLeafItemTextCallback(leafItem);\r\n }\r\n\r\n private getCategories(response): any {\r\n return this.callbackDelegate.getCategoriesFromResponseCallback(response);\r\n }\r\n\r\n private getLeafItems(response): any {\r\n return this.callbackDelegate.getLeafItemsFromResponseCallback(response);\r\n }\r\n\r\n private getChildCategories(categories, currentCategory): Array {\r\n return this.callbackDelegate.getChildCategoriesCallback(categories, currentCategory);\r\n }\r\n\r\n private getChildLeafItems(leafItems, currentCategory): Array {\r\n return this.callbackDelegate.getChildLeafItemsCallback(leafItems, currentCategory);\r\n }\r\n\r\n public setFavoritesFetchUrl(categoryUrl: string, leafUrl: string) {\r\n this.favoriteCategoryUrl = categoryUrl;\r\n this.favoriteLeafUrl = leafUrl;\r\n }\r\n\r\n makeDropdown() {\r\n this.favoriteDialog.make();\r\n\r\n var dropDownDiv = document.createElement(\"div\");\r\n $(dropDownDiv).addClass(\"dropdown-select\");\r\n\r\n for (var className of this.extraCssClasses) {\r\n $(dropDownDiv).addClass(className);\r\n }\r\n\r\n this.makeHeader(dropDownDiv);\r\n this.makeBody(dropDownDiv);\r\n\r\n $(document.documentElement).off(\"click.dropdown\");\r\n $(document.documentElement).on(\"click.dropdown\", (event) => {\r\n var parents = $(event.target as Node as Element).parents();\r\n if (!parents.is(dropDownDiv) && !parents.is(\".popover\")) {\r\n this.hideBody();\r\n }\r\n });\r\n\r\n $(this.dropDownSelectContainer).empty();\r\n $(this.dropDownSelectContainer).append(dropDownDiv);\r\n }\r\n\r\n private makeHeader(dropDownDiv: HTMLDivElement) {\r\n\r\n var dropDownHeadDiv = document.createElement(\"div\");\r\n $(dropDownHeadDiv).addClass(\"dropdown-select-header\");\r\n\r\n var checkBoxSpan = document.createElement(\"span\");\r\n $(checkBoxSpan).addClass(\"dropdown-select-checkbox\");\r\n\r\n var checkbox = document.createElement(\"input\");\r\n checkbox.type = \"checkbox\";\r\n\r\n checkBoxSpan.appendChild(checkbox);\r\n\r\n dropDownHeadDiv.appendChild(checkBoxSpan);\r\n\r\n var textSpan = document.createElement(\"span\");\r\n $(textSpan).addClass(\"dropdown-select-text\");\r\n $(textSpan).text(\"\"); //TODO read from parameter when root is not unique or is not description\r\n\r\n dropDownHeadDiv.appendChild(textSpan);\r\n\r\n var moreSpan = document.createElement(\"span\");\r\n $(moreSpan).addClass(\"dropdown-select-more\");\r\n\r\n $(moreSpan).click(()=> {\r\n if ($(this.dropDownBodyDiv).is(\":hidden\")) {\r\n this.showBody();\r\n } else {\r\n this.hideBody();\r\n }\r\n });\r\n\r\n this.moreSpan = moreSpan;\r\n\r\n var iconSpan = document.createElement(\"span\");\r\n $(iconSpan).addClass(\"glyphicon glyphicon-chevron-down\");\r\n\r\n moreSpan.appendChild(iconSpan);\r\n\r\n dropDownHeadDiv.appendChild(moreSpan);\r\n\r\n dropDownHeadDiv.append(this.headerLoader.getElement());\r\n\r\n dropDownDiv.appendChild(dropDownHeadDiv);\r\n }\r\n\r\n showBody() {\r\n $(this.moreSpan).children().removeClass(\"glyphicon-chevron-down\");\r\n $(this.moreSpan).children().addClass(\"glyphicon-chevron-up\");\r\n $(this.dropDownBodyDiv).slideDown(\"fast\");\r\n }\r\n\r\n private hideBody() {\r\n $(this.moreSpan).children().removeClass(\"glyphicon-chevron-up\");\r\n $(this.moreSpan).children().addClass(\"glyphicon-chevron-down\");\r\n $(this.dropDownBodyDiv).slideUp(\"fast\");\r\n }\r\n\r\n private makeBody(dropDownDiv: HTMLDivElement) {\r\n var dropDownBodyDiv = document.createElement(\"div\");\r\n $(dropDownBodyDiv).addClass(\"dropdown-select-body\");\r\n\r\n this.dropDownBodyDiv = dropDownBodyDiv;\r\n\r\n var filterDiv = document.createElement(\"div\");\r\n $(filterDiv).addClass(\"dropdown-filter\");\r\n\r\n var filterInput = document.createElement(\"input\");\r\n $(filterInput).addClass(\"dropdown-filter-input\");\r\n filterInput.placeholder = localization.translate(\"FilterByName\", \"PluginsJs\").value;\r\n\r\n $(filterInput).keyup(function() {\r\n $(this).change();\r\n });\r\n\r\n $(filterInput).change(function() {\r\n if ($(this).val() == \"\") {\r\n $(this).parents(\".dropdown-select-body\").find(\".concrete-item\").show();\r\n } else {\r\n $(this).parents(\".dropdown-select-body\").find(\".concrete-item\").hide();\r\n $(this).parents(\".dropdown-select-body\").find(\".concrete-item-name\").filter(`:containsCI(${$(this).val()})`).parents(\".concrete-item\").show();\r\n }\r\n });\r\n\r\n filterDiv.appendChild(filterInput);\r\n\r\n var filterClearSpan = document.createElement(\"span\");\r\n $(filterClearSpan).addClass(\"dropdown-clear-filter glyphicon glyphicon glyphicon-remove-circle\");\r\n\r\n $(filterClearSpan).click(function() {\r\n $(this).siblings(\".dropdown-filter-input\").val(\"\").change();\r\n });\r\n\r\n filterDiv.appendChild(filterClearSpan);\r\n\r\n dropDownBodyDiv.appendChild(filterDiv);\r\n\r\n dropDownDiv.appendChild(dropDownBodyDiv);\r\n\r\n this.downloadData(dropDownBodyDiv); // XXX: see DropDownSelect2.downloadData\r\n }\r\n\r\n // XXX: this is shadowed/overridden by DropDownSelect2's own downloadData\r\n protected downloadData(dropDownItemsDiv: HTMLDivElement) {\r\n var self = this;\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n traditional: true,\r\n data: {},\r\n url: this.dataUrl,\r\n dataType: \"json\",\r\n contentType: \"application/json\",\r\n success: (response) => {\r\n self.type = this.getType(response);\r\n var categories = this.getCategories(response);\r\n var items = this.getLeafItems(response);\r\n\r\n this.makeTreeStructure(categories, items, dropDownItemsDiv);\r\n\r\n var rootCategory = this.getRootCategory(categories);\r\n var rootCategoryId = this.getCategoryId(rootCategory);\r\n this.dataLoaded(rootCategoryId);\r\n\r\n this.downloadFavoriteData(dropDownItemsDiv);\r\n },\r\n error: jqXHR => {\r\n $(dropDownItemsDiv).children(\"div.lv-circles\").remove();\r\n $(dropDownItemsDiv).siblings(\".dropdown-select-header\").children(\"div.lv-circles\").remove();\r\n const selectHeader = $(dropDownItemsDiv).parent().children(\".dropdown-select-header\");\r\n $(selectHeader).children(\".dropdown-select-text\").append(localization.translate(\"LoadingContentError\", \"PluginsJs\").value);\r\n this.dataLoaded(null);\r\n this.downloadFavoriteData(dropDownItemsDiv);\r\n }\r\n });\r\n }\r\n\r\n protected downloadFavoriteData(dropDownItemsDiv: HTMLDivElement) {\r\n throw new Error(\"Not implemented\");\r\n }\r\n\r\n protected updateFavoriteIcons(categoryItems: Array, leafItems: Array, favoriteLabels: Array, dropdownItemsDiv: HTMLDivElement) {\r\n var categoriesDictionary = new DictionaryWrapper();\r\n var leafsDictionary = new DictionaryWrapper();\r\n\r\n for (var i = 0; i < categoryItems.length; i++) {\r\n categoriesDictionary.add(categoryItems[i].id, categoryItems[i]);\r\n }\r\n for (var j = 0; j < leafItems.length; j++) {\r\n leafsDictionary.add(leafItems[j].id, leafItems[j]);\r\n }\r\n\r\n $(\".concrete-item\", dropdownItemsDiv).each((index, element) => {\r\n const jqEl = $(element as Node as HTMLElement);\r\n var id = jqEl.data(\"id\");\r\n var type = jqEl.data(\"type\");\r\n var itemName = jqEl.data(\"name\");\r\n\r\n var favoriteItem: IDropdownFavoriteItem = null;\r\n var favoriteType: FavoriteType = FavoriteType.Unknown;\r\n\r\n if (type === \"category\") {\r\n favoriteItem = categoriesDictionary.get(id);\r\n favoriteType = FavoriteType.Category;\r\n } else if (type === \"item\") {\r\n favoriteItem = leafsDictionary.get(id);\r\n favoriteType = FavoriteType.Project;\r\n }\r\n\r\n var favoriteStarContainer = jqEl.children(\".save-item\");\r\n var favoriteStar = new FavoriteStar(favoriteStarContainer, favoriteType, id, itemName, this.favoriteDialog, this.favoriteManager, () => this.onFavoritesChanged(favoriteType, id));\r\n\r\n if (favoriteItem != null) {\r\n favoriteStar.addFavoriteItems(favoriteItem.favoriteInfo);\r\n }\r\n\r\n favoriteStar.addFavoriteLabels(favoriteLabels);\r\n favoriteStar.make(null, true);\r\n });\r\n }\r\n\r\n protected onFavoritesChanged(favoriteType: FavoriteType, id: number) {\r\n new NewFavoriteNotification().show();\r\n }\r\n\r\n protected makeTreeStructure(categories, leafItems, dropDownItemsDiv: HTMLDivElement) {\r\n var rootCategory = this.getRootCategory(categories);\r\n\r\n var selectHeader = $(dropDownItemsDiv).parent().children(\".dropdown-select-header\");\r\n $(selectHeader).children(\".dropdown-select-text\").append(this.getCategoryName(rootCategory));\r\n\r\n $(selectHeader).data(\"id\", this.getCategoryId(rootCategory));\r\n $(selectHeader).data(\"name\", this.getCategoryName(rootCategory));\r\n $(selectHeader).data(\"type\", \"category\");\r\n\r\n var checkbox = $(selectHeader).children(\"span.dropdown-select-checkbox\").children(\"input\")[0] as Node as HTMLInputElement;\r\n var info = this.createCallbackInfo(this.getCategoryId(rootCategory), this.getCategoryName(rootCategory), selectHeader);\r\n $(checkbox).change((event: JQuery.Event, propagate: boolean) => {\r\n var items = $(dropDownItemsDiv).children(\".concrete-item\").children(\"input\");\r\n if (checkbox.checked) {\r\n if (typeof info.ItemId !== \"undefined\" && info.ItemId !== null) {\r\n this.addToSelectedCategories(info);\r\n items.prop(\"checked\", false);\r\n items.prop(\"indeterminate\", false);\r\n items.trigger(\"change\",[false]);\r\n $(dropDownItemsDiv).find(\".concrete-item\").find(\"input\").prop(\"checked\", true);\r\n } else {\r\n items.prop(\"checked\", false);\r\n items.prop(\"indeterminate\", false);\r\n items.trigger(\"change\", [false]);\r\n items.prop(\"checked\", true);\r\n items.trigger(\"change\", [false]);\r\n }\r\n } else {\r\n this.removeFromSelectedCategories(info);\r\n items.prop(\"checked\", false);\r\n items.trigger(\"change\", [false]);\r\n }\r\n\r\n if (typeof propagate === \"undefined\" || propagate === null || propagate) { //Deafault behaviour is to propagate change\r\n this.propagateRootSelectChange(checkbox);\r\n }\r\n });\r\n\r\n var childCategories = this.getChildCategories(categories, rootCategory);\r\n var childLeafItems = this.getChildLeafItems(leafItems, rootCategory);\r\n\r\n if (typeof (childCategories) !== \"undefined\" && childCategories !== null) {\r\n for (var i = 0; i < childCategories.length; i++) {\r\n var childCategory = childCategories[i];\r\n this.makeCategoryItem(dropDownItemsDiv, childCategory, categories, leafItems);\r\n }\r\n }\r\n\r\n if (typeof (childLeafItems) !== \"undefined\" && childLeafItems !== null) {\r\n for (var i = 0; i < childLeafItems.length; i++) {\r\n var childBook = childLeafItems[i];\r\n this.makeLeafItem(dropDownItemsDiv, childBook);\r\n }\r\n }\r\n this.headerLoader.hide();\r\n }\r\n\r\n protected dataLoaded(rootCategoryId) {\r\n if (this.callbackDelegate.dataLoadedCallback)\r\n this.callbackDelegate.dataLoadedCallback(rootCategoryId);\r\n }\r\n\r\n protected onCreateCategoryCheckBox(categoryId: any, checkBox: HTMLInputElement) { }\r\n\r\n protected propagateRootSelectChange(item: HTMLInputElement) { }\r\n\r\n protected propagateLeafSelectChange(item: HTMLInputElement, info: CallbackInfo) { }\r\n\r\n protected propagateCategorySelectChange(item: HTMLInputElement, info: CallbackInfo) { }\r\n\r\n protected propagateSelectChange(concreteItemSource: HTMLDivElement) {\r\n var actualItem = $(concreteItemSource).parent().closest(\".concrete-item\");\r\n var actualItemInput: JQuery;\r\n var actualItemChilds: JQuery;\r\n var checkedChilds: JQuery;\r\n var indeterminateChilds: JQuery;\r\n if (actualItem.length === 0) { //for checkbox in header\r\n actualItem = $(concreteItemSource).parent().closest(\".dropdown-select\").children(\".dropdown-select-header\") as JQuery;\r\n actualItemInput = $(actualItem).children(\".dropdown-select-checkbox\").children(\"input\");\r\n actualItemChilds = $(actualItem).parent().closest(\".dropdown-select\").children(\".dropdown-select-body\").children(\".concrete-item\");\r\n checkedChilds = $(actualItemChilds).children(\"input:checked\");\r\n indeterminateChilds = $.grep(actualItemChilds.get(),(itemChild) => ($(itemChild).children(\"input\").prop(\"indeterminate\") === true), false);\r\n\r\n if (!actualItem.data(\"id\")) {\r\n if (actualItemChilds.length !== 0) {\r\n if (checkedChilds.length === actualItemChilds.length) {\r\n $(actualItemInput).prop(\"checked\", true);\r\n } else {\r\n $(actualItemInput).prop(\"checked\", false);\r\n if (checkedChilds.length === 0 && indeterminateChilds.length === 0) {\r\n $(actualItemInput).prop(\"indeterminate\", false);\r\n } else {\r\n $(actualItemInput).prop(\"indeterminate\", true);\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n } else {\r\n actualItemInput = $(actualItem).children(\"input\");\r\n actualItemChilds = $(actualItem).children(\".child-items\").children(\".concrete-item\");\r\n checkedChilds = $(actualItemChilds).children(\"input:checked\");\r\n indeterminateChilds = $.grep(actualItemChilds.get(),(itemChild) => ($(itemChild).children(\"input\").prop(\"indeterminate\") === true), false);\r\n }\r\n\r\n var info = this.createCallbackInfo(actualItem.data(\"id\"), actualItem.data(\"name\"), actualItem);\r\n\r\n if (actualItemChilds.length !== 0) {\r\n if (checkedChilds.length === actualItemChilds.length) {\r\n var itemsInputs = $(actualItemChilds).children(\"input\");\r\n this.addToSelectedCategories(info);\r\n $(actualItemInput).prop(\"indeterminate\", false);\r\n $(itemsInputs).prop(\"checked\", false);\r\n $(itemsInputs).trigger(\"change\", [false]);\r\n $(actualItemChilds).find(\"input\").prop(\"checked\", true);\r\n $(actualItemInput).prop(\"checked\", true);\r\n } else {\r\n this.removeFromSelectedCategories(info);\r\n $(actualItemInput).prop(\"checked\", false);\r\n if (checkedChilds.length === 0 && indeterminateChilds.length === 0) {\r\n $(actualItemInput).prop(\"indeterminate\", false);\r\n } else {\r\n $(actualItemInput).prop(\"indeterminate\", true);\r\n $(actualItemChilds).children(\"input:checked\").trigger(\"change\", [false]); //TODO could be call only when selectedChilds = childs - 1\r\n }\r\n }\r\n }\r\n\r\n if (!actualItem.hasClass(\"dropdown-select-header\")) {\r\n this.propagateSelectChange(actualItem[0] as Node as HTMLDivElement);\r\n }\r\n\r\n }\r\n\r\n private makeCategoryItem(container: HTMLDivElement, currentCategory: any, categories: any, leafItems: any) {\r\n\r\n var itemDiv = document.createElement(\"div\");\r\n $(itemDiv).addClass(\"concrete-item\"); //TODO add data-item-is-favorite\r\n $(itemDiv).data(\"id\", this.getCategoryId(currentCategory));\r\n $(itemDiv).data(\"name\", this.getCategoryName(currentCategory));\r\n $(itemDiv).data(\"type\", \"category\");\r\n\r\n var checkbox = document.createElement(\"input\");\r\n $(checkbox).addClass(\"concrete-item-checkbox checkbox\");\r\n checkbox.type = \"checkbox\";\r\n this.onCreateCategoryCheckBox(this.getCategoryId(currentCategory), checkbox);\r\n\r\n var info = this.createCallbackInfo(this.getCategoryId(currentCategory), this.getCategoryName(currentCategory), itemDiv);\r\n\r\n $(checkbox).change((event: JQuery.Event, propagate: boolean) => {\r\n var items = $(itemDiv).children(\".child-items\").children(\".concrete-item\").children(\"input\");\r\n\r\n if (checkbox.checked) {\r\n if (typeof info.ItemId !== \"undefined\" && info.ItemId !== null) {\r\n this.addToSelectedCategories(info);\r\n $(items).prop(\"checked\", false);\r\n $(items).prop(\"indeterminate\", false);\r\n $(items).trigger(\"change\", [false]);\r\n $(itemDiv).children(\".child-items\").find(\".concrete-item\").find(\"input\").prop(\"checked\", true);\r\n } else {\r\n $(items).prop(\"checked\", false);\r\n $(items).prop(\"indeterminate\", false);\r\n $(items).trigger(\"change\", [false]);\r\n $(items).prop(\"checked\", true);\r\n $(items).trigger(\"change\", [false]);\r\n }\r\n } else {\r\n this.removeFromSelectedCategories(info);\r\n $(items).prop(\"checked\", false);\r\n $(items).prop(\"indeterminate\", false);\r\n $(items).trigger(\"change\", [false]);\r\n }\r\n\r\n if (typeof propagate === \"undefined\" || propagate === null || propagate) { //Deafault behaviour is to propagate change\r\n this.propagateSelectChange($(checkbox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\r\n this.propagateCategorySelectChange(checkbox, info);\r\n }\r\n });\r\n\r\n itemDiv.appendChild(checkbox);\r\n\r\n var moreSpan = document.createElement(\"span\");\r\n $(moreSpan).addClass(\"concrete-item-more\");\r\n\r\n $(moreSpan).click(function() {\r\n var childsDiv = $(this).closest(\".concrete-item\").children(\".child-items\");\r\n if (childsDiv.is(\":hidden\")) {\r\n $(this).children().removeClass(\"glyphicon-chevron-down\");\r\n $(this).children().addClass(\"glyphicon-chevron-up\");\r\n childsDiv.slideDown();\r\n } else {\r\n $(this).children().removeClass(\"glyphicon-chevron-up\");\r\n $(this).children().addClass(\"glyphicon-chevron-down\");\r\n childsDiv.slideUp();\r\n }\r\n });\r\n\r\n var iconSpan = document.createElement(\"span\");\r\n $(iconSpan).addClass(\"glyphicon glyphicon-chevron-down\");\r\n\r\n moreSpan.appendChild(iconSpan);\r\n itemDiv.appendChild(moreSpan);\r\n\r\n\r\n if (this.showStar) {\r\n\r\n var favoriteStarContainer = document.createElement(\"span\");\r\n $(favoriteStarContainer).addClass(\"save-item\");\r\n\r\n itemDiv.appendChild(favoriteStarContainer);\r\n }\r\n\r\n var nameSpan = document.createElement(\"span\");\r\n $(nameSpan).addClass(\"concrete-item-name\");\r\n $(nameSpan).text(this.getCategoryName(currentCategory));\r\n itemDiv.appendChild(nameSpan);\r\n\r\n var childsDiv = document.createElement(\"div\");\r\n $(childsDiv).addClass(\"child-items\");\r\n itemDiv.appendChild(childsDiv);\r\n\r\n container.appendChild(itemDiv);\r\n\r\n var childCategories = this.getChildCategories(categories, currentCategory);\r\n var childLeafItems = this.getChildLeafItems(leafItems, currentCategory);\r\n\r\n if (typeof (childCategories) !== \"undefined\" && childCategories !== null) {\r\n for (var i = 0; i < childCategories.length; i++) {\r\n var childCategory = childCategories[i];\r\n this.makeCategoryItem(childsDiv, childCategory, categories, leafItems);\r\n }\r\n }\r\n\r\n if (typeof (childLeafItems) !== \"undefined\" && childLeafItems !== null) {\r\n for (var i = 0; i < childLeafItems.length; i++) {\r\n var childLeafItem = childLeafItems[i];\r\n this.makeLeafItem(childsDiv, childLeafItem);\r\n }\r\n }\r\n\r\n }\r\n\r\n protected makeLeafItem(container: HTMLDivElement, currentLeafItem: any) {\r\n var itemDiv = document.createElement(\"div\");\r\n $(itemDiv).addClass(\"concrete-item\"); //TODO add data-item-is-favorite\r\n\r\n $(itemDiv).data(\"id\", this.getLeafItemId(currentLeafItem));\r\n $(itemDiv).data(\"name\", this.getLeafItemName(currentLeafItem));\r\n $(itemDiv).data(\"type\", \"item\");\r\n\r\n var checkbox = document.createElement(\"input\");\r\n $(checkbox).addClass(\"concrete-item-checkbox checkbox\");\r\n checkbox.type = \"checkbox\";\r\n\r\n var info = this.createCallbackInfo(this.getLeafItemId(currentLeafItem), this.getLeafItemName(currentLeafItem), itemDiv);\r\n $(checkbox).change((event: JQuery.Event, propagate: boolean) => {\r\n if (checkbox.checked) {\r\n this.addToSelectedItems(info);\r\n } else {\r\n this.removeFromSelectedItems(info);\r\n }\r\n\r\n if (typeof propagate === \"undefined\" || propagate === null || propagate) { //Deafault behaviour is to propagate change\r\n this.propagateSelectChange($(checkbox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\r\n this.propagateLeafSelectChange(checkbox, info);\r\n }\r\n\r\n });\r\n\r\n itemDiv.appendChild(checkbox);\r\n\r\n if (this.showStar) {\r\n\r\n var favoriteStarContainer = document.createElement(\"span\");\r\n $(favoriteStarContainer).addClass(\"save-item\");\r\n\r\n itemDiv.appendChild(favoriteStarContainer);\r\n }\r\n\r\n var nameSpan = document.createElement(\"span\");\r\n $(nameSpan).addClass(\"concrete-item-name\");\r\n nameSpan.innerHTML = this.getLeafItemName(currentLeafItem);\r\n\r\n itemDiv.appendChild(nameSpan);\r\n\r\n container.appendChild(itemDiv);\r\n }\r\n\r\n\r\n protected createCallbackInfo(itemId: string, itemText: string, target: any): CallbackInfo {\r\n var info = new CallbackInfo();\r\n info.ItemId = itemId;\r\n info.ItemText = itemText;\r\n info.Target = target;\r\n return info;\r\n }\r\n\r\n protected addToSelectedItems(info: CallbackInfo) {\r\n var isSelected = $.grep(this.selectedItems, (item: Item) => (item.Id === info.ItemId), false).length !== 0;\r\n if (!isSelected) {\r\n this.selectedItems.push(new Item(info.ItemId, info.ItemText));\r\n this.selectedChanged();\r\n }\r\n }\r\n\r\n protected removeFromSelectedItems(info: CallbackInfo) {\r\n this.selectedItems = $.grep(this.selectedItems, (item: Item) => (item.Id !== info.ItemId), false);\r\n this.selectedChanged();\r\n }\r\n\r\n private addToSelectedCategories(info: CallbackInfo) {\r\n var isSelected = $.grep(this.selectedCategories, (category: Category) => (category.Id === info.ItemId), false).length !== 0;\r\n if (!isSelected) {\r\n this.selectedCategories.push(new Category(info.ItemId, info.ItemText));\r\n this.selectedChanged();\r\n }\r\n }\r\n\r\n private removeFromSelectedCategories(info: CallbackInfo) {\r\n this.selectedCategories = $.grep(this.selectedCategories, (category: Category) => (category.Id !== info.ItemId), false);\r\n this.selectedChanged();\r\n }\r\n\r\n private selectedChanged() {\r\n if (this.callbackDelegate.selectedChangedCallback) {\r\n this.callbackDelegate.selectedChangedCallback(this.getState());\r\n }\r\n }\r\n\r\n getState(): State {\r\n var state = new State();\r\n state.Type = this.type;\r\n state.SelectedCategories = this.selectedCategories;\r\n state.SelectedItems = this.selectedItems;\r\n return state;\r\n }\r\n\r\n static getBookIdsFromState(state: State): number[] {\r\n var bookIdList = new Array(state.SelectedItems.length);\r\n for (var i = 0; i < state.SelectedItems.length; i++) {\r\n bookIdList[i] = Number(state.SelectedItems[i].Id);\r\n }\r\n return bookIdList;\r\n }\r\n\r\n static getCategoryIdsFromState(state: State): number[] {\r\n var categoryIdList = new Array(state.SelectedCategories.length);\r\n for (var i = 0; i < state.SelectedCategories.length; i++) {\r\n categoryIdList[i] = Number(state.SelectedCategories[i].Id);\r\n }\r\n return categoryIdList;\r\n }\r\n}\r\n\r\nclass CallbackInfo {\r\n ItemId: string; //id of item\r\n ItemText: string; //text of item\r\n Target: any; //This in caller\r\n}\r\n\r\nclass State {\r\n Type: string;\r\n SelectedItems: Array;\r\n SelectedCategories: Array;\r\n IsOnlyRootSelected: boolean;\r\n}\r\n\r\nclass Item {\r\n Id: string;\r\n Name: string;\r\n\r\n constructor(id: string, name: string) {\r\n this.Id = id;\r\n this.Name = name;\r\n }\r\n}\r\n\r\nclass Category {\r\n Id: string;\r\n Name: string;\r\n\r\n constructor(id: string, name: string) {\r\n this.Id = id;\r\n this.Name = name;\r\n }\r\n}\r\n","class DropDownSelect2 extends DropDownSelect {\n private bookIdList: Array;\n private categoryIdList: Array;\n private books: IDropDownBookDictionary;\n private categories: IDropDownCategoryDictionary;\n private rootCategory: DropDownCategory;\n private selectedChangedCallback: (state: State) => void;\n private restoreCategoryIds: Array;\n private restoreBookIds: Array;\n private descriptionDiv: HTMLDivElement;\n private cancelDiv: HTMLDivElement;\n private isLoaded: boolean;\n private favoriteBook: FavoriteBook;\n private bookType: BookTypeEnum;\n private overrideSelectedBookCountVal: number;\n\n private _cachedResponse: IDropDownRequestResult;\n private _restoreExternalCategoryIds: Array;\n\n private static selectedBookUrlKey = \"selectedBookIds\";\n private static selectedCategoryUrlKey = \"selectedCategoryIds\";\n\n // private static stringIdsPerArea;\n // static initialize() { // looks like it needs to be called explicitly...\n // }\n\n // private stringIdsPerArea: object;\n private stringIdsPerArea: {\n [area in BookTypeEnum]?:\n {\n [stringId: string]: string\n }\n };\n\n // XXX: use the type in stringIdsPerArea; share what is common, don't copy\n private stringIds: {\n [stringId: string]: string\n };\n\n private localizationScope = \"PluginsJs\";\n private getStringOrFallback: CallableFunction; // or just Function?\n\n constructor(\n dropDownSelectContainer: string,\n dataUrl: string,\n bookType: BookTypeEnum,\n showStar: boolean,\n callbackDelegate: DropDownSelectCallbackDelegate,\n props?: {\n extraCssClasses: string[];\n },\n ) {\n super(\n dropDownSelectContainer,\n dataUrl,\n showStar,\n callbackDelegate,\n props,\n );\n\n this.bookType = bookType;\n this.selectedChangedCallback = callbackDelegate.selectedChangedCallback;\n callbackDelegate.selectedChangedCallback = null;\n\n callbackDelegate.getRootCategoryCallback = (categories) => {\n return this.rootCategory.id;\n };\n callbackDelegate.getCategoryIdCallback = (category) => {\n return String(this.categories[category].id);\n };\n callbackDelegate.getCategoryTextCallback = (category) => {\n return this.categories[category].name;\n };\n callbackDelegate.getChildCategoriesCallback = (categories, currentCategory) => {\n return this.categories[currentCategory].subcategoryIds;\n };\n callbackDelegate.getChildLeafItemsCallback = (items, currentCategory) => {\n return this.categories[currentCategory].bookIds;\n };\n callbackDelegate.getLeafItemIdCallback = (item) => {\n return String(this.books[item].id);\n };\n callbackDelegate.getLeafItemTextCallback = (item) => {\n return this.books[item].name;\n };\n this.isLoaded = false;\n this.overrideSelectedBookCountVal = null;\n\n // https://stackoverflow.com/questions/54438012/an-index-signature-parameter-type-cannot-be-a-union-type-consider-using-a-mappe\n this.stringIdsPerArea = {\n [BookTypeEnum.Dictionary]: {\n 'SearchBooks': 'DictionariesToSearchIn',\n 'AllBooks': 'AllDictionaries', // XXX: the fallback (AllBooks) should only be temporary and removed once all \"areas/modules\" have a specialization\n },\n [BookTypeEnum.Edition]: {\n 'SearchBooks': 'EditionsToSearchIn',\n 'AllBooks': 'AllEditions',\n },\n };\n\n this.stringIds = this.stringIdsPerArea[this.bookType];\n this.getStringOrFallback = getStringOrFallbackExtension.bind(this); // .../js/itjakub.ts\n }\n\n makeAndRestore(\n categoryIds: Array, bookIds: Array,\n externalCategoryIds?: Array)\n {\n this.restoreCategoryIds = categoryIds;\n this.restoreBookIds = bookIds;\n\n // Stable/defined textual IDs instead of unstable/arbitrary numeric ones.\n // This is a means of pre-selecting modern dictionaries during an initial load.\n this._restoreExternalCategoryIds = externalCategoryIds;\n\n this.makeDropdown();\n }\n\n makeDropdown() {\n // this.isLoaded = false;\n super.makeDropdown();\n\n this.descriptionDiv = document.createElement(\"div\");\n $(this.descriptionDiv).addClass(\"dropdown-description\");\n $(this.dropDownSelectContainer).append(this.descriptionDiv);\n\n this.cancelDiv = document.createElement(\"div\");\n $(this.cancelDiv).addClass(\"dropdown-cancel\");\n $(this.dropDownSelectContainer).append(this.cancelDiv);\n\n if (this.showStar) {\n var cancelButton = this.createCancelButton();\n $(this.cancelDiv).append(cancelButton);\n\n var favoriteDropdownDiv = document.createElement(\"div\");\n this.favoriteBook = new FavoriteBook(favoriteDropdownDiv, this.bookType, this);\n this.favoriteBook.make();\n\n $(this.dropDownSelectContainer).append(favoriteDropdownDiv);\n }\n\n // XXX: we need to call updateSelectionInfo again because descriptionDiv\n // is replaced here just after super.makeDropdown (which already called\n // doRestore but its work was partially thrown away...)\n if (this.isLoaded)\n this.doRestore();\n }\n\n private createCancelButton(): HTMLElement {\n const elem = $(``);\n elem.click(() => {\n this.favoriteBook.resetSelected();\n });\n return elem.get(0);\n }\n\n setSelected(categoryIds: Array, bookIds: Array) {\n if (categoryIds.length === 0 && bookIds.length === 0) {\n this.rootCategory.checkBox.checked = false;\n this.rootCategory.checkBox.indeterminate = false;\n }\n $(\"input[type=checkbox]\", this.dropDownBodyDiv).prop(\"checked\", false);\n this.restore(categoryIds, bookIds);\n }\n\n restore(categoryIds: Array, bookIds: Array) {\n this.restoreCategoryIds = categoryIds;\n this.restoreBookIds = bookIds;\n\n this.doRestore();\n }\n\n protected onFavoritesChanged(favoriteType: FavoriteType, id: number): void {\n this.favoriteBook.loadData();\n new NewFavoriteNotification().show();\n }\n\n private doRestore()\n {\n // XXX: this function is mostly additive and seems to assume that (works best if)\n // no groups or items are currently selected -- which is wrong\n // XXX: hopefully there is some cleanup / \"uncheck all\" function ==> makeAndRestore?\n // XXX: in the future, virtual DOM approach (React.js) should greatly\n // simplify and \"de-bug\" this\n var categoriesCount = 0;\n var booksCount = 0;\n\n // Translate/lookup “textual” group IDs in(to) restoreCategoryIds.\n // This enables selection of modern dictionaries on load (if no selection has been made yet).\n if (this._restoreExternalCategoryIds) {\n for (let externalCategoryName of this._restoreExternalCategoryIds) {\n for (let categoryId in this.categories) { // XXX: iterate\n let category = this.categories[categoryId];\n let categoryIdAsNumber = Number(categoryId);\n\n if (category.externalId === externalCategoryName) {\n if (this.restoreCategoryIds.indexOf(categoryIdAsNumber) === -1)\n this.restoreCategoryIds.push(categoryIdAsNumber);\n }\n }\n }\n }\n\n if (this.restoreCategoryIds) {\n for (var i = 0; i < this.restoreCategoryIds.length; i++) {\n var category = this.categories[this.restoreCategoryIds[i]];\n if (!category) {\n continue;\n }\n category.checkBox.checked = true;\n category.checkBox.indeterminate = false; // XXX: this is a fix (ESSČ => all modern) but let's see what propagateSelectChange is supposed to do... well, not this so we're fine\n this.propagateSelectChange($(category.checkBox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\n categoriesCount++;\n }\n }\n\n if (this.restoreBookIds) {\n for (var j = 0; j < this.restoreBookIds.length; j++) {\n var book = this.books[this.restoreBookIds[j]];\n if (!book) {\n continue;\n }\n\n for (var k = 0; k < book.checkboxes.length; k++) {\n var checkbox = book.checkboxes[k];\n if (checkbox.checked)\n continue;\n\n checkbox.checked = true;\n this.propagateSelectChange($(checkbox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\n }\n }\n booksCount = this.getSelectedBookCount();\n }\n\n this.updateSelectionInfo(categoriesCount, booksCount);\n }\n\n protected downloadData(dropDownItemsDiv: HTMLDivElement) {\n this.books = {};\n\n var loadDiv = lv.create(null, \"lv-circles lv-mid sm lvb-1 lvt-1\");\n $(dropDownItemsDiv).append(loadDiv.getElement());\n\n if (this.isLoaded) {\n this._dataDownloaded('cached', dropDownItemsDiv, loadDiv);\n return;\n }\n\n $.ajax({\n type: \"GET\",\n traditional: true,\n data: {},\n url: this.dataUrl,\n dataType: \"json\",\n contentType: \"application/json\",\n success: (response) => this._dataDownloaded(\n response, dropDownItemsDiv, loadDiv),\n error: () => {\n $(dropDownItemsDiv).children(\"div.lv-circles\").remove();\n $(dropDownItemsDiv).siblings(\".dropdown-select-header\").children(\"div.lv-circles\").remove();\n const selectHeader = $(dropDownItemsDiv).parent().children(\".dropdown-select-header\");\n $(selectHeader).children(\".dropdown-select-text\").append(localization.translate(\"LoadingContentError\", \"PluginsJs\").value);\n this.isLoaded = true;\n this.dataLoaded(null);\n this.downloadFavoriteData(dropDownItemsDiv);\n }\n });\n }\n\n private _dataDownloaded(\n response: IDropDownRequestResult | 'cached',\n dropDownItemsDiv: HTMLDivElement, loadDiv: lv.ElementBase)\n {\n if (response === 'cached')\n response = this._cachedResponse;\n else\n this._cachedResponse = response;\n\n loadDiv.remove();\n this.processDownloadedData(response);\n this.makeTreeStructure(this.categories, this.books, dropDownItemsDiv);\n this.rootCategory.checkBox = ($(dropDownItemsDiv).parent().children(\".dropdown-select-header\").children(\"span.dropdown-select-checkbox\").children(\"input\").get(0) as Node as HTMLInputElement);\n this.doRestore();\n this.isLoaded = true;\n this.dataLoaded(this.rootCategory.id);\n\n this.downloadFavoriteData(dropDownItemsDiv);\n }\n\n public downloadFavoriteData(dropDownItemsDiv: HTMLDivElement): void {\n if (!this.showStar) {\n return;\n }\n\n var loadedFavoriteCategories: Array = null;\n var loadedFavoriteBooks: Array = null;\n var loadedFavoriteLabels: Array = null;\n\n var isAllLoaded = () => (loadedFavoriteCategories != null &&\n loadedFavoriteBooks != null &&\n loadedFavoriteLabels != null);\n\n this.favoriteManager.getFavoritesForCategories(this.categoryIdList, (favoriteCategories) => {\n loadedFavoriteCategories = favoriteCategories;\n\n if (isAllLoaded()) {\n this.updateFavoriteIcons(loadedFavoriteCategories, loadedFavoriteBooks, loadedFavoriteLabels, dropDownItemsDiv);\n }\n });\n\n this.favoriteManager.getFavoritesForBooks(null, this.bookIdList, (favoriteBooks) => {\n loadedFavoriteBooks = favoriteBooks;\n\n if (isAllLoaded()) {\n this.updateFavoriteIcons(loadedFavoriteCategories, loadedFavoriteBooks, loadedFavoriteLabels, dropDownItemsDiv);\n }\n });\n\n this.favoriteManager.getLatestFavoriteLabels(favoriteLabels => {\n loadedFavoriteLabels = favoriteLabels;\n\n if (isAllLoaded()) {\n this.updateFavoriteIcons(loadedFavoriteCategories, loadedFavoriteBooks, loadedFavoriteLabels, dropDownItemsDiv);\n }\n });\n }\n\n private processDownloadedData(result: IDropDownRequestResult) {\n this.books = {};\n this.categories = {};\n this.bookIdList = [];\n this.categoryIdList = [];\n\n for (let i = 0; i < result.categories.length; i++) {\n let resultCategory = result.categories[i];\n var category = new DropDownCategory();\n category.id = resultCategory.id;\n category.name = resultCategory.description;\n category.externalId = resultCategory.externalId;\n category.parentCategoryId = resultCategory.parentCategoryId;\n category.bookIds = [];\n category.subcategoryIds = [];\n this.categories[category.id] = category;\n this.categoryIdList.push(category.id);\n\n if (category.parentCategoryId == null)\n this.rootCategory = category;\n }\n\n for (let i = 0; i < result.categories.length; i++) {\n let resultCategory = result.categories[i];\n if (resultCategory.parentCategoryId == null)\n continue;\n\n var parentCategory = this.categories[resultCategory.parentCategoryId];\n parentCategory.subcategoryIds.push(resultCategory.id);\n }\n\n for (var j = 0; j < result.books.length; j++) {\n var resultBook = result.books[j];\n var book = new DropDownBook();\n book.id = resultBook.id;\n book.name = resultBook.title;\n book.categoryIds = resultBook.categoryIds;\n book.checkboxes = [];\n this.books[book.id] = book;\n this.bookIdList.push(book.id);\n\n for (var k = 0; k < book.categoryIds.length; k++) {\n var categoryId = book.categoryIds[k];\n if (this.categories[categoryId])\n this.categories[categoryId].bookIds.push(book.id);\n }\n }\n }\n\n public getItemById(id: number): DropDownBook // XXX: `id` is actually a `number` but see IDropDownBookDictionary (`string`)\n {\n return this.books[id]; // `String(id)` would be exact but JS has type coercion\n }\n\n public getCategoryById(id: number): DropDownCategory\n {\n return this.categories[id];\n }\n\n protected makeLeafItem(container: HTMLDivElement, currentLeafItem: any) {\n var itemDiv = document.createElement(\"div\");\n $(itemDiv).addClass(\"concrete-item\"); //TODO add data-item-is-favorite\n\n $(itemDiv).data(\"id\", this.books[currentLeafItem].id);\n $(itemDiv).data(\"name\", this.books[currentLeafItem].name);\n $(itemDiv).data(\"type\", \"item\");\n\n var checkbox = document.createElement(\"input\");\n $(checkbox).addClass(\"concrete-item-checkbox checkbox\");\n checkbox.type = \"checkbox\";\n\n this.books[currentLeafItem].checkboxes.push(checkbox);\n\n var info = this.createCallbackInfo(String(this.books[currentLeafItem].id), this.books[currentLeafItem].name, itemDiv);\n $(checkbox).change((event: JQuery.Event, propagate: boolean) => {\n if (checkbox.checked) {\n this.addToSelectedItems(info);\n } else {\n this.removeFromSelectedItems(info);\n }\n\n if (typeof propagate === \"undefined\" || propagate === null || propagate) { //Deafault behaviour is to propagate change\n this.propagateSelectChange($(checkbox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\n this.propagateLeafSelectChange(checkbox, info);\n }\n });\n\n itemDiv.appendChild(checkbox);\n\n if (this.showStar) {\n var favoriteStarContainer = document.createElement(\"span\");\n $(favoriteStarContainer).addClass(\"save-item\");\n\n itemDiv.appendChild(favoriteStarContainer);\n }\n\n var nameSpan = document.createElement(\"span\");\n $(nameSpan).addClass(\"concrete-item-name\");\n nameSpan.innerHTML = this.books[currentLeafItem].name;\n\n itemDiv.appendChild(nameSpan);\n\n container.appendChild(itemDiv);\n }\n\n private updateSelectionInfo(categoriesCount: number, booksCount: number) {\n var categoriesCountString = String(categoriesCount);\n var booksCountString = String(booksCount);\n\n if (!this.rootCategory.checkBox.indeterminate) {\n categoriesCountString = localization.translate(\"All1\", \"PluginsJs\").value;\n booksCountString = this.getStringOrFallback(\"AllBooks\");\n }\n\n if (this.overrideSelectedBookCountVal != null) {\n booksCountString = this.overrideSelectedBookCountVal.toString();\n }\n\n var infoDiv = document.createElement(\"div\");\n var infoText = localization.translate(\"SearchCategories\", \"PluginsJs\").value + categoriesCountString + \"
\"\n + this.getStringOrFallback(\"SearchBooks\") + booksCountString;\n\n infoDiv.innerHTML = infoText;\n\n $(this.descriptionDiv).empty();\n $(this.descriptionDiv).append(infoDiv);\n }\n\n private getSelectedBookCount(): number {\n var count = 0;\n for (var i = 0; i < this.bookIdList.length; i++) {\n var bookId = this.bookIdList[i];\n var firstCheckBox = this.books[bookId].checkboxes[0];\n\n // XXX: \"Dodavky\" was imported twice (probably with two different UUIDs);\n // id=5 has no categories and no checkboxes, id=15 has one of each\n if (firstCheckBox === undefined)\n continue;\n\n if (firstCheckBox.checked)\n count++;\n }\n return count;\n }\n\n protected onCreateCategoryCheckBox(categoryId, checkBox: HTMLInputElement) {\n this.categories[categoryId].checkBox = checkBox;\n }\n\n private onSelectionChanged() {\n var currentState = this.getState();\n var categoriesCount = currentState.SelectedCategories.length;\n var booksCount = this.getSelectedBookCount();\n\n this.selectedChangedCallback(currentState);\n this.updateSelectionInfo(categoriesCount, booksCount);\n }\n\n protected propagateRootSelectChange(item: HTMLInputElement) {\n this.onSelectionChanged();\n }\n\n protected propagateLeafSelectChange(item: HTMLInputElement, info: CallbackInfo) {\n var sameBookCheckBoxes = this.books[info.ItemId].checkboxes;\n var checkBoxState = $(item).prop(\"checked\");\n for (var i = 0; i < sameBookCheckBoxes.length; i++) {\n var otherCheckBox = sameBookCheckBoxes[i];\n if ($(otherCheckBox).prop(\"checked\") !== checkBoxState) {\n $(otherCheckBox).prop(\"checked\", checkBoxState);\n this.propagateSelectChange($(otherCheckBox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\n }\n }\n\n this.onSelectionChanged();\n }\n\n protected propagateCategorySelectChange(item: HTMLInputElement, info: CallbackInfo) {\n var isChecked = $(item).prop(\"checked\");\n var category = this.categories[info.ItemId];\n var bookIds: Array = [];\n\n this.getBookIdsForUpdate(category, bookIds);\n\n for (var i = 0; i < bookIds.length; i++) {\n var book = this.books[bookIds[i]];\n\n for (var j = 0; j < book.checkboxes.length; j++) {\n var bookCheckBox = book.checkboxes[j];\n if ($(bookCheckBox).prop(\"checked\") !== isChecked) {\n $(bookCheckBox).prop(\"checked\", isChecked);\n this.propagateSelectChange($(bookCheckBox).parent(\".concrete-item\")[0] as Node as HTMLDivElement);\n }\n }\n }\n\n this.onSelectionChanged();\n }\n\n private getBookIdsForUpdate(category: DropDownCategory, bookIds: Array) {\n for (var i = 0; i < category.bookIds.length; i++) {\n var bookId = category.bookIds[i];\n if ($.inArray(bookId, bookIds) === -1) {\n bookIds.push(bookId);\n }\n }\n for (var j = 0; j < category.subcategoryIds.length; j++) {\n var subcategoryId = category.subcategoryIds[j];\n var subcategory = this.categories[subcategoryId];\n this.getBookIdsForUpdate(subcategory, bookIds);\n }\n }\n\n private getSelected(category: DropDownCategory, selectedCategories: Array, selectedBooks: Array) {\n if (!category.checkBox.indeterminate) {\n if (category.checkBox.checked) {\n selectedCategories.push(category.id);\n }\n return;\n }\n\n for (var i = 0; i < category.subcategoryIds.length; i++) {\n var subcategory = this.categories[category.subcategoryIds[i]];\n this.getSelected(subcategory, selectedCategories, selectedBooks);\n }\n\n for (var j = 0; j < category.bookIds.length; j++) {\n var book = this.books[category.bookIds[j]];\n if (book.checkboxes[0].checked)\n selectedBooks.push(book.id);\n }\n }\n\n getState(): State {\n var selectedIds = this.getSelectedIds();\n var state = new State();\n state.SelectedCategories = [];\n state.SelectedItems = [];\n state.IsOnlyRootSelected = selectedIds.isOnlyRootSelected;\n\n for (let i = 0; i < selectedIds.selectedCategoryIds.length; i++) {\n let id = selectedIds.selectedCategoryIds[i];\n state.SelectedCategories.push(new Category(String(id), this.categories[id].name));\n }\n for (let i = 0; i < selectedIds.selectedBookIds.length; i++) {\n let id = selectedIds.selectedBookIds[i];\n state.SelectedItems.push(new Item(String(id), this.books[id].name));\n }\n\n return state;\n }\n\n getSelectedIds(): DropDownSelected {\n var state = new DropDownSelected();\n var selectedBooks = [];\n var selectedCategories = [];\n if (!this.rootCategory || !this.rootCategory.checkBox.indeterminate) {\n if (this.rootCategory) {\n state.selectedCategoryIds.push(this.rootCategory.id);\n }\n } else {\n this.getSelected(this.rootCategory, selectedCategories, selectedBooks);\n state.selectedBookIds = selectedBooks;\n state.selectedCategoryIds = selectedCategories;\n state.isOnlyRootSelected = false;\n }\n\n return state;\n }\n\n isDataLoaded(): boolean {\n return this.isLoaded;\n }\n\n static getUrlStringFromState(state: State): string {\n var selectedBooks = state.SelectedItems;\n var selectedCategories = state.SelectedCategories;\n var resultString = \"\";\n\n for (let i = 0; i < selectedBooks.length; i++) {\n if (resultString.length > 0)\n resultString += \"&\";\n resultString += DropDownSelect2.selectedBookUrlKey + \"=\" + selectedBooks[i].Id;\n }\n\n for (let i = 0; i < selectedCategories.length; i++) {\n if (resultString.length > 0)\n resultString += \"&\";\n resultString += DropDownSelect2.selectedCategoryUrlKey + \"=\" + selectedCategories[i].Id;\n }\n\n return resultString;\n }\n\n getSerializedState(): string {\n var state = this.getSelectedIds();\n return JSON.stringify(state);\n }\n\n restoreFromSerializedState(serializedState: string) {\n var state: DropDownSelected = JSON.parse(serializedState);\n this.restore(state.selectedCategoryIds, state.selectedBookIds);\n }\n\n getFavoriteBookComponent(): FavoriteBook {\n return this.favoriteBook;\n }\n\n overrideSelectedBookCount(newCount: number) {\n this.overrideSelectedBookCountVal = newCount;\n }\n\n hasBooksLoaded(): boolean {\n return this.bookIdList && this.bookIdList.length > 0;\n }\n}\n\nclass DropDownSelected {\n selectedBookIds: Array;\n selectedCategoryIds: Array;\n isOnlyRootSelected: boolean;\n\n constructor()\n {\n this.selectedBookIds = [];\n this.selectedCategoryIds = [];\n this.isOnlyRootSelected = true;\n }\n}\n\n\nclass DropDownBook {\n id: number;\n name: string;\n checkboxes: Array;\n categoryIds: Array;\n}\n\nclass DropDownCategory {\n id: number;\n name: string;\n parentCategoryId: number;\n subcategoryIds: Array;\n bookIds: Array;\n checkBox: HTMLInputElement;\n externalId: string;\n}\n\ninterface IDropDownBookDictionary {\n [bookId: string]: DropDownBook;\n}\n\ninterface IDropDownCategoryDictionary {\n [categoryId: string]: DropDownCategory;\n}\n","class HtmlItemsFactory {\r\n\r\n public static createOption(label: string, value: string, disabled?: boolean): JQuery {\r\n const optionEl = $(``);\r\n if (disabled) {\r\n optionEl.prop(\"disabled\", true);\r\n }\r\n return optionEl;\r\n }\r\n\r\n public static createOptionGroup(label: string): HTMLOptGroupElement {\r\n var conditionOption: HTMLOptGroupElement = document.createElement(\"optgroup\");\r\n conditionOption.label = label;\r\n return conditionOption;\r\n }\r\n\r\n public static createButton(label: string): HTMLButtonElement {\r\n var button = document.createElement(\"button\");\r\n button.type = \"button\";\r\n $(button).text(label);\r\n $(button).addClass(\"btn\");\r\n $(button).addClass(\"btn-default\");\r\n $(button).addClass(\"regexsearch-button\");\r\n\r\n return button;\r\n }\r\n}\r\n\r\nclass Search {\r\n private fulltextIsLimited = false;\r\n private numberOfFullTextConditions = 0;\r\n private speedAnimation: number = 200; //200=fast, 600=slow\r\n private advancedRegexEditor: RegExAdvancedSearchEditor;\r\n private favoriteQueryComponent: FavoriteQuery;\r\n private keyboardComponent: KeyboardComponent;\r\n\r\n private searchButton: HTMLButtonElement;\r\n private advancedButton: HTMLButtonElement;\r\n private searchInSecondPortalButton: HTMLButtonElement;\r\n private searchInputTextbox: HTMLInputElement;\r\n private searchbarAdvancedEditorContainer: HTMLDivElement;\r\n private favoritesContainer: HTMLDivElement;\r\n\r\n private container: HTMLDivElement;\r\n private searchAreaDiv: HTMLDivElement;\r\n\r\n private processSearchTextCallback: (text: string, clicked: boolean) => void;\r\n private processSearchJsonCallback: (json: string) => void;\r\n private overrideSetQueryCallback: (text: string) => void;\r\n\r\n private lastQuery: string;\r\n private lastQueryWasJson: boolean;\r\n\r\n private enabledOptions: Array;\r\n\r\n private favoriteQueriesConfig: IModulInicializatorConfigurationSearchFavorites;\r\n\r\n\r\n\r\n constructor(\r\n container: HTMLDivElement,\r\n processSearchJsonCallback: (jsonData: string) => void,\r\n processSearchTextCallback: (text: string, clicked: boolean) => void,\r\n favoriteQueriesConfig: IModulInicializatorConfigurationSearchFavorites)\r\n {\r\n this.favoriteQueriesConfig = favoriteQueriesConfig;\r\n\r\n // XXX: if we want to place the search line ourselves, makeSearch\r\n // must not append it in the container on its own\r\n // XXX: #ReaderHeaderDiv could be used instead of #SearchDiv as well\r\n this.container = container;\r\n this.searchAreaDiv = null;\r\n\r\n this.processSearchJsonCallback = processSearchJsonCallback;\r\n this.processSearchTextCallback = processSearchTextCallback;\r\n }\r\n\r\n public setOverrideQueryCallback(callback: (text: string) => void) {\r\n this.overrideSetQueryCallback = callback;\r\n\r\n if (this.favoriteQueryComponent) {\r\n this.favoriteQueryComponent.setOverrideQueryCallback(callback);\r\n }\r\n }\r\n\r\n public setLastQuery(searchQuery: string) {\r\n this.lastQuery = searchQuery;\r\n }\r\n \r\n limitFullTextSearchToOne() {\r\n this.fulltextIsLimited = true;\r\n }\r\n\r\n makeSearch(enabledOptions: Array, enabledSearchInSecondPortal: boolean) {\r\n this.enabledOptions = enabledOptions;\r\n\r\n var searchAreaDiv = document.createElement(\"div\");\r\n searchAreaDiv.classList.add(\"regex-search-div\");\r\n\r\n var form: HTMLFormElement = document.createElement(\"form\");\r\n form.setAttribute(\"role\", \"form\");\r\n searchAreaDiv.appendChild(form);\r\n\r\n var formGroupDiv = document.createElement(\"div\");\r\n formGroupDiv.classList.add(\"searchbar\");\r\n form.appendChild(formGroupDiv);\r\n\r\n var searchbarButtonsDiv = document.createElement(\"div\");\r\n searchbarButtonsDiv.classList.add(\"searchbar-buttons\");\r\n // append buttons after appending input\r\n\r\n var searchButton = document.createElement(\"button\");\r\n searchButton.id = 'searchButton';\r\n searchButton.type = \"button\";\r\n $(searchButton).text(localization.translate(\"Search\", \"Home\").value);\r\n searchButton.classList.add(\"btn\");\r\n searchButton.classList.add(\"btn-default\");\r\n searchButton.classList.add(\"searchbar-button\");\r\n searchbarButtonsDiv.appendChild(searchButton);\r\n\r\n this.searchButton = searchButton;\r\n\r\n if (typeof this.processSearchJsonCallback !== \"undefined\" && this.processSearchJsonCallback != null) {\r\n \r\n var advancedButton = document.createElement(\"button\");\r\n advancedButton.type = \"button\";\r\n $(advancedButton).text(localization.translate(\"Advanced\", \"PluginsJs\").value);\r\n advancedButton.classList.add(\"btn\");\r\n advancedButton.classList.add(\"btn-default\");\r\n advancedButton.classList.add(\"searchbar-button\");\r\n searchbarButtonsDiv.appendChild(advancedButton);\r\n\r\n this.advancedButton = advancedButton;\r\n\r\n var advancedButtonSpanCarrot = document.createElement(\"span\");\r\n advancedButtonSpanCarrot.classList.add(\"glyphicon\");\r\n advancedButtonSpanCarrot.classList.add(\"glyphicon-chevron-down\");\r\n advancedButtonSpanCarrot.classList.add(\"regexsearch-button-glyph\");\r\n advancedButton.appendChild(advancedButtonSpanCarrot);\r\n\r\n $(this.advancedButton).click(() => {\r\n $(this.advancedButton).css(\"visibility\", \"hidden\");\r\n\r\n if ($(this.searchbarAdvancedEditorContainer).is(\":hidden\")) { //show advanced search\r\n var $searchInputTextbox = $(this.searchInputTextbox);\r\n var textboxValue = $searchInputTextbox.val() as string;\r\n if (Search.isValidJson(textboxValue)) {\r\n this.advancedRegexEditor.importJson(textboxValue);\r\n }\r\n $(this.searchbarAdvancedEditorContainer).slideDown(this.speedAnimation);\r\n $searchInputTextbox.prop(\"disabled\", true);\r\n $searchInputTextbox.closest(\".input_container\").find(\".keyboard-icon-img\").addClass(\"disabled\");\r\n $searchInputTextbox.closest(\".input_container\").find(\".regexsearch-input-button\").prop(\"disabled\", true);\r\n $(this.searchButton).prop(\"disabled\", true);\r\n $(this.searchInSecondPortalButton).prop(\"disabled\", true);\r\n\r\n if (!this.favoriteQueryComponent.isHidden()) {\r\n this.favoriteQueryComponent.hide();\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n if (enabledSearchInSecondPortal) {\r\n var secondPortalButton = document.createElement(\"button\");\r\n secondPortalButton.type = \"button\";\r\n var text = $(\"#bibliography-configuration\").data(\"second-portal-search-label\") as string;\r\n $(secondPortalButton).html(\" \" + text);\r\n secondPortalButton.classList.add(\"btn\");\r\n secondPortalButton.classList.add(\"btn-default\");\r\n secondPortalButton.classList.add(\"searchbar-button\");\r\n secondPortalButton.classList.add(\"separated\");\r\n searchbarButtonsDiv.appendChild(secondPortalButton);\r\n\r\n this.searchInSecondPortalButton = secondPortalButton;\r\n\r\n $(secondPortalButton).click(() => {\r\n var targetUrl = $(\"#bibliography-configuration\").data(\"second-portal-search-url\") as string;\r\n var searchboxValue = $(this.searchInputTextbox).val() as string;\r\n var parameter = encodeURIComponent(searchboxValue);\r\n var redirectUrl = `${targetUrl}?search=${parameter}`;\r\n window.open(redirectUrl, \"_blank\");\r\n });\r\n }\r\n\r\n var searchbarInputDiv = document.createElement(\"div\");\r\n searchbarInputDiv.classList.add(\"regex-searchbar-inputs\");\r\n searchbarInputDiv.classList.add(\"input_container\");\r\n formGroupDiv.appendChild(searchbarInputDiv);\r\n\r\n formGroupDiv.appendChild(searchbarButtonsDiv);\r\n\r\n var searchbarInput: HTMLInputElement = document.createElement(\"input\");\r\n searchbarInput.id = 'searchbox';\r\n searchbarInput.type = \"text\";\r\n searchbarInput.placeholder = localization.translate(\"Search...\", \"PluginsJs\").value;\r\n searchbarInput.setAttribute(\"data-keyboard-id\", \"0\");\r\n var searchbarInputClassList = searchbarInput.classList;\r\n searchbarInputClassList.add(\"form-control\");\r\n searchbarInputClassList.add(\"searchbar-input\");\r\n searchbarInputClassList.add(\"keyboard-input\");\r\n searchbarInputDiv.appendChild(searchbarInput);\r\n\r\n var keyboardButton = document.createElement(\"button\");\r\n keyboardButton.type = \"button\";\r\n keyboardButton.classList.add(\"btn\", \"regexsearch-input-button\");\r\n keyboardButton.style.right = \"45px\";\r\n var keyboardIcon = document.createElement(\"div\");\r\n keyboardIcon.classList.add(\"custom-glyphicon-keyboard\");\r\n keyboardIcon.style.height = \"100%\";\r\n keyboardButton.appendChild(keyboardIcon);\r\n searchbarInputDiv.appendChild(keyboardButton);\r\n\r\n var favoriteButton = document.createElement(\"button\");\r\n favoriteButton.type = \"button\";\r\n favoriteButton.classList.add(\"btn\", \"regexsearch-input-button\");\r\n var favoriteIcon = document.createElement(\"span\");\r\n favoriteIcon.classList.add(\"glyphicon\", \"glyphicon-star\");\r\n favoriteIcon.style.fontSize = \"110%\";\r\n favoriteIcon.style.marginTop = \"1px\";\r\n favoriteButton.appendChild(favoriteIcon);\r\n searchbarInputDiv.appendChild(favoriteButton);\r\n \r\n this.searchInputTextbox = searchbarInput;\r\n\r\n $(this.searchInputTextbox).keypress((event: any) => {\r\n var keyCode = event.which || event.keyCode; \r\n if (keyCode === 13) { //13 = Enter\r\n $(this.searchButton).click();\r\n event.preventDefault(); \r\n event.stopPropagation();\r\n return false;\r\n }\r\n });\r\n\r\n $(favoriteButton).click(() => {\r\n if (this.favoriteQueryComponent.isHidden()) {\r\n if (!$(this.searchbarAdvancedEditorContainer).is(\":hidden\")) {\r\n this.closeAdvancedSearchEditor();\r\n }\r\n this.favoriteQueryComponent.show();\r\n } else {\r\n this.favoriteQueryComponent.hide();\r\n }\r\n });\r\n\r\n var searchbarAdvancedEditor = document.createElement(\"div\");\r\n searchbarInputDiv.classList.add(\"regex-searchbar-advanced-editor\");\r\n searchAreaDiv.appendChild(searchbarAdvancedEditor);\r\n\r\n var favoritesContainer = document.createElement(\"div\");\r\n searchAreaDiv.appendChild(favoritesContainer);\r\n\r\n this.searchbarAdvancedEditorContainer = searchbarAdvancedEditor;\r\n this.favoritesContainer = favoritesContainer;\r\n\r\n if (typeof this.processSearchJsonCallback !== \"undefined\" && this.processSearchJsonCallback != null) {\r\n\r\n this.advancedRegexEditor = new RegExAdvancedSearchEditor(this.searchbarAdvancedEditorContainer, (json: string) => this.closeAdvancedSearchEditorWithImport(json), (json: string) => this.closeAdvancedSearchEditor());\r\n this.advancedRegexEditor.setEnabledOptions(enabledOptions);\r\n if (this.fulltextIsLimited) {\r\n this.advancedRegexEditor.limitFullTextOptions();\r\n }\r\n this.advancedRegexEditor.makeRegExSearch();\r\n $(this.searchbarAdvancedEditorContainer).hide();\r\n } else {\r\n searchbarInputDiv.classList.add(\"no-advanced\");\r\n }\r\n\r\n this.favoriteQueryComponent = new FavoriteQuery($(this.favoritesContainer), $(this.searchInputTextbox), this.favoriteQueriesConfig.bookType, this.favoriteQueriesConfig.queryType);\r\n this.favoriteQueryComponent.setOverrideQueryCallback(this.overrideSetQueryCallback);\r\n\r\n\r\n this.searchAreaDiv = searchAreaDiv;\r\n $(this.container).append(searchAreaDiv); // XXX: comment this out to be able to position this more freely\r\n\r\n // invoked by DictionaryViewer.goToPageWithHeadword\r\n $(this.searchButton).click((_event, extraParameters: {isLink: boolean}) => { // extraParameters is also a jQuery thing it seems\r\n let clicked = false;\r\n\r\n if (extraParameters) {\r\n // https://stackoverflow.com/questions/40349987/how-to-suppress-error-ts2533-object-is-possibly-null-or-undefined\r\n // @ts-ignore: Object is possibly 'null'.\r\n clicked = extraParameters.isLink;\r\n }\r\n\r\n this.processSearch(clicked);\r\n });\r\n\r\n var keyboardComponent = KeyboardManager.getKeyboard(\"0\");\r\n //keyboardComponent.registerInput(searchbarInput);\r\n keyboardComponent.registerButton(keyboardButton, searchbarInput, (text) => {\r\n if (typeof this.overrideSetQueryCallback === \"function\") {\r\n this.overrideSetQueryCallback(text);\r\n } else {\r\n $(searchbarInput).val(text);\r\n }\r\n });\r\n }\r\n\r\n public getSearchAreaDiv() {\r\n // makeSearch populates it but to have some freedom placing it, here it is\r\n return this.searchAreaDiv;\r\n }\r\n\r\n setPlaceholder(text: string) {\r\n this.searchInputTextbox.placeholder = text;\r\n }\r\n\r\n closeAdvancedSearchEditorWithImport(jsonData: string) {\r\n this.writeTextToTextField(jsonData);\r\n this.closeAdvancedSearchEditor();\r\n }\r\n\r\n closeAdvancedSearchEditor() {\r\n $(this.searchbarAdvancedEditorContainer).slideUp(this.speedAnimation); //hide advanced search\r\n var $searchInputTextbox=$(this.searchInputTextbox);\r\n $searchInputTextbox.prop(\"disabled\", false);\r\n $searchInputTextbox.closest(\".input_container\").find(\".keyboard-icon-img\").removeClass(\"disabled\");\r\n $searchInputTextbox.closest(\".input_container\").find(\".regexsearch-input-button\").prop(\"disabled\", false);\r\n $(this.searchButton).prop(\"disabled\", false);\r\n $(this.advancedButton).css(\"visibility\", \"visible\");\r\n $(this.searchInSecondPortalButton).prop(\"disabled\", false);\r\n $searchInputTextbox.focus();\r\n }\r\n\r\n public writeTextToTextField(text: string) {\r\n if (typeof this.overrideSetQueryCallback === \"function\") {\r\n this.overrideSetQueryCallback(text);\r\n return;\r\n }\r\n\r\n $(this.searchInputTextbox).text(text);\r\n $(this.searchInputTextbox).val(text);\r\n $(this.searchInputTextbox).change();\r\n }\r\n\r\n public getTextFromTextField(): string {\r\n return $(this.searchInputTextbox).val() as string;\r\n }\r\n\r\n public processSearchQuery(query: string) {\r\n this.writeTextToTextField(query);\r\n this.processSearch();\r\n }\r\n\r\n static isValidJson(data: string): boolean {\r\n data = data.trim();\r\n if (data.length === 0) {\r\n return false;\r\n }\r\n if ((data[0] !== \"{\" || data[data.length - 1] !== \"}\") &&\r\n (data[0] !== \"[\" || data[data.length - 1] !== \"]\")) {\r\n return false;\r\n }\r\n try {\r\n JSON.parse(data);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n processSearch(clicked: boolean = false) {\r\n var searchboxValue = $(this.searchInputTextbox).val() as string;\r\n this.lastQuery = searchboxValue;\r\n if (Search.isValidJson(searchboxValue)) {\r\n this.lastQueryWasJson = true;\r\n var query = this.getFilteredQuery(searchboxValue, this.enabledOptions); //filter disabled options\r\n this.writeTextToTextField(query);\r\n this.processSearchJsonCallback(query);\r\n\r\n if (query.length !== searchboxValue.length && query !== JSON.stringify(JSON.parse(searchboxValue))) { // JSON serialization is required to have the same string (e.g. without whitespaces)\r\n bootbox.alert(localization.translate(\"UnsupportedCriteriaRemoved\", \"PluginsJs\").value);\r\n }\r\n } else {\r\n this.lastQueryWasJson = false;\r\n this.processSearchTextCallback(searchboxValue, clicked);\r\n }\r\n }\r\n\r\n getLastQuery(): string {\r\n return this.lastQuery;\r\n }\r\n\r\n getLastQueryFiltered(enabledOptions: Array): string {\r\n return this.getFilteredQuery(this.getLastQuery(), enabledOptions);\r\n }\r\n\r\n getFilteredQuery(query: string, enabledOptions: Array):string {\r\n if (!Search.isValidJson(query))\r\n return query;\r\n\r\n var actualState = this.advancedRegexEditor.getConditionsResultJSON();\r\n this.advancedRegexEditor.importJson(query);\r\n var filteredQuery = this.advancedRegexEditor.getConditionsResultJSON(enabledOptions);\r\n this.advancedRegexEditor.importJson(actualState);\r\n return filteredQuery;\r\n }\r\n\r\n isLastQueryJson(): boolean {\r\n return this.lastQueryWasJson;\r\n }\r\n\r\n isLastQueryText(): boolean {\r\n return !this.lastQueryWasJson;\r\n }\r\n}\r\n\r\nclass SearchAreaSelectorWrapper {\r\n private element: JQuery;\r\n\r\n constructor(element: JQuery, onChanged: () => void) {\r\n this.element = element;\r\n\r\n element.on(\"changed.bs.select\", () => {\r\n if (onChanged != null) {\r\n onChanged();\r\n }\r\n });\r\n }\r\n\r\n getValues() {\r\n const val = this.element.val() as string | string[];\r\n return val;\r\n }\r\n\r\n getSerializedValues() {\r\n const val = this.getValues();\r\n const result = $.param({\r\n searchArea: val\r\n });\r\n return result;\r\n }\r\n}\r\n\r\nclass RegExAdvancedSearchEditor {\r\n private fulltextIsLimited = false;\r\n private regexDoneCallback: (jsonData: string) => void;\r\n private regexCancelledCallback: (jsonData: string) => void;\r\n private container: HTMLDivElement;\r\n private innerContainer: HTMLDivElement;\r\n private regExConditions: Array;\r\n private enabledOptionsArray: Array;\r\n\r\n constructor(container: HTMLDivElement, regexDoneCallback: (jsonData: string) => void, regexCancelledCallback: (jsonData: string) => void){\r\n this.regexDoneCallback = regexDoneCallback;\r\n this.regexCancelledCallback = regexCancelledCallback;\r\n this.container = container;\r\n }\r\n\r\n setEnabledOptions(enabledOptions: Array) {\r\n //Set options which are allowed for the actual portal.\r\n const allowedOptions = JSON.parse(he.decode($(\"#allowedSearchOptions\").data(\"options\"))) as Array>;\r\n const filteredEnabledOptions = new Array();\r\n for (let optionId of enabledOptions) {\r\n const optionName = SearchTypeEnum[optionId];\r\n\r\n for (let allowedOption of allowedOptions) {\r\n if (allowedOption.key === optionName) {\r\n if (allowedOption.value) {\r\n filteredEnabledOptions.push(optionId);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.enabledOptionsArray = filteredEnabledOptions;\r\n }\r\n\r\n limitFullTextOptions() {\r\n this.fulltextIsLimited = true;\r\n }\r\n\r\n makeRegExSearch() {\r\n $(this.container).empty();\r\n this.regExConditions = [];\r\n\r\n var commandsDiv = document.createElement(\"div\");\r\n $(commandsDiv).addClass(\"regex-search-buttons-bottom-area\");\r\n\r\n var sentButton = HtmlItemsFactory.createButton(localization.translate(\"Finish\", \"PluginsJs\").value);\r\n $(sentButton).addClass(\"regex-search-button\");\r\n commandsDiv.appendChild(sentButton);\r\n $(sentButton).click(() => {\r\n var json = this.getConditionsResultJSON();\r\n this.regexDoneCallback(json);\r\n });\r\n\r\n var cancelButton = HtmlItemsFactory.createButton(localization.translate(\"Cancel\", \"PluginsJs\").value);\r\n $(cancelButton).addClass(\"regex-search-button\");\r\n commandsDiv.appendChild(cancelButton);\r\n $(cancelButton).click(() => {\r\n var json = this.getConditionsResultJSON();\r\n this.regexCancelledCallback(json);\r\n });\r\n\r\n this.innerContainer = document.createElement(\"div\");\r\n this.addNewCondition(true);\r\n $(this.container).append(this.innerContainer);\r\n $(this.container).append(commandsDiv);\r\n }\r\n\r\n importJson(json: string) {\r\n var jsonDataArray = JSON.parse(json);\r\n $(this.innerContainer).empty();\r\n this.regExConditions = new Array();\r\n\r\n if (jsonDataArray.length == 0) {\r\n this.addNewCondition();\r\n return;\r\n }\r\n\r\n for (var i = 0; i < jsonDataArray.length; i++) {\r\n var conditionData = jsonDataArray[i];\r\n if (this.enabledOptionsArray && $.inArray(conditionData.searchType, this.enabledOptionsArray) >= 0) {\r\n this.addNewCondition();\r\n this.getLastCondition().importData(conditionData);\r\n }\r\n }\r\n }\r\n\r\n addNewCondition(useDelimiter: boolean = true) {\r\n var disableOptions = false;\r\n if (this.regExConditions.length > 0) {\r\n this.getLastCondition().setTextDelimeter();\r\n if (this.fulltextIsLimited) {\r\n this.regExConditions.forEach((condition) => {\r\n switch (condition.getSearchType()) {\r\n case SearchTypeEnum.Fulltext:\r\n case SearchTypeEnum.TokenDistance:\r\n case SearchTypeEnum.Sentence:\r\n case SearchTypeEnum.Heading:\r\n disableOptions = true;\r\n } \r\n });\r\n }\r\n }\r\n\r\n var newRegExConditions = new RegExConditionListItem(this);\r\n newRegExConditions.makeRegExCondition(this.enabledOptionsArray, disableOptions);\r\n newRegExConditions.setClickableDelimeter();\r\n if (!useDelimiter) {\r\n newRegExConditions.removeDelimeter();\r\n }\r\n this.regExConditions.push(newRegExConditions);\r\n $(this.innerContainer).append(newRegExConditions.getHtml());\r\n }\r\n\r\n removeLastCondition() {\r\n if (this.regExConditions.length <= 1)\r\n return;\r\n\r\n var arrayItem = this.regExConditions.pop();\r\n this.innerContainer.removeChild(arrayItem.getHtml());\r\n }\r\n\r\n removeCondition(condition: RegExConditionListItem) {\r\n var index = this.regExConditions.indexOf(condition, 0);\r\n if (index) {\r\n var arrayItem = this.regExConditions[index];\r\n $(arrayItem.getHtml()).fadeToggle(\"slow\", \"linear\", () => {\r\n this.innerContainer.removeChild(arrayItem.getHtml()); \r\n });\r\n this.regExConditions.splice(index, 1);\r\n }\r\n\r\n if (this.regExConditions.length === 0) {\r\n this.addNewCondition(true);\r\n } else {\r\n this.getLastCondition().setClickableDelimeter();\r\n }\r\n }\r\n\r\n getConditionsResultObject(enabledOptions?: Array): Object {\r\n var resultArray = new Array();\r\n for (let i = 0; i < this.regExConditions.length; i++) {\r\n const regExCondition = this.regExConditions[i];\r\n const regExConditionValue = regExCondition.getConditionValue();\r\n if (!enabledOptions || $.inArray(regExConditionValue.searchType, enabledOptions) >= 0) {\r\n resultArray.push(regExConditionValue);\r\n }\r\n }\r\n return resultArray;\r\n }\r\n\r\n getConditionsResultJSON(enabledOptions?: Array): string {\r\n var jsonString = JSON.stringify(this.getConditionsResultObject(enabledOptions));\r\n return jsonString;\r\n }\r\n\r\n private getLastCondition(): RegExConditionListItem {\r\n if (!this.regExConditions || !this.regExConditions.length) return null;\r\n return this.regExConditions[this.regExConditions.length - 1];\r\n }\r\n}\r\n\r\nclass RegExConditionListItem {\r\n private html: HTMLDivElement;\r\n private readonly parent: RegExAdvancedSearchEditor;\r\n private selectedSearchType: number;\r\n private innerConditionContainer: HTMLDivElement;\r\n private innerCondition: IRegExConditionListBase;\r\n private searchDestinationSelect: HTMLSelectElement;\r\n\r\n constructor(parent: RegExAdvancedSearchEditor) {\r\n this.parent = parent;\r\n }\r\n\r\n importData(conditionData: ConditionResult) {\r\n $(this.searchDestinationSelect).val(conditionData.searchType.toString());\r\n $(this.searchDestinationSelect).change();\r\n this.innerCondition.importData(conditionData);\r\n }\r\n\r\n getHtml(): HTMLDivElement {\r\n return this.html;\r\n }\r\n\r\n removeDelimeter() {\r\n $(this.html).find(\".regexsearch-delimiter\").empty();\r\n }\r\n\r\n private hasDelimeter(): boolean {\r\n const isEmpty = $(this.html).find(\".regexsearch-delimiter\").is(\":empty\");\r\n return !isEmpty;\r\n }\r\n\r\n setTextDelimeter() {\r\n const textDelimeter = this.createTextDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(\".regexsearch-delimiter\").append(textDelimeter);\r\n }\r\n\r\n setClickableDelimeter() {\r\n const clickableDelimeter = this.createClickableDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(\".regexsearch-delimiter\").append(clickableDelimeter);\r\n }\r\n\r\n private createClickableDelimeter(): HTMLDivElement {\r\n const delimeterDiv = $(\"
\");\r\n const addWordSpan = $(\"\");\r\n addWordSpan.addClass(\"regex-clickable-text\");\r\n addWordSpan.text(localization.translate(\"+And\", \"PluginsJs\").value);\r\n addWordSpan.click(() => {\r\n this.parent.addNewCondition();//TODO\r\n });\r\n\r\n delimeterDiv.append(addWordSpan);\r\n\r\n const trashButton = $(\"\");\r\n trashButton.addClass(\"regexsearch-delimiter-remove-button\");\r\n const removeGlyph = $(\"\");\r\n removeGlyph.addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.append(removeGlyph);\r\n trashButton.click(() => {\r\n this.parent.removeCondition(this);\r\n });\r\n\r\n delimeterDiv.append(trashButton);\r\n\r\n return delimeterDiv[0] as Node as HTMLDivElement;\r\n }\r\n\r\n private createTextDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n $(delimeterDiv).text(localization.translate(\"And\", \"PluginsJs\").value);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeCondition(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n getSearchType(): SearchTypeEnum {\r\n return this.selectedSearchType;\r\n }\r\n\r\n private enableOptions(enabledOptions: Array) {\r\n\r\n if (!enabledOptions) return; //TODO log error\r\n \r\n if (this.searchDestinationSelect) {\r\n for (let i = 0; i < enabledOptions.length; i++) {\r\n const enabled = enabledOptions[i];\r\n const option = $(this.searchDestinationSelect).find(`option[value = ${enabled.toString()}]`);\r\n option.show();\r\n option.removeClass(\"hidden\");\r\n }\r\n\r\n const optGroups = $(this.searchDestinationSelect).find(\"optgroup\");\r\n for (let j = 0; j < optGroups.length; j++) {\r\n const optGroup = optGroups[j];\r\n const visibleChilds = $(optGroup as Node as Element).children(\":not(.hidden)\");\r\n if (!visibleChilds.length) $(optGroup as Node as Element).hide();\r\n }\r\n }\r\n }\r\n\r\n makeRegExCondition(enabledOptions?: Array, fullTextLimited?: boolean) {\r\n\r\n var conditionsDiv = document.createElement(\"div\");\r\n $(conditionsDiv).addClass(\"regexsearch-condition-main-div\");\r\n\r\n var mainSearchDiv = document.createElement(\"div\");\r\n\r\n var searchDestinationDiv = document.createElement(\"div\");\r\n $(searchDestinationDiv).addClass(\"regexsearch-destination-div\");\r\n mainSearchDiv.appendChild(searchDestinationDiv);\r\n\r\n var searchDestinationSpan = document.createElement(\"span\");\r\n $(searchDestinationSpan).text(localization.translate(\"ChooseSearchFiled\", \"PluginsJs\").value);\r\n $(searchDestinationSpan).addClass(\"regexsearch-upper-select-label\");\r\n searchDestinationDiv.appendChild(searchDestinationSpan);\r\n\r\n var searchDestinationSelect = document.createElement(\"select\");\r\n const searchDestinationSelectEl = $(searchDestinationSelect);\r\n searchDestinationSelectEl.addClass(\"regexsearch-select\");\r\n searchDestinationDiv.appendChild(searchDestinationSelect);\r\n\r\n var metadataOptGroupEl = $(HtmlItemsFactory.createOptionGroup(localization.translate(\"Metadata\", \"PluginsJs\").value));\r\n searchDestinationSelectEl.append(metadataOptGroupEl);\r\n\r\n metadataOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Title\", \"PluginsJs\").value, SearchTypeEnum.Title.toString()));\r\n metadataOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Author\", \"PluginsJs\").value, SearchTypeEnum.Author.toString()));\r\n metadataOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Editor\", \"PluginsJs\").value, SearchTypeEnum.Editor.toString()));\r\n metadataOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Dating\", \"PluginsJs\").value, SearchTypeEnum.Dating.toString()));\r\n metadataOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Term\", \"PluginsJs\").value, SearchTypeEnum.Term.toString()));\r\n\r\n var textOptGroupEl = $(HtmlItemsFactory.createOptionGroup(localization.translate(\"Text\", \"PluginsJs\").value));\r\n searchDestinationSelectEl.append(textOptGroupEl);\r\n\r\n textOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Fulltext\", \"PluginsJs\").value, SearchTypeEnum.Fulltext.toString(), fullTextLimited));\r\n textOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"TokenDistance\", \"PluginsJs\").value, SearchTypeEnum.TokenDistance.toString(), fullTextLimited));\r\n textOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"InSentence\", \"PluginsJs\").value, SearchTypeEnum.Sentence.toString(), fullTextLimited));\r\n textOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"InHeading\", \"PluginsJs\").value, SearchTypeEnum.Heading.toString(), fullTextLimited));\r\n\r\n var headwordsOptGroupEl = $(HtmlItemsFactory.createOptionGroup(localization.translate(\"Headword\", \"PluginsJs\").value));\r\n searchDestinationSelectEl.append(headwordsOptGroupEl);\r\n\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"TokenDistance\", \"PluginsJs\").value, SearchTypeEnum.HeadwordDescriptionTokenDistance.toString()));\r\n // XXX: DRY\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Headword\", \"PluginsJs\").value, SearchTypeEnum.Headword.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"HeadwordDescription\", \"PluginsJs\").value, SearchTypeEnum.HeadwordDescription.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"PartOfSpeech\", \"PluginsJs\").value, SearchTypeEnum.PartOfSpeech.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Phrase\", \"PluginsJs\").value, SearchTypeEnum.Phrase.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Explanation\", \"PluginsJs\").value, SearchTypeEnum.Explanation.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Inflection\", \"PluginsJs\").value, SearchTypeEnum.Inflection.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Motivation\", \"PluginsJs\").value, SearchTypeEnum.Motivation.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Valency\", \"PluginsJs\").value, SearchTypeEnum.Valency.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Link\", \"PluginsJs\").value, SearchTypeEnum.Link.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Source\", \"PluginsJs\").value, SearchTypeEnum.Source.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"SectionAuthor\", \"PluginsJs\").value, SearchTypeEnum.SectionAuthor.toString()));\r\n headwordsOptGroupEl.append(HtmlItemsFactory.createOption(localization.translate(\"Evidence\", \"PluginsJs\").value, SearchTypeEnum.Evidence.toString()));\r\n\r\n searchDestinationSelectEl.change((eventData) => {\r\n var oldSelectedSearchType = this.selectedSearchType;\r\n this.selectedSearchType = parseInt($(eventData.target as Node as HTMLElement).val() as string);\r\n\r\n if (this.selectedSearchType !== oldSelectedSearchType) {\r\n this.changeConditionType(this.selectedSearchType, oldSelectedSearchType);\r\n }\r\n });\r\n\r\n this.searchDestinationSelect = searchDestinationSelectEl[0] as Node as HTMLSelectElement;\r\n\r\n var options = $(this.searchDestinationSelect).find(\"option\");\r\n options.hide();\r\n options.addClass(\"hidden\");\r\n\r\n\r\n this.enableOptions(enabledOptions);\r\n\r\n $(conditionsDiv).append(mainSearchDiv);\r\n\r\n this.innerConditionContainer = document.createElement(\"div\");\r\n $(this.innerConditionContainer).addClass(\"regex-inner-conditon-container\");\r\n this.makeDefaultCondition();\r\n\r\n $(conditionsDiv).append(this.innerConditionContainer);\r\n\r\n var delimeterDiv = document.createElement(\"div\");\r\n $(delimeterDiv).addClass(\"regexsearch-delimiter\");\r\n $(conditionsDiv).append(delimeterDiv);\r\n this.setClickableDelimeter();\r\n this.html = conditionsDiv;\r\n\r\n var defaultValue = $(this.searchDestinationSelect).find(\"option:not(.hidden)\").first().val() as string;\r\n $(searchDestinationSelect).val(defaultValue);\r\n $(searchDestinationSelect).change();\r\n }\r\n\r\n private changeConditionType(newSearchType : SearchTypeEnum, oldSearchType: SearchTypeEnum) {\r\n if (!(this.innerCondition instanceof RegExWordConditionList) && (newSearchType === SearchTypeEnum.Author || newSearchType === SearchTypeEnum.Editor || newSearchType === SearchTypeEnum.Fulltext || newSearchType === SearchTypeEnum.Title || newSearchType === SearchTypeEnum.Heading || newSearchType === SearchTypeEnum.Sentence)) {\r\n $(this.innerConditionContainer).empty();\r\n this.innerCondition = new RegExWordConditionList(this);\r\n this.innerCondition.makeRegExCondition(this.innerConditionContainer);\r\n }\r\n else if (!(this.innerCondition instanceof RegExDatingConditionList) && (newSearchType === SearchTypeEnum.Dating)) {\r\n $(this.innerConditionContainer).empty();\r\n this.innerCondition = new RegExDatingConditionList(this);\r\n this.innerCondition.makeRegExCondition(this.innerConditionContainer);\r\n }\r\n else if (!(this.innerCondition instanceof RegExTokenDistanceConditionList) && (newSearchType === SearchTypeEnum.TokenDistance)) {\r\n $(this.innerConditionContainer).empty();\r\n this.innerCondition = new RegExTokenDistanceConditionList(this);\r\n this.innerCondition.makeRegExCondition(this.innerConditionContainer);\r\n }\r\n }\r\n\r\n private makeDefaultCondition() {\r\n $(this.innerConditionContainer).empty();\r\n this.innerCondition = new RegExWordConditionList(this);\r\n this.innerCondition.makeRegExCondition(this.innerConditionContainer);\r\n }\r\n\r\n getConditionValue(): ConditionResult {\r\n var conditionResult: ConditionResult = this.innerCondition.getConditionValue();\r\n conditionResult.searchType = this.getSearchType();\r\n conditionResult.conditionType = this.innerCondition.getConditionType();\r\n return conditionResult;\r\n }\r\n}\r\n\r\ninterface IRegExConditionListBase {\r\n parentRegExConditionListItem: RegExConditionListItem;\r\n\r\n makeRegExCondition(conditionContainerDiv: HTMLDivElement);\r\n\r\n getConditionValue(): ConditionResult;\r\n\r\n getConditionType(): ConditionTypeEnum;\r\n\r\n resetItems();\r\n\r\n addItem();\r\n\r\n removeItem(item: IRegExConditionItemBase);\r\n\r\n importData(conditionData: ConditionResult);\r\n \r\n getLastItem(): IRegExConditionItemBase;\r\n}\r\n\r\ninterface IRegExConditionItemBase {\r\n parent: IRegExConditionListBase;\r\n\r\n makeRegExItemCondition(); //creates html\r\n\r\n getHtml(): HTMLDivElement;\r\n\r\n removeDelimeter();\r\n\r\n hasDelimeter();\r\n \r\n setTextDelimeter();\r\n\r\n setClickableDelimeter();\r\n\r\n getConditionItemValue(): ConditionItemResult;\r\n\r\n importData(conditionData: ConditionItemResult);\r\n}\r\n\r\nclass RegExWordConditionList implements IRegExConditionListBase {\r\n parentRegExConditionListItem: RegExConditionListItem;\r\n private html: HTMLDivElement;\r\n private selectedWordFormType: string;\r\n private wordListContainerDiv: HTMLDivElement;\r\n private conditionInputArray: Array;\r\n\r\n constructor(parent: RegExConditionListItem) {\r\n this.parentRegExConditionListItem = parent;\r\n }\r\n\r\n importData(conditionsArray: WordsCriteriaListDescription) {\r\n this.resetItems();\r\n if (!conditionsArray.conditions.length) return;\r\n this.getLastItem().importData(conditionsArray.conditions[0]);\r\n for (let i = 1; i < conditionsArray.conditions.length; i++) {\r\n this.addItem();\r\n this.getLastItem().importData(conditionsArray.conditions[i]);\r\n }\r\n }\r\n\r\n getLastItem(): IRegExConditionItemBase {\r\n if (!this.conditionInputArray.length) return null;\r\n return this.conditionInputArray[this.conditionInputArray.length - 1];\r\n }\r\n\r\n getWordFormType(): string {\r\n return this.selectedWordFormType;\r\n }\r\n\r\n private wordFormType = {\r\n Lemma: \"lemma\",\r\n HyperlemmaNew: \"hyperlemma-new\",\r\n HyperlemmaOld: \"hyperlemma-old\",\r\n Stemma: \"stemma\"\r\n };\r\n\r\n public makeRegExCondition(conditionContainerDiv: HTMLDivElement) {\r\n var wordFormDivEl = $(document.createElement(\"div\"));\r\n wordFormDivEl.addClass(\"regexsearch-word-form-div\");\r\n //wordListContainerDiv.appendChild(wordFormDiv); //TODO implement after it iss implemented on server side\r\n\r\n var wordFormSpanEl = $(document.createElement(\"span\"));\r\n wordFormSpanEl.text(localization.translate(\"WordForm\", \"PluginsJs\").value);\r\n wordFormSpanEl.addClass(\"regexsearch-upper-select-label\");\r\n wordFormDivEl.append(wordFormSpanEl);\r\n\r\n const wordFormSelectEl = $(document.createElement(\"select\"));\r\n wordFormSelectEl.addClass(\"regexsearch-select\");\r\n wordFormDivEl.append(wordFormSelectEl);\r\n\r\n wordFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Lemma\", \"PluginsJs\").value, this.wordFormType.Lemma));\r\n wordFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"HyperlemmaNew\", \"PluginsJs\").value, this.wordFormType.HyperlemmaNew));\r\n wordFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"HyperlemmaOld\", \"PluginsJs\").value, this.wordFormType.HyperlemmaOld));\r\n wordFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Stemma\", \"PluginsJs\").value, this.wordFormType.Stemma));\r\n\r\n this.selectedWordFormType = this.wordFormType.Lemma;\r\n\r\n wordFormSelectEl.change((eventData) => {\r\n this.selectedWordFormType = $(eventData.target as Node as HTMLElement).val() as string;\r\n });\r\n\r\n this.wordListContainerDiv = document.createElement(\"div\");\r\n $(this.wordListContainerDiv).addClass(\"regexsearch-condition-list-div\");\r\n conditionContainerDiv.appendChild(this.wordListContainerDiv);\r\n\r\n this.resetItems();\r\n }\r\n\r\n getConditionValue(): WordsCriteriaListDescription {\r\n var criteriaDescriptions: ConditionResult = new WordsCriteriaListDescription();\r\n for (let i = 0; i < this.conditionInputArray.length; i++) {\r\n var regExWordCondition = this.conditionInputArray[i];\r\n criteriaDescriptions.conditions.push(regExWordCondition.getConditionItemValue());\r\n }\r\n return criteriaDescriptions;\r\n }\r\n\r\n getConditionType(): ConditionTypeEnum {\r\n return ConditionTypeEnum.WordList;\r\n }\r\n\r\n resetItems() {\r\n $(this.wordListContainerDiv).empty();\r\n this.conditionInputArray = [];\r\n const newWordCondition = new RegExWordCondition(this);\r\n newWordCondition.makeRegExItemCondition();\r\n newWordCondition.setClickableDelimeter();\r\n this.conditionInputArray.push(newWordCondition);\r\n this.wordListContainerDiv.appendChild(newWordCondition.getHtml());\r\n }\r\n\r\n addItem() {\r\n this.conditionInputArray[this.conditionInputArray.length - 1].setTextDelimeter();\r\n const newWordCondition = new RegExWordCondition(this);\r\n newWordCondition.makeRegExItemCondition();\r\n newWordCondition.setClickableDelimeter();\r\n this.conditionInputArray.push(newWordCondition);\r\n this.wordListContainerDiv.appendChild(newWordCondition.getHtml());\r\n }\r\n\r\n removeItem(item: IRegExConditionItemBase) {\r\n\r\n var index = this.conditionInputArray.indexOf(item, 0);\r\n if (index != undefined) {\r\n var arrayItem = this.conditionInputArray[index];\r\n $(arrayItem.getHtml()).fadeToggle(\"slow\", \"linear\", () => {\r\n this.wordListContainerDiv.removeChild(arrayItem.getHtml()); \r\n });\r\n this.conditionInputArray.splice(index, 1);\r\n }\r\n\r\n if (this.conditionInputArray.length === 1) {\r\n this.conditionInputArray[0].setClickableDelimeter();\r\n }\r\n\r\n if (!this.conditionInputArray.length) {\r\n this.resetItems();\r\n }\r\n }\r\n}\r\n\r\ninterface IRegExDatingConditionView {\r\n makeRangeView(container: HTMLDivElement);\r\n\r\n getLowerValue(): number;\r\n getHigherValue(): number;\r\n\r\n setValues(lower?: number, higher?: number);\r\n\r\n}\r\n\r\nclass RegExDatingConditionRangePeriodView implements IRegExDatingConditionView {\r\n private minCenturyValue: number = 8;\r\n private maxCenturyValue: number = 21;\r\n\r\n private selectedCentury: DatingSliderValue;\r\n private selectedPeriod: DatingSliderValue;\r\n private selectedDecade: DatingSliderValue;\r\n\r\n\r\n private centurySliderValues: Array;\r\n private periodSliderValues: Array;\r\n private decadeSliderValues: Array;\r\n\r\n private lowerValue: number;\r\n private higherValue: number;\r\n private textValue: string;\r\n\r\n private periodEnabled: boolean;\r\n private decadeEnabled: boolean;\r\n\r\n private periodEnabledCheckbox: HTMLInputElement;\r\n private decadeEnabledCheckbox: HTMLInputElement;\r\n\r\n private dateDisplayDiv: HTMLDivElement;\r\n\r\n private centurySlider: HTMLDivElement;\r\n private periodSlider: HTMLDivElement;\r\n private decadesSlider: HTMLDivElement;\r\n\r\n public makeRangeView(container : HTMLDivElement) {\r\n var precisionInputDiv = container;\r\n var centurySliderDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(centurySliderDiv).addClass(\"regex-dating-century-div regex-slider-div\");\r\n\r\n var centuryCheckboxDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(centuryCheckboxDiv).addClass(\"regex-dating-checkbox-div\");\r\n\r\n var centuryNameSpan: HTMLSpanElement = window.document.createElement(\"span\");\r\n $(centuryNameSpan).text(localization.translate(\"Century\", \"PluginsJs\").value);\r\n centuryCheckboxDiv.appendChild(centuryNameSpan);\r\n centurySliderDiv.appendChild(centuryCheckboxDiv);\r\n precisionInputDiv.appendChild(centurySliderDiv);\r\n\r\n var centuryArray = new Array();\r\n for (var century = this.minCenturyValue; century <= this.maxCenturyValue; century++) {\r\n centuryArray.push(new DatingSliderValue(century.toString(), century * 100 - 99, century * 100)); //calculate century low and high values (i.e 18. century is 1701 - 1800)\r\n }\r\n\r\n this.centurySliderValues = centuryArray;\r\n\r\n var sliderCentury = this.makeSlider(centuryArray, localization.translate(\".Century\", \"PluginsJs\").value,(selectedValue: DatingSliderValue) => { this.centuryChanged(selectedValue) });\r\n $(sliderCentury).change();\r\n centurySliderDiv.appendChild(sliderCentury);\r\n\r\n this.centurySlider = sliderCentury;\r\n\r\n var periodSliderDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(periodSliderDiv).addClass(\"regex-dating-period-div regex-slider-div\");\r\n\r\n var periodCheckboxDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(periodCheckboxDiv).addClass(\"regex-dating-checkbox-div\");\r\n var periodValueCheckbox: HTMLInputElement = window.document.createElement(\"input\");\r\n periodValueCheckbox.type = \"checkbox\";\r\n this.periodEnabledCheckbox = periodValueCheckbox;\r\n $(periodValueCheckbox).change((eventData) => {\r\n var currentTarget: HTMLInputElement = eventData.currentTarget as Node as HTMLInputElement;\r\n const targetEl = $(eventData.target as Node as HTMLElement);\r\n if (currentTarget.checked) {\r\n targetEl.parent().siblings(\".slider\").slider(\"option\", \"disabled\", false);\r\n targetEl.parent().siblings(\".slider\").find(\".slider-tip\").show();\r\n this.periodEnabled = true;\r\n\r\n targetEl.parents(\".regex-slider-div\").siblings(\".regex-slider-div\").find(\".regex-dating-checkbox-div\").find(\"input\").prop('checked', false).change();//uncheck other checboxes \r\n } else {\r\n targetEl.parent().siblings(\".slider\").slider(\"option\", \"disabled\", true);\r\n targetEl.parent().siblings(\".slider\").find(\".slider-tip\").hide();\r\n this.periodEnabled = false;\r\n }\r\n\r\n this.changedValue();\r\n });\r\n\r\n var periodNameSpan: HTMLSpanElement = window.document.createElement(\"span\");\r\n $(periodNameSpan).text(localization.translate(\"ApproxTime\", \"PluginsJs\").value);\r\n $(periodNameSpan).click((event) => {\r\n this.changeCheckbox(event.currentTarget);\r\n });\r\n periodCheckboxDiv.appendChild(periodValueCheckbox);\r\n periodCheckboxDiv.appendChild(periodNameSpan);\r\n periodSliderDiv.appendChild(periodCheckboxDiv);\r\n precisionInputDiv.appendChild(periodSliderDiv);\r\n\r\n this.periodSliderValues = new Array(\r\n new DatingSliderValue(localization.translate(\"CenturyTurn\", \"PluginsJs\").value, -9, -90),\r\n new DatingSliderValue(localization.translate(\"Start\", \"PluginsJs\").value, 0, -85),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedQuarter\", [\"1\"], \"PluginsJs\").value, 0, -75),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedThird\", [\"1\"], \"PluginsJs\").value, 0, -66),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedHalf\", [\"1\"], \"PluginsJs\").value, 0, -50),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedQuarter\", [\"2\"], \"PluginsJs\").value, 25, -50),\r\n new DatingSliderValue(localization.translate(\"Half\", \"PluginsJs\").value, 28, -29),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedQuarter\", [\"3\"], \"PluginsJs\").value, 50, -25),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedHalf\", [\"2\"], \"PluginsJs\").value, 50, 0),\r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedThird\", [\"3\"], \"PluginsJs\").value, 66, 0), \r\n new DatingSliderValue(localization.translateFormat(\"SpecifiedQuarter\", [\"4\"], \"PluginsJs\").value, 75, 0),\r\n new DatingSliderValue(localization.translate(\"End\", \"PluginsJs\").value, 85, 0),\r\n new DatingSliderValue(localization.translate(\"CenturyTurn\", \"PluginsJs\").value, 90, 9));\r\n\r\n var sliderPeriod = this.makeSlider(this.periodSliderValues, \"\",(selectedValue: DatingSliderValue) => { this.periodChanged(selectedValue) });\r\n $(sliderPeriod).slider(\"option\", \"disabled\", true);\r\n $(sliderPeriod).parent().siblings(\".slider\").find(\".slider-tip\").hide();\r\n $(sliderPeriod).change();\r\n periodSliderDiv.appendChild(sliderPeriod);\r\n\r\n this.periodSlider = sliderPeriod;\r\n\r\n var decadesSliderDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(decadesSliderDiv).addClass(\"regex-dating-decades-div regex-slider-div\");\r\n\r\n var decadeCheckboxDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(decadeCheckboxDiv).addClass(\"regex-dating-checkbox-div\");\r\n\r\n var decadesCheckbox: HTMLInputElement = window.document.createElement(\"input\");\r\n decadesCheckbox.type = \"checkbox\";\r\n this.decadeEnabledCheckbox = decadesCheckbox;\r\n $(decadesCheckbox).change((eventData) => {\r\n var currentTarget: HTMLInputElement = (eventData.currentTarget as Node as HTMLElement);\r\n const targetEl = $(eventData.target as Node as HTMLElement);\r\n if (currentTarget.checked) {\r\n targetEl.parent().siblings(\".slider\").slider(\"option\", \"disabled\", false);\r\n targetEl.parent().siblings(\".slider\").find(\".slider-tip\").show();\r\n this.decadeEnabled = true;\r\n\r\n targetEl.parents(\".regex-slider-div\").siblings(\".regex-slider-div\").find(\".regex-dating-checkbox-div\").find(\"input\").prop('checked', false).change();//uncheck other checboxes \r\n } else {\r\n targetEl.parent().siblings(\".slider\").slider(\"option\", \"disabled\", true);\r\n targetEl.parent().siblings(\".slider\").find(\".slider-tip\").hide();\r\n this.decadeEnabled = false;\r\n }\r\n\r\n this.changedValue();\r\n });\r\n\r\n var decadesNameSpan: HTMLSpanElement = window.document.createElement(\"span\");\r\n $(decadesNameSpan).text(localization.translate(\"Decades\", \"PluginsJs\").value);\r\n $(decadesNameSpan).click((event) => {\r\n this.changeCheckbox(event.currentTarget);\r\n });\r\n decadeCheckboxDiv.appendChild(decadesCheckbox);\r\n decadeCheckboxDiv.appendChild(decadesNameSpan);\r\n decadesSliderDiv.appendChild(decadeCheckboxDiv);\r\n precisionInputDiv.appendChild(decadesSliderDiv);\r\n\r\n var decadesArray = new Array();\r\n for (var decades = 0; decades <= 90; decades += 10) {\r\n decadesArray.push(new DatingSliderValue(decades.toString(), decades -1, -(100 - (decades + 9)))); //calculate decades low and high values (i.e 20. decades of 18. century is 1720-1729)\r\n }\r\n\r\n this.decadeSliderValues = decadesArray;\r\n\r\n var sliderDecades = this.makeSlider(decadesArray, localization.translate(\".Decades\", \"PluginsJs\").value,(selectedValue: DatingSliderValue) => { this.decadeChanged(selectedValue) });\r\n $(sliderDecades).slider(\"option\", \"disabled\", true);\r\n $(sliderDecades).parent().siblings(\".slider\").find(\".slider-tip\").hide();\r\n $(sliderDecades).change();\r\n decadesSliderDiv.appendChild(sliderDecades);\r\n\r\n this.decadesSlider = sliderDecades;\r\n\r\n const datingDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(datingDiv).addClass(\"regex-slider-div\");\r\n precisionInputDiv.appendChild(datingDiv);\r\n\r\n const datingLabelDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(datingLabelDiv).addClass(\"regex-dating-checkbox-div\");\r\n\r\n var decadesNameSpan: HTMLSpanElement = window.document.createElement(\"span\");\r\n $(decadesNameSpan).text(localization.translate(\"VerbalDescription\", \"PluginsJs\").value);\r\n datingLabelDiv.appendChild(decadesNameSpan);\r\n datingDiv.appendChild(datingLabelDiv);\r\n\r\n var datingDisplayedValueDiv = document.createElement('div');\r\n $(datingDisplayedValueDiv).addClass(\"regex-dating-condition-displayed-value\");\r\n this.dateDisplayDiv = datingDisplayedValueDiv;\r\n datingDiv.appendChild(datingDisplayedValueDiv);\r\n this.changedValue();\r\n }\r\n\r\n private changeCheckbox(targetElement: HTMLElement) {\r\n var checkbox = $(targetElement).parent().find(\"input\");\r\n checkbox.prop(\"checked\", !checkbox.prop(\"checked\"));\r\n checkbox.change();\r\n }\r\n\r\n private centuryChanged(sliderValue: DatingSliderValue) {\r\n this.selectedCentury = sliderValue;\r\n this.changedValue();\r\n }\r\n\r\n private periodChanged(sliderValue: DatingSliderValue) {\r\n this.selectedPeriod = sliderValue;\r\n this.changedValue();\r\n }\r\n\r\n private decadeChanged(sliderValue: DatingSliderValue) {\r\n this.selectedDecade = sliderValue;\r\n this.changedValue();\r\n }\r\n\r\n private changedValue() {\r\n $(this.dateDisplayDiv).empty();\r\n var lower = this.selectedCentury.lowNumberValue;\r\n var higher = this.selectedCentury.highNumberValue;\r\n let text = \"\";\r\n\r\n if (this.periodEnabled) {\r\n lower += this.selectedPeriod.lowNumberValue;\r\n higher += this.selectedPeriod.highNumberValue;\r\n text = this.selectedPeriod.name;\r\n }\r\n\r\n if (this.decadeEnabled) {\r\n lower += this.selectedDecade.lowNumberValue;\r\n higher += this.selectedDecade.highNumberValue;\r\n text = this.selectedDecade.name + localization.translate(\".Decades\", \"PluginsJs\").value; \r\n }\r\n\r\n if (lower < this.selectedCentury.lowNumberValue) {\r\n const previousCentury = Number(this.selectedCentury.name) - 1;\r\n text = localization.translateFormat(\"SpecifiedCenturyTurn\", [previousCentury.toString(), this.selectedCentury.name], \"PluginsJs\").value;\r\n } else if (higher > this.selectedCentury.highNumberValue) {\r\n const nextCentury = Number(this.selectedCentury.name) + 1;\r\n text = localization.translateFormat(\"SpecifiedCenturyTurn\", [this.selectedCentury.name, nextCentury.toString()], \"PluginsJs\").value;\r\n }\r\n else {\r\n text += \" \" + this.selectedCentury.name + localization.translate(\".Century\", \"PluginsJs\").value;\r\n }\r\n\r\n this.lowerValue = lower;\r\n this.higherValue = higher;\r\n this.textValue = text;\r\n\r\n $(this.dateDisplayDiv).html(`${text} (${lower}-${higher})`);\r\n }\r\n\r\n private makeSlider(valuesArray: Array, nameEnding: string, callbackFunction: (selectedValue: DatingSliderValue) => void) {\r\n var slider: HTMLDivElement = document.createElement('div');\r\n $(slider).addClass('slider');\r\n $(slider).slider({\r\n min: 0,\r\n max: valuesArray.length - 1,\r\n value: 0,\r\n slide: (event, ui) => {\r\n $(event.target as HTMLElement).find('.ui-slider-handle').find('.tooltip-inner').html(valuesArray[ui.value].name + nameEnding);\r\n\r\n },\r\n change: (event: Event, ui: JQueryUI.SliderUIParams) => {\r\n callbackFunction(valuesArray[ui.value]);\r\n $(event.target as HTMLElement).find('.ui-slider-handle').find('.tooltip-inner').html(valuesArray[ui.value].name + nameEnding);\r\n }\r\n });\r\n\r\n callbackFunction(valuesArray[0]); //default is first\r\n\r\n var sliderTooltip: HTMLDivElement = document.createElement('div');\r\n $(sliderTooltip).addClass('tooltip top slider-tip');\r\n var arrowTooltip: HTMLDivElement = document.createElement('div');\r\n $(arrowTooltip).addClass('tooltip-arrow');\r\n sliderTooltip.appendChild(arrowTooltip);\r\n\r\n var innerTooltip: HTMLDivElement = document.createElement('div');\r\n $(innerTooltip).addClass('tooltip-inner');\r\n $(innerTooltip).html(valuesArray[0].name + nameEnding);\r\n sliderTooltip.appendChild(innerTooltip);\r\n\r\n var sliderHandle = $(slider).find('.ui-slider-handle');\r\n $(sliderHandle).append(sliderTooltip);\r\n\r\n return slider;\r\n }\r\n\r\n getLowerValue(): number { return this.lowerValue; }\r\n\r\n getHigherValue(): number { return this.higherValue; }\r\n\r\n getTextValue(): string { return this.textValue; }\r\n\r\n setValues(lower?: number, higher?: number) {\r\n var century: number = lower !== null ? Math.floor(lower/100) : Math.floor(higher/100);\r\n var centuryIndex: number = 0;\r\n for (var i = 0; i < this.centurySliderValues.length; i++) {\r\n var centurySliderValue = this.centurySliderValues[i];\r\n if (Math.floor(centurySliderValue.lowNumberValue/100) === century) {\r\n $(this.centurySlider).slider(\"value\", i);\r\n centuryIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n var importedCentury = this.centurySliderValues[centuryIndex];\r\n\r\n var periodIndex = -1;\r\n for (var i = 0; i < this.periodSliderValues.length; i++) {\r\n var periodSliderValue = this.periodSliderValues[i];\r\n if ((lower === null || (periodSliderValue.lowNumberValue + importedCentury.lowNumberValue) === lower) && (higher === null || (periodSliderValue.highNumberValue + importedCentury.highNumberValue) === higher)) {\r\n $(this.periodSlider).slider(\"value\", i);\r\n periodIndex = i;\r\n this.periodEnabledCheckbox.checked = true;\r\n $(this.periodEnabledCheckbox).change();\r\n break;\r\n }\r\n }\r\n\r\n if (periodIndex < 0) {\r\n for (var i = 0; i < this.decadeSliderValues.length; i++) {\r\n var decadeSliderValue = this.decadeSliderValues[i];\r\n if ((lower === null || (decadeSliderValue.lowNumberValue + importedCentury.lowNumberValue) === lower) && (higher === null || (decadeSliderValue.highNumberValue + importedCentury.highNumberValue) === higher)) {\r\n $(this.decadesSlider).slider(\"value\", i);\r\n this.decadeEnabledCheckbox.checked = true;\r\n $(this.decadeEnabledCheckbox).change();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass RegExDatingConditionRangeYearView implements IRegExDatingConditionView {\r\n private minValue: number = 800;\r\n private maxValue: number = 2100;\r\n private initValue: number = 800;\r\n\r\n private actualValue: number;\r\n\r\n private valueInput: HTMLInputElement;\r\n\r\n makeRangeView(container: HTMLDivElement) {\r\n var precisionInpuDiv = container;\r\n var textInput : HTMLInputElement = document.createElement(\"input\");\r\n textInput.type = \"number\";\r\n textInput.min = this.minValue.toString();\r\n textInput.max = this.maxValue.toString();\r\n textInput.value = this.initValue.toString();\r\n this.actualValue = this.initValue;\r\n\r\n // allows only digits input\r\n $(textInput).keyup((e) => {\r\n const targetEl = $(e.target as Node as HTMLElement);\r\n var value = targetEl.val() as string;\r\n value.replace(/[^0-9]/g, '');\r\n targetEl.val(value);\r\n targetEl.text(value);\r\n\r\n this.actualValue = parseInt(value);\r\n });\r\n\r\n $(textInput).change((e) => {\r\n var value = $(e.target as Node as HTMLElement).val() as string;\r\n this.actualValue = parseInt(value);\r\n });\r\n\r\n this.valueInput = textInput;\r\n\r\n var spanInput: HTMLSpanElement = document.createElement(\"span\");\r\n $(spanInput).addClass(\"regex-dating-input-span\");\r\n $(spanInput).text(localization.translate(\"Year:\", \"PluginsJs\").value);\r\n \r\n precisionInpuDiv.appendChild(spanInput);\r\n precisionInpuDiv.appendChild(textInput);\r\n }\r\n\r\n\r\n getLowerValue(): number { return this.actualValue; }\r\n\r\n getHigherValue(): number { return this.actualValue; }\r\n\r\n private setValue(value: number) {\r\n $(this.valueInput).val(value.toString());\r\n $(this.valueInput).text(value.toString());\r\n $(this.valueInput).change();\r\n }\r\n\r\n setValues(lower?: number, higher?: number) {\r\n if (lower !== null) {\r\n this.setValue(lower);\r\n }\r\n else {\r\n this.setValue(higher);\r\n }\r\n }\r\n}\r\n\r\nclass RegExDatingConditionList implements IRegExConditionListBase {\r\n parentRegExConditionListItem: RegExConditionListItem;\r\n private html: HTMLDivElement;\r\n private datingListContainerDiv: HTMLDivElement;\r\n private conditionInputArray: Array;\r\n\r\n constructor(parent: RegExConditionListItem) {\r\n this.parentRegExConditionListItem = parent;\r\n }\r\n\r\n importData(conditionsArray: DatingCriteriaListDescription) {\r\n this.resetItems();\r\n if (!conditionsArray.conditions.length) return;\r\n this.getLastItem().importData(conditionsArray.conditions[0]);\r\n for (let i = 1; i < conditionsArray.conditions.length; i++) {\r\n this.addItem();\r\n this.getLastItem().importData(conditionsArray.conditions[i]);\r\n }\r\n }\r\n\r\n getLastItem(): IRegExConditionItemBase {\r\n if (!this.conditionInputArray.length) return null;\r\n return this.conditionInputArray[this.conditionInputArray.length - 1];\r\n }\r\n\r\n makeRegExCondition(conditionContainerDiv: HTMLDivElement) {\r\n this.datingListContainerDiv = document.createElement(\"div\");\r\n $(this.datingListContainerDiv).addClass(\"regexsearch-condition-list-div\");\r\n conditionContainerDiv.appendChild(this.datingListContainerDiv);\r\n this.resetItems();\r\n }\r\n\r\n getConditionValue(): DatingCriteriaListDescription {\r\n var criteriaDescriptions = new DatingCriteriaListDescription();\r\n for (var i = 0; i < this.conditionInputArray.length; i++) {\r\n var regExDatingCondition = this.conditionInputArray[i];\r\n criteriaDescriptions.conditions.push(regExDatingCondition.getConditionItemValue());\r\n }\r\n return criteriaDescriptions;\r\n }\r\n\r\n getConditionType(): ConditionTypeEnum {\r\n return ConditionTypeEnum.DatingList;\r\n }\r\n\r\n resetItems() {\r\n $(this.datingListContainerDiv).empty();\r\n this.conditionInputArray = [];\r\n var newDatingCondition = new RegExDatingCondition(this);\r\n newDatingCondition.makeRegExItemCondition();\r\n newDatingCondition.setClickableDelimeter();\r\n this.conditionInputArray.push(newDatingCondition);\r\n this.datingListContainerDiv.appendChild(newDatingCondition.getHtml());\r\n }\r\n\r\n addItem() {\r\n this.conditionInputArray[this.conditionInputArray.length - 1].setTextDelimeter();\r\n var newDatingCondition = new RegExDatingCondition(this);\r\n newDatingCondition.makeRegExItemCondition();\r\n newDatingCondition.setClickableDelimeter();\r\n this.conditionInputArray.push(newDatingCondition);\r\n this.datingListContainerDiv.appendChild(newDatingCondition.getHtml());\r\n }\r\n\r\n removeItem(condition: RegExDatingCondition) {\r\n\r\n var index = this.conditionInputArray.indexOf(condition, 0);\r\n if (index != undefined) {\r\n var arrayItem = this.conditionInputArray[index];\r\n $(arrayItem.getHtml()).fadeToggle(\"slow\", \"linear\",() => {\r\n this.datingListContainerDiv.removeChild(arrayItem.getHtml()); \r\n });\r\n this.conditionInputArray.splice(index, 1);\r\n }\r\n\r\n if (this.conditionInputArray.length === 1) {\r\n this.conditionInputArray[0].setClickableDelimeter();\r\n }\r\n\r\n if (this.conditionInputArray.length === 0) {\r\n this.resetItems();\r\n }\r\n }\r\n}\r\n\r\nclass RegExDatingCondition implements IRegExConditionItemBase{\r\n private DATING_AROUND: number = 3; //const\r\n\r\n private datingPrecision: DatingPrecisionEnum;\r\n private datingRange: DatingRangeEnum;\r\n\r\n private precisionInputDiv: HTMLDivElement;\r\n\r\n private datingRangeSelect: HTMLSelectElement;\r\n private datingPrecisionSelect: HTMLSelectElement;\r\n\r\n private firstDateView: IRegExDatingConditionView;\r\n private secondDateView: IRegExDatingConditionView;\r\n\r\n parent: RegExDatingConditionList;\r\n private html: HTMLDivElement;\r\n\r\n private delimeterClass: string = \"regexsearch-dating-or-delimiter\";\r\n\r\n constructor(parent: RegExDatingConditionList) {\r\n this.parent = parent;\r\n }\r\n\r\n importData(conditionData: DatingCriteriaDescription) {\r\n $(this.datingRangeSelect).val(conditionData.datingRangeEnum.toString());\r\n $(this.datingRangeSelect).change();\r\n $(this.datingPrecisionSelect).val(conditionData.datingPrecision.toString());\r\n $(this.datingPrecisionSelect).change();\r\n \r\n\r\n switch (conditionData.datingRangeEnum) {\r\n case DatingRangeEnum.YoungerThen:\r\n this.firstDateView.setValues(conditionData.notAfter, null);\r\n break;\r\n case DatingRangeEnum.OlderThen:\r\n this.firstDateView.setValues(null, conditionData.notBefore);\r\n break;\r\n case DatingRangeEnum.Around:\r\n var lower = conditionData.notBefore + this.DATING_AROUND;\r\n var higher = conditionData.notAfter - this.DATING_AROUND;\r\n this.firstDateView.setValues(lower,higher);\r\n break;\r\n case DatingRangeEnum.Between:\r\n this.firstDateView.setValues(conditionData.notBefore, null);\r\n this.secondDateView.setValues(null, conditionData.notAfter);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n getHtml(): HTMLDivElement {\r\n return this.html;\r\n }\r\n\r\n removeDelimeter() {\r\n $(this.html).find(\".\"+this.delimeterClass).empty();\r\n }\r\n\r\n hasDelimeter(): boolean {\r\n var isEmpty = $(this.html).find(\".\"+this.delimeterClass).is(\":empty\");\r\n return !isEmpty;\r\n }\r\n\r\n setTextDelimeter() {\r\n var textDelimeter = this.createTextDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(\".\"+this.delimeterClass).append(textDelimeter);\r\n }\r\n\r\n setClickableDelimeter() {\r\n var clickableDelimeter = this.createClickableDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(\".\"+this.delimeterClass).append(clickableDelimeter);\r\n }\r\n\r\n private createClickableDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n var addWordSpan = document.createElement(\"span\");\r\n $(addWordSpan).addClass(\"regex-clickable-text\");\r\n $(addWordSpan).text(localization.translate(\"+Or\", \"PluginsJs\").value);\r\n $(addWordSpan).click(() => {\r\n this.parent.addItem();\r\n });\r\n\r\n delimeterDiv.appendChild(addWordSpan);\r\n $(delimeterDiv).addClass(this.delimeterClass);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeItem(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n private createTextDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n $(delimeterDiv).text(localization.translate(\"Or\", \"PluginsJs\").value);\r\n $(delimeterDiv).addClass(this.delimeterClass);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeItem(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n makeRegExItemCondition() {\r\n var datingConditionDiv = document.createElement('div');\r\n $(datingConditionDiv).addClass(\"regex-dating-condition\");\r\n\r\n var datingDiv = document.createElement('div');\r\n $(datingDiv).addClass(\"regex-dating-condition-value-select\");\r\n\r\n datingDiv.appendChild(this.makeTopSelectBoxes());\r\n\r\n var precisionInpuDiv: HTMLDivElement = window.document.createElement(\"div\");\r\n $(precisionInpuDiv).addClass(\"regex-dating-precision-div\");\r\n this.precisionInputDiv = precisionInpuDiv;\r\n datingDiv.appendChild(precisionInpuDiv);\r\n\r\n this.changeViews();\r\n datingConditionDiv.appendChild(datingDiv);\r\n datingConditionDiv.appendChild(this.createTextDelimeter());\r\n this.html = datingConditionDiv;\r\n }\r\n\r\n public makeTopSelectBoxes() : HTMLDivElement {\r\n var datingFormDivEl = $(document.createElement(\"div\"));\r\n datingFormDivEl.addClass(\"regex-dating-condition-selects\");\r\n\r\n var datingSelectDivEl = $(document.createElement(\"div\"));\r\n datingSelectDivEl.addClass(\"regex-dating-condition-select\");\r\n\r\n var datingFormSpanEl = $(document.createElement(\"span\"));\r\n datingFormSpanEl.text(localization.translate(\"DatingSelect\", \"PluginsJs\").value);\r\n datingFormSpanEl.addClass(\"regexsearch-upper-select-label\");\r\n datingSelectDivEl.append(datingFormSpanEl);\r\n\r\n var datingFormSelectEl = $(document.createElement(\"select\"));\r\n datingFormSelectEl.addClass(\"regexsearch-select\");\r\n datingSelectDivEl.append(datingFormSelectEl);\r\n\r\n datingFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"OlderThan\", \"PluginsJs\").value, DatingRangeEnum.OlderThen.toString()));\r\n datingFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"YoungerThan\", \"PluginsJs\").value, DatingRangeEnum.YoungerThen.toString()));\r\n datingFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Between\", \"PluginsJs\").value, DatingRangeEnum.Between.toString()));\r\n datingFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Around\", \"PluginsJs\").value, DatingRangeEnum.Around.toString()));\r\n\r\n this.datingRange = DatingRangeEnum.OlderThen;\r\n\r\n datingFormSelectEl.change((eventData) => {\r\n var oldRange = this.datingRange;\r\n this.datingRange = parseInt($(eventData.target as Node as HTMLElement).val() as string);\r\n\r\n if (oldRange !== this.datingRange) {\r\n this.changeViews();\r\n }\r\n });\r\n\r\n this.datingRangeSelect = datingFormSelectEl[0] as Node as HTMLSelectElement;\r\n\r\n var precisionSelectDivEl = $(document.createElement(\"div\"));\r\n precisionSelectDivEl.addClass(\"regex-dating-condition-select\");\r\n\r\n var precisionFormSpanEl = $(document.createElement(\"span\"));\r\n precisionFormSpanEl.text(localization.translate(\"PrecisionSelect\", \"PluginsJs\").value);\r\n precisionFormSpanEl.addClass(\"regexsearch-upper-select-label\");\r\n precisionSelectDivEl.append(precisionFormSpanEl);\r\n\r\n var precisionFormSelectEl = $(document.createElement(\"select\"));\r\n precisionFormSelectEl.addClass(\"regexsearch-select\");\r\n precisionSelectDivEl.append(precisionFormSelectEl);\r\n\r\n precisionFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Period\", \"PluginsJs\").value, DatingPrecisionEnum.Period.toString()));\r\n precisionFormSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Year\", \"PluginsJs\").value, DatingPrecisionEnum.Year.toString()));\r\n\r\n this.datingPrecision = DatingPrecisionEnum.Period;\r\n\r\n precisionFormSelectEl.change((eventData) => {\r\n var oldPrecision = this.datingPrecision;\r\n this.datingPrecision = parseInt($(eventData.target as Node as HTMLElement).val() as string);\r\n\r\n if (oldPrecision !== this.datingPrecision) {\r\n this.changeViews();\r\n }\r\n });\r\n\r\n this.datingPrecisionSelect = precisionFormSelectEl[0] as Node as HTMLSelectElement;\r\n\r\n precisionSelectDivEl.append(precisionFormSelectEl);\r\n\r\n datingFormDivEl.append(datingSelectDivEl);\r\n datingFormDivEl.append(precisionSelectDivEl);\r\n\r\n return datingFormDivEl[0] as Node as HTMLDivElement;\r\n }\r\n\r\n private changeViews() {\r\n var oldFirstDataView = this.firstDateView;\r\n $(this.precisionInputDiv).empty();\r\n this.firstDateView = this.createInputRangeView();\r\n\r\n this.firstDateView.makeRangeView(this.precisionInputDiv);\r\n if (typeof oldFirstDataView !== 'undefined' && oldFirstDataView !== null) {\r\n this.firstDateView.setValues(oldFirstDataView.getLowerValue(), oldFirstDataView.getHigherValue());\r\n }\r\n \r\n\r\n if (this.datingRange === DatingRangeEnum.Between) {\r\n var delimeter = document.createElement(\"div\");\r\n $(delimeter).text(localization.translate(\"Till\", \"PluginsJs\").value);\r\n this.precisionInputDiv.appendChild(delimeter);\r\n\r\n var oldSecondView = this.secondDateView;\r\n this.secondDateView = this.createInputRangeView();\r\n this.secondDateView.makeRangeView(this.precisionInputDiv);\r\n if (typeof oldSecondView !== 'undefined' && oldSecondView !== null) {\r\n this.secondDateView.setValues(oldSecondView.getLowerValue(), oldSecondView.getHigherValue());\r\n }\r\n\r\n } else {\r\n this.secondDateView = null;\r\n }\r\n }\r\n\r\n private createInputRangeView(): IRegExDatingConditionView{\r\n if (this.datingPrecision === DatingPrecisionEnum.Period) {\r\n return new RegExDatingConditionRangePeriodView();\r\n } else {\r\n return new RegExDatingConditionRangeYearView();\r\n }\r\n }\r\n\r\n getConditionItemValue(): DatingCriteriaDescription {\r\n var datingValue = new DatingCriteriaDescription();\r\n datingValue.datingRangeEnum = this.datingRange;\r\n datingValue.datingPrecision = this.datingPrecision;\r\n\r\n switch (this.datingRange) {\r\n case DatingRangeEnum.YoungerThen:\r\n datingValue.notAfter = this.firstDateView.getLowerValue();\r\n break;\r\n case DatingRangeEnum.OlderThen:\r\n datingValue.notBefore = this.firstDateView.getHigherValue();\r\n break;\r\n case DatingRangeEnum.Around:\r\n datingValue.notAfter = this.firstDateView.getHigherValue() + this.DATING_AROUND;\r\n datingValue.notBefore = this.firstDateView.getLowerValue() - this.DATING_AROUND;\r\n break;\r\n case DatingRangeEnum.Between:\r\n datingValue.notBefore = this.firstDateView.getLowerValue();\r\n datingValue.notAfter = this.secondDateView.getHigherValue();\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n return datingValue;\r\n }\r\n}\r\n\r\nclass DatingSliderValue {\r\n name: string; //displayed name i.e 18 (century) or prelom\r\n lowNumberValue: number; // lower value i.e. 1700 or -10\r\n highNumberValue: number; // higher value i.e 1799 or +10\r\n\r\n constructor(name: string, lowNumberValue: number, highNumberValue: number) {\r\n this.name = name;\r\n this.lowNumberValue = lowNumberValue;\r\n this.highNumberValue = highNumberValue;\r\n }\r\n}\r\n\r\nclass RegExWordCondition implements IRegExConditionItemBase{\r\n private html: HTMLDivElement;\r\n private inputsArray: Array;\r\n private hiddenWordInputSelects: Array;\r\n private inputsContainerDiv: HTMLDivElement;\r\n parent: IRegExConditionListBase;\r\n\r\n private delimeterClass: string = \"regexsearch-or-delimiter\";\r\n\r\n constructor(parent?: IRegExConditionListBase) {\r\n this.parent = parent;\r\n }\r\n\r\n importData(conditionData: WordCriteriaDescription) {\r\n this.resetInputs();\r\n if (conditionData.startsWith) {\r\n this.getLastInput().importData(conditionData.startsWith, WordInputTypeEnum.StartsWith);\r\n this.addInput();\r\n }\r\n if (conditionData.contains.length) {\r\n for (var i = 0; i < conditionData.contains.length; i++) {\r\n this.getLastInput().importData(conditionData.contains[i], WordInputTypeEnum.Contains);\r\n this.addInput();\r\n }\r\n }\r\n if (conditionData.endsWith) {\r\n this.getLastInput().importData(conditionData.endsWith, WordInputTypeEnum.EndsWith);\r\n this.addInput();\r\n }\r\n if (conditionData.exactMatch) {\r\n this.getLastInput().importData(conditionData.exactMatch, WordInputTypeEnum.ExactMatch);\r\n this.addInput();\r\n }\r\n this.removeInput(this.getLastInput());\r\n }\r\n\r\n private getLastInput(): RegExWordInput {\r\n if (!this.inputsArray.length) return null;\r\n return this.inputsArray[this.inputsArray.length - 1];\r\n }\r\n\r\n getHtml(): HTMLDivElement {\r\n return this.html;\r\n }\r\n\r\n removeDelimeter() {\r\n $(this.html).find(`.${this.delimeterClass}`).empty();\r\n }\r\n\r\n hasDelimeter(): boolean {\r\n const isEmpty = $(this.html).find(\".\" + this.delimeterClass).is(\":empty\");\r\n return !isEmpty;\r\n }\r\n\r\n setTextDelimeter() {\r\n var textDelimeter = this.createTextDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(`.${this.delimeterClass}`).append(textDelimeter);\r\n }\r\n\r\n setClickableDelimeter() {\r\n var clickableDelimeter = this.createClickableDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(`.${this.delimeterClass}`).append(clickableDelimeter);\r\n }\r\n\r\n private createClickableDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n var addWordSpan = document.createElement(\"span\");\r\n $(addWordSpan).addClass(\"regex-clickable-text\");\r\n $(addWordSpan).text(localization.translate(\"+Or\", \"PluginsJs\").value);\r\n $(addWordSpan).click(() => {\r\n this.parent.addItem();\r\n });\r\n\r\n delimeterDiv.appendChild(addWordSpan);\r\n $(delimeterDiv).addClass(this.delimeterClass);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeItem(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n private createTextDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n $(delimeterDiv).text(localization.translate(\"Or\", \"PluginsJs\").value);\r\n $(delimeterDiv).addClass(this.delimeterClass);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeItem(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n makeRegExItemCondition() {\r\n var mainDiv = $(\"
\");\r\n mainDiv.addClass(\"reg-ex-word-condition\");\r\n\r\n const inputsContainerEl = $(\"
\");\r\n inputsContainerEl.addClass(\"regexsearch-word-input-list-div\");\r\n this.inputsContainerDiv = inputsContainerEl[0] as Node as HTMLDivElement;\r\n mainDiv.append(inputsContainerEl);\r\n\r\n var commandsDiv = $(\"
\");\r\n commandsDiv.addClass(\"regexsearch-conditions-commands\");\r\n mainDiv.append(commandsDiv);\r\n\r\n var addConditionButton = $(\"\");\r\n addConditionButton.prop(\"type\", \"button\");\r\n addConditionButton.text(\"+\");\r\n addConditionButton.addClass(\"btn btn-default regexsearch-button regexsearch-add-input-button\");\r\n addConditionButton.click(() => {\r\n this.addInput();\r\n });\r\n commandsDiv.append(addConditionButton[0] as Node as HTMLElement);\r\n mainDiv.append(this.createTextDelimeter());\r\n this.resetInputs();\r\n this.html = mainDiv[0] as Node as HTMLDivElement;\r\n }\r\n\r\n resetInputs() {\r\n this.hiddenWordInputSelects = new Array();\r\n $(this.inputsContainerDiv).empty();\r\n this.inputsArray = new Array();\r\n this.addInput();\r\n $(this.inputsContainerDiv).find(\"select\").trigger(\"change\");\r\n }\r\n\r\n addInput() {\r\n const newInput = new RegExWordInput(this);\r\n newInput.makeRegExInput();\r\n for (let i = 0; i < this.hiddenWordInputSelects.length; i++) {\r\n newInput.hideSelectCondition(this.hiddenWordInputSelects[i]);\r\n }\r\n if (!(newInput.getConditionType() === WordInputTypeEnum.Contains)) {\r\n this.hiddenWordInputSelects.push(newInput.getConditionType());\r\n }\r\n if (!(newInput.getConditionType() === WordInputTypeEnum.ExactMatch)) {\r\n this.hiddenWordInputSelects.push(WordInputTypeEnum.ExactMatch);\r\n }\r\n this.inputsArray.push(newInput);\r\n this.inputsContainerDiv.appendChild(newInput.getHtml());\r\n }\r\n\r\n removeInput(input: RegExWordInput) {\r\n this.wordInpuConditionRemoved(input.getConditionType());\r\n const index = this.inputsArray.indexOf(input, 0);\r\n if (index >= 0) {\r\n var arrayItem = this.inputsArray[index];\r\n this.inputsContainerDiv.removeChild(arrayItem.getHtml());\r\n this.inputsArray.splice(index, 1);\r\n }\r\n\r\n if (this.inputsArray.length === 0) {\r\n this.resetInputs();\r\n }\r\n }\r\n\r\n getConditionItemValue(): WordCriteriaDescription {\r\n var wordCriteriaDescription = new WordCriteriaDescription();\r\n for (let i = 0; i < this.inputsArray.length; i++) {\r\n const wordInput = this.inputsArray[i];\r\n const inputValue = wordInput.getConditionValue();\r\n switch (wordInput.getConditionType()) {\r\n case WordInputTypeEnum.StartsWith:\r\n wordCriteriaDescription.startsWith = inputValue;\r\n break;\r\n case WordInputTypeEnum.Contains:\r\n wordCriteriaDescription.contains.push(inputValue);\r\n break;\r\n case WordInputTypeEnum.EndsWith:\r\n wordCriteriaDescription.endsWith = inputValue;\r\n break;\r\n case WordInputTypeEnum.ExactMatch:\r\n wordCriteriaDescription.exactMatch = inputValue;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return wordCriteriaDescription;\r\n }\r\n\r\n\r\n wordInputConditionChanged(wordInput: RegExWordInput, oldWordInputType: WordInputTypeEnum) {\r\n var newWordInputType = wordInput.getConditionType();\r\n\r\n if (oldWordInputType) {\r\n this.wordInpuConditionRemoved(oldWordInputType);\r\n }\r\n\r\n if (!(newWordInputType === WordInputTypeEnum.Contains)) {\r\n for (let i = 0; i < this.inputsArray.length; i++) {\r\n if (this.inputsArray[i] === wordInput) continue;\r\n this.inputsArray[i].hideSelectCondition(newWordInputType);\r\n }\r\n\r\n this.hiddenWordInputSelects.push(newWordInputType);\r\n }\r\n }\r\n\r\n wordInpuConditionRemoved(wordInputType: WordInputTypeEnum) {\r\n\r\n if (!(wordInputType === WordInputTypeEnum.Contains)) {\r\n for (let i = 0; i < this.inputsArray.length; i++) {\r\n this.inputsArray[i].showSelectCondition(wordInputType);\r\n }\r\n }\r\n\r\n const index = this.hiddenWordInputSelects.indexOf(wordInputType, 0);\r\n if (index >= 0) {\r\n this.hiddenWordInputSelects.splice(index, 1);\r\n }\r\n }\r\n}\r\n\r\n\r\nclass RegExWordInput {\r\n private html: HTMLDivElement;\r\n private editorDiv: HTMLDivElement;\r\n private conditionInput: HTMLInputElement;\r\n private conditionInputType: WordInputTypeEnum;\r\n private readonly parentRegExWordCondition: RegExWordCondition;\r\n private regexButtonsDiv: HTMLDivElement;\r\n private conditionSelectbox: HTMLSelectElement;\r\n\r\n constructor(parent: RegExWordCondition) {\r\n this.parentRegExWordCondition = parent;\r\n }\r\n\r\n public importData(data: string, wordInputType: WordInputTypeEnum) {\r\n $(this.conditionSelectbox).val(wordInputType.toString());\r\n $(this.conditionSelectbox).change();\r\n\r\n $(this.conditionInput).val(data);\r\n $(this.conditionInput).text(data);\r\n $(this.conditionInput).change();\r\n }\r\n\r\n getHtml(): HTMLDivElement {\r\n return this.html;\r\n }\r\n\r\n hasDelimeter(): boolean {\r\n const delimeter = $(this.html).find(\".regexsearch-input-and-delimiter\");\r\n return (delimeter ? true : false);\r\n }\r\n\r\n makeRegExInput() {\r\n var mainDiv = document.createElement(\"div\");\r\n mainDiv.classList.add(\"reg-ex-word-input\");\r\n\r\n var lineDiv = document.createElement(\"div\");\r\n lineDiv.classList.add(\"regex-word-input-textbox\");\r\n\r\n var editorDiv = document.createElement(\"div\");\r\n this.editorDiv = editorDiv;\r\n\r\n var conditionTitleDiv = document.createElement(\"div\");\r\n $(conditionTitleDiv).text(localization.translate(\"Constraint\", \"PluginsJs\").value);\r\n editorDiv.appendChild(conditionTitleDiv);\r\n \r\n var conditionTypeDivEl = $(document.createElement(\"div\"));\r\n conditionTypeDivEl.addClass(\"regexsearch-condition-type-div\");\r\n editorDiv.appendChild(conditionTypeDivEl[0]);\r\n\r\n var conditionSelectEl = $(document.createElement(\"select\"));\r\n conditionSelectEl.addClass(\"regexsearch-condition-select\");\r\n conditionTypeDivEl.append(conditionSelectEl);\r\n\r\n conditionSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"StartsWith\", \"PluginsJs\").value, WordInputTypeEnum.StartsWith.toString()));\r\n conditionSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"Contains\", \"PluginsJs\").value, WordInputTypeEnum.Contains.toString()));\r\n conditionSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"EndsWith\", \"PluginsJs\").value, WordInputTypeEnum.EndsWith.toString()));\r\n conditionSelectEl.append(HtmlItemsFactory.createOption(localization.translate(\"ExactMatch\", \"PluginsJs\").value, WordInputTypeEnum.ExactMatch.toString()));\r\n\r\n conditionSelectEl.change((eventData) => {\r\n var oldConditonType = this.conditionInputType;\r\n const selectEl = $(eventData.target as Node as HTMLElement);\r\n this.conditionInputType = parseInt(selectEl.val() as string);\r\n if (this.conditionInputType === WordInputTypeEnum.ExactMatch) {\r\n const regexWordConditionEl = selectEl.parents(\".reg-ex-word-condition\");\r\n const wordInputEl = selectEl.parents(\".reg-ex-word-input\");\r\n const otherWordInputs = wordInputEl.siblings(\".reg-ex-word-input\");\r\n if (otherWordInputs) {\r\n otherWordInputs.find(\".regexsearch-condition-input\").prop(\"disabled\", true);\r\n otherWordInputs.find(\".regexsearch-condition-input-button\").prop(\"disabled\", true);\r\n }\r\n const regexAddInputButton = regexWordConditionEl.find(\".regexsearch-add-input-button\");\r\n regexAddInputButton.prop(\"disabled\", true);\r\n } else {\r\n const regexWordConditionEl = selectEl.parents(\".reg-ex-word-condition\");\r\n const wordInputEl = selectEl.parents(\".reg-ex-word-input\");\r\n const otherWordInputs = wordInputEl.siblings(\".reg-ex-word-input\");\r\n if (otherWordInputs) {\r\n otherWordInputs.find(\".regexsearch-condition-input\").prop(\"disabled\", false);\r\n otherWordInputs.find(\".regexsearch-condition-input-button\").prop(\"disabled\", false);\r\n }\r\n const regexAddInputButton = regexWordConditionEl.find(\".regexsearch-add-input-button\");\r\n regexAddInputButton.prop(\"disabled\", false);\r\n }\r\n this.parentRegExWordCondition.wordInputConditionChanged(this, oldConditonType);\r\n });\r\n\r\n this.conditionSelectbox = conditionSelectEl[0] as Node as HTMLSelectElement;\r\n\r\n this.conditionInput = document.createElement(\"input\");\r\n this.conditionInput.type = \"text\";\r\n this.conditionInput.classList.add(\"form-control\");\r\n this.conditionInput.classList.add(\"regexsearch-condition-input\");\r\n this.conditionInput.classList.add(\"keyboard-input\");\r\n this.conditionInput.setAttribute(\"data-keyboard-id\", \"0\");\r\n \r\n lineDiv.appendChild(this.conditionInput);\r\n \r\n var keyboardButton = $(document.createElement(\"button\"));\r\n keyboardButton.attr(\"type\", \"button\");\r\n keyboardButton.addClass(\"btn\");\r\n keyboardButton.addClass(\"regexsearch-condition-input-button\");\r\n var keyboardIcon = $(document.createElement(\"div\"));\r\n keyboardIcon.addClass(\"custom-glyphicon-keyboard\");\r\n keyboardIcon.css(\"height\", \"100%\");\r\n keyboardButton.append(keyboardIcon);\r\n lineDiv.appendChild(keyboardButton[0]);\r\n\r\n var keyboardComponent = KeyboardManager.getKeyboard(\"0\");\r\n keyboardComponent.registerButton(keyboardButton[0] as Node as HTMLButtonElement, this.conditionInput, null);\r\n\r\n var regExButton = $(\"\");\r\n regExButton.text(\"R\");\r\n regExButton.attr(\"type\", \"button\");\r\n regExButton.addClass(\"btn regexsearch-condition-input-button\");\r\n regExButton.click(() => {\r\n if ($(this.regexButtonsDiv).is(\":hidden\")) {\r\n $(this.regexButtonsDiv).slideDown(\"fast\");\r\n } else {\r\n $(this.regexButtonsDiv).slideUp(\"fast\");\r\n }\r\n });\r\n lineDiv.appendChild(regExButton[0]);\r\n\r\n var removeButton = HtmlItemsFactory.createButton(\"\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon\");\r\n $(removeGlyph).addClass(\"glyphicon-trash\");\r\n removeButton.appendChild(removeGlyph);\r\n $(removeButton).css(\"margin-left\", \"3px\");\r\n $(removeButton).click((event) => {\r\n const eventTargetEl = $(event.target as Node as Element);\r\n const conditionList = eventTargetEl.parents(\".reg-ex-word-condition\");\r\n\r\n this.parentRegExWordCondition.removeInput(this);\r\n\r\n const regexWordInputEls = conditionList.find(\".reg-ex-word-input\");\r\n var numberOfExactMatchSeachTypes = 0;\r\n regexWordInputEls.each((index, element) => {\r\n const wordInputEl = $(element as Node as Element);\r\n const selectEl = wordInputEl.find(\"select\");\r\n const searchType: WordInputTypeEnum = parseInt(selectEl.val() as string);\r\n if (searchType === WordInputTypeEnum.ExactMatch) {\r\n numberOfExactMatchSeachTypes++;\r\n }\r\n });\r\n if (numberOfExactMatchSeachTypes === 0) {\r\n const plusButtonEl = conditionList.find(\".regexsearch-add-input-button\");\r\n plusButtonEl.prop(\"disabled\", false);\r\n regexWordInputEls.find(\".regexsearch-condition-input\").prop(\"disabled\", false);\r\n regexWordInputEls.find(\".regexsearch-condition-input-button\").prop(\"disabled\", false);\r\n }\r\n });\r\n\r\n lineDiv.appendChild(removeButton);\r\n mainDiv.appendChild(this.editorDiv);\r\n mainDiv.appendChild(lineDiv);\r\n\r\n\r\n var regexButtonsDiv = document.createElement(\"div\");\r\n $(regexButtonsDiv).addClass(\"regexsearch-regex-buttons-div\");\r\n\r\n var anythingButton = HtmlItemsFactory.createButton(localization.translate(\"Anything\", \"PluginsJs\").value);\r\n regexButtonsDiv.appendChild(anythingButton);\r\n $(anythingButton).addClass(\"regexsearch-editor-button\");\r\n $(anythingButton).click(() => {\r\n this.conditionInput.value += \"%\";\r\n });\r\n\r\n var oneCharButton = HtmlItemsFactory.createButton(localization.translate(\"OneCharacter\", \"PluginsJs\").value);\r\n regexButtonsDiv.appendChild(oneCharButton);\r\n $(oneCharButton).addClass(\"regexsearch-editor-button\");\r\n $(oneCharButton).click(() => {\r\n this.conditionInput.value += \"_\";\r\n });\r\n\r\n this.regexButtonsDiv = regexButtonsDiv;\r\n $(this.regexButtonsDiv).hide();\r\n mainDiv.appendChild(regexButtonsDiv);\r\n\r\n this.html = mainDiv;\r\n\r\n $(this.conditionSelectbox).val(WordInputTypeEnum.Contains.toString());\r\n $(this.conditionSelectbox).change();\r\n }\r\n\r\n getConditionValue(): string {\r\n return this.conditionInput.value;\r\n }\r\n\r\n getConditionType(): WordInputTypeEnum {\r\n return this.conditionInputType;\r\n }\r\n\r\n showSelectCondition(wordInputType: WordInputTypeEnum) {\r\n $(this.conditionSelectbox).find(`option[value=${wordInputType.toString()}]`).show();\r\n }\r\n\r\n hideSelectCondition(wordInputType: WordInputTypeEnum) {\r\n $(this.conditionSelectbox).find(`option[value=${wordInputType.toString()}]`).hide();\r\n }\r\n\r\n\r\n}\r\n\r\nclass RegExTokenDistanceConditionList implements IRegExConditionListBase {\r\n parentRegExConditionListItem: RegExConditionListItem;\r\n private tokenDistanceListContainerDiv: HTMLDivElement;\r\n private conditionInputArray: Array;\r\n\r\n constructor(parent: RegExConditionListItem) {\r\n this.parentRegExConditionListItem = parent;\r\n }\r\n \r\n importData(conditionsArray: TokenDistanceCriteriaListDescription) {\r\n this.resetItems();\r\n if (!conditionsArray.conditions.length) return;\r\n this.getLastItem().importData(conditionsArray.conditions[0]);\r\n for (var i = 1; i < conditionsArray.conditions.length; i++) {\r\n this.addItem();\r\n this.getLastItem().importData(conditionsArray.conditions[i]);\r\n }\r\n }\r\n\r\n getLastItem(): IRegExConditionItemBase {\r\n if (!this.conditionInputArray.length) return null;\r\n return this.conditionInputArray[this.conditionInputArray.length - 1];\r\n }\r\n\r\n public makeRegExCondition(conditionContainerDiv: HTMLDivElement) {\r\n this.tokenDistanceListContainerDiv = document.createElement(\"div\");\r\n $(this.tokenDistanceListContainerDiv).addClass(\"regexsearch-condition-list-div\");\r\n conditionContainerDiv.appendChild(this.tokenDistanceListContainerDiv);\r\n\r\n this.resetItems();\r\n }\r\n\r\n getConditionValue(): TokenDistanceCriteriaListDescription {\r\n var criteriaDescriptions = new TokenDistanceCriteriaListDescription();\r\n for (var i = 0; i < this.conditionInputArray.length; i++) {\r\n var regExTokenDistanceCondition = this.conditionInputArray[i];\r\n criteriaDescriptions.conditions.push(regExTokenDistanceCondition.getConditionItemValue());\r\n }\r\n return criteriaDescriptions;\r\n }\r\n\r\n getConditionType(): ConditionTypeEnum {\r\n return ConditionTypeEnum.TokenDistanceList;\r\n }\r\n\r\n resetItems() {\r\n $(this.tokenDistanceListContainerDiv).empty();\r\n this.conditionInputArray = [];\r\n const newTokenDistanceCondition = new RegExTokenDistanceCondition(this);\r\n newTokenDistanceCondition.makeRegExItemCondition();\r\n newTokenDistanceCondition.setClickableDelimeter();\r\n this.conditionInputArray.push(newTokenDistanceCondition);\r\n this.tokenDistanceListContainerDiv.appendChild(newTokenDistanceCondition.getHtml());\r\n }\r\n\r\n addItem() {\r\n this.conditionInputArray[this.conditionInputArray.length - 1].setTextDelimeter();\r\n var newTokenDistanceCondition = new RegExTokenDistanceCondition(this);\r\n newTokenDistanceCondition.makeRegExItemCondition();\r\n newTokenDistanceCondition.setClickableDelimeter();\r\n this.conditionInputArray.push(newTokenDistanceCondition);\r\n this.tokenDistanceListContainerDiv.appendChild(newTokenDistanceCondition.getHtml());\r\n }\r\n\r\n removeItem(condition: RegExTokenDistanceCondition) {\r\n\r\n const index = this.conditionInputArray.indexOf(condition, 0);\r\n if (!index) {\r\n var arrayItem = this.conditionInputArray[index];\r\n $(arrayItem.getHtml()).fadeToggle(\"slow\", \"linear\",() => {\r\n this.tokenDistanceListContainerDiv.removeChild(arrayItem.getHtml());\r\n });\r\n this.conditionInputArray.splice(index, 1);\r\n }\r\n\r\n if (this.conditionInputArray.length === 1) {\r\n this.conditionInputArray[0].setClickableDelimeter();\r\n }\r\n\r\n if (this.conditionInputArray.length === 0) {\r\n this.resetItems();\r\n }\r\n }\r\n}\r\n\r\nclass RegExTokenDistanceCondition implements IRegExConditionItemBase {\r\n parent: IRegExConditionListBase;\r\n\r\n private minTokenDistanceValue: number = 1;\r\n private maxTokenDistanceValue: number = 100;\r\n private initTokenDistanceValue: number = 1;\r\n\r\n private actualTokenDistanceValue: number;\r\n\r\n private html: HTMLDivElement;\r\n private tokenDistanceInput: HTMLInputElement;\r\n\r\n private firstToken: RegExWordCondition;\r\n private secondToken: RegExWordCondition;\r\n private tokenDistance: number;\r\n\r\n private delimeterClass: string = \"regexsearch-token-distance-or-delimiter\";\r\n\r\n constructor(parent: RegExTokenDistanceConditionList) {\r\n this.parent = parent;\r\n }\r\n\r\n importData(conditionData: TokenDistanceCriteriaDescription) {\r\n this.firstToken.importData(conditionData.first);\r\n this.secondToken.importData(conditionData.second);\r\n $(this.tokenDistanceInput).val(conditionData.distance.toString());\r\n $(this.tokenDistanceInput).keyup();\r\n $(this.tokenDistanceInput).change();\r\n }\r\n\r\n getHtml(): HTMLDivElement {\r\n return this.html;\r\n }\r\n\r\n removeDelimeter() {\r\n $(this.html).find(`.${this.delimeterClass}`).empty();\r\n }\r\n\r\n hasDelimeter(): boolean {\r\n const isEmpty = $(this.html).find(`.${this.delimeterClass}`).is(\":empty\");\r\n return !isEmpty;\r\n }\r\n\r\n setTextDelimeter() {\r\n const textDelimeter = this.createTextDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(`.${this.delimeterClass}`).append(textDelimeter);\r\n }\r\n\r\n setClickableDelimeter() {\r\n var clickableDelimeter = this.createClickableDelimeter();\r\n if (this.hasDelimeter()) {\r\n this.removeDelimeter();\r\n }\r\n $(this.html).find(`.${this.delimeterClass}`).append(clickableDelimeter);\r\n }\r\n\r\n private createClickableDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n var addWordSpan = document.createElement(\"span\");\r\n $(addWordSpan).addClass(\"regex-clickable-text\");\r\n $(addWordSpan).text(localization.translate(\"+Or\", \"PluginsJs\").value);\r\n $(addWordSpan).click(() => {\r\n this.parent.addItem();\r\n });\r\n\r\n delimeterDiv.appendChild(addWordSpan);\r\n $(delimeterDiv).addClass(this.delimeterClass);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeItem(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n private createTextDelimeter(): HTMLDivElement {\r\n var delimeterDiv = document.createElement(\"div\");\r\n $(delimeterDiv).text(localization.translate(\"Or\", \"PluginsJs\").value);\r\n $(delimeterDiv).addClass(this.delimeterClass);\r\n\r\n var trashButton = document.createElement(\"button\");\r\n $(trashButton).addClass(\"regexsearch-delimiter-remove-button\");\r\n var removeGlyph = document.createElement(\"span\");\r\n $(removeGlyph).addClass(\"glyphicon glyphicon-trash regex-clickable-text\");\r\n trashButton.appendChild(removeGlyph);\r\n $(trashButton).click(() => {\r\n this.parent.removeItem(this);\r\n });\r\n\r\n delimeterDiv.appendChild(trashButton);\r\n\r\n return delimeterDiv;\r\n }\r\n\r\n makeRegExItemCondition() {\r\n var mainDiv = document.createElement(\"div\");\r\n $(mainDiv).addClass(\"regexsearch-token-distance-condition\");\r\n\r\n this.firstToken = new RegExWordCondition();\r\n this.firstToken.makeRegExItemCondition();\r\n this.firstToken.removeDelimeter();\r\n\r\n this.secondToken = new RegExWordCondition();\r\n this.secondToken.makeRegExItemCondition();\r\n this.secondToken.removeDelimeter();\r\n \r\n mainDiv.appendChild(this.firstToken.getHtml());\r\n\r\n var inputTextDiv = document.createElement(\"div\");\r\n $(inputTextDiv).addClass(\"regexsearch-token-distance-condition-input-div\");\r\n\r\n var inputTextSpan = document.createElement(\"span\");\r\n $(inputTextSpan).addClass(\"regexsearch-token-distance-condition-input-text\");\r\n $(inputTextSpan).text(localization.translate(\"Distance:\", \"PluginsJs\").value);\r\n inputTextDiv.appendChild(inputTextSpan);\r\n\r\n var tokenDistanceInput = document.createElement(\"input\");\r\n tokenDistanceInput.type = \"number\";\r\n tokenDistanceInput.min = this.minTokenDistanceValue.toString();\r\n tokenDistanceInput.max = this.maxTokenDistanceValue.toString();\r\n tokenDistanceInput.value = this.initTokenDistanceValue.toString();\r\n this.actualTokenDistanceValue = this.initTokenDistanceValue;\r\n $(tokenDistanceInput).addClass(\"form-control\");\r\n $(tokenDistanceInput).addClass(\"regexsearch-condition-input\");\r\n inputTextDiv.appendChild(tokenDistanceInput);\r\n\r\n $(tokenDistanceInput).keyup((e) => {\r\n const targetEl = $(e.target as Node as Element);\r\n var value = targetEl.val() as string;\r\n value.replace(/[^0-9]/g, '');\r\n targetEl.val(value);\r\n targetEl.text(value);\r\n\r\n this.actualTokenDistanceValue = parseInt(value);\r\n });\r\n\r\n $(tokenDistanceInput).change((e) => {\r\n var value = $(e.target as Node as Element).val() as string;\r\n this.actualTokenDistanceValue = parseInt(value);\r\n });\r\n\r\n this.tokenDistanceInput = tokenDistanceInput;\r\n\r\n mainDiv.appendChild(inputTextDiv);\r\n\r\n mainDiv.appendChild(this.secondToken.getHtml());\r\n mainDiv.appendChild(this.createTextDelimeter());\r\n\r\n this.html = mainDiv;\r\n }\r\n\r\n getConditionItemValue(): TokenDistanceCriteriaDescription {\r\n var tokenDistanceCriteriaDescription = new TokenDistanceCriteriaDescription();\r\n tokenDistanceCriteriaDescription.first = this.firstToken.getConditionItemValue();\r\n tokenDistanceCriteriaDescription.second = this.secondToken.getConditionItemValue();\r\n tokenDistanceCriteriaDescription.distance = this.actualTokenDistanceValue;\r\n return tokenDistanceCriteriaDescription;\r\n }\r\n}\r\n\r\n\r\n// Classes for storing data\r\n\r\n\r\nclass ConditionResult {\r\n searchType: SearchTypeEnum; //enum Author, Text, Editor etc.\r\n conditionType: ConditionTypeEnum; //type of derived class ie WordList = WordList\r\n conditions: Array;\r\n}\r\n\r\nclass ConditionItemResult {\r\n \r\n}\r\n\r\nclass DatingCriteriaListDescription extends ConditionResult {\r\n constructor() {\r\n super();\r\n this.conditions = new Array();\r\n }\r\n}\r\n\r\nclass DatingCriteriaDescription extends ConditionItemResult{\r\n notBefore: number;\r\n notAfter: number;\r\n datingPrecision: DatingPrecisionEnum;\r\n datingRangeEnum: DatingRangeEnum;\r\n}\r\n\r\nclass WordsCriteriaListDescription extends ConditionResult {\r\n constructor() {\r\n super();\r\n this.conditions = new Array();\r\n }\r\n}\r\n\r\nclass WordCriteriaDescription extends ConditionItemResult{\r\n startsWith: string;\r\n contains: Array;\r\n endsWith: string;\r\n exactMatch: string;\r\n\r\n constructor() {\r\n super();\r\n this.contains = new Array();\r\n }\r\n}\r\n\r\nclass TokenDistanceCriteriaListDescription extends ConditionResult {\r\n conditions: Array;\r\n\r\n constructor() {\r\n super();\r\n this.conditions = new Array();\r\n }\r\n}\r\n\r\nclass TokenDistanceCriteriaDescription extends ConditionItemResult{\r\n distance: number;\r\n first: WordCriteriaDescription;\r\n second: WordCriteriaDescription;\r\n}\r\n\r\nenum WordInputTypeEnum {\r\n StartsWith = 0,\r\n Contains = 1,\r\n EndsWith = 2,\r\n ExactMatch = 3\r\n}\r\n\r\n/*\r\n * CriteriaKey C# Enum values must match with searchType number values\r\n [EnumMember] Author = 0,\r\n [EnumMember] Title = 1,\r\n [EnumMember] Editor = 2,\r\n [EnumMember] Dating = 3,\r\n [EnumMember] Fulltext = 4,\r\n [EnumMember] Heading = 5,\r\n [EnumMember] Sentence = 6,\r\n [EnumMember] Result = 7,\r\n [EnumMember] ResultRestriction = 8,\r\n [EnumMember] TokenDistance = 9,\r\n *\r\n */\r\nenum SearchTypeEnum {\r\n Author = 0,\r\n Title = 1,\r\n Editor = 2,\r\n Dating = 3, // XXX: OriginDate\r\n Fulltext = 4,\r\n Heading = 5,\r\n Sentence = 6,\r\n Result = 7,\r\n ResultRestriction = 8,\r\n TokenDistance = 9,\r\n Headword = 10, // \"heslo\"\r\n HeadwordDescription = 11, // (all but the headword[s]?)\r\n HeadwordDescriptionTokenDistance = 12,\r\n SelectedCategory = 13,\r\n Term = 14,\r\n // 15, 16 ... occupied by internal stuff\r\n PartOfSpeech = 17, // \"slovní druh\" (etc.)\r\n Phrase = 18, // \"ustálené spojení\" (Collocation, MWE?)\r\n Explanation = 19, // \"(popis/výklad) význam(u)\"\r\n Inflection = 20, // \"morfologie\"\r\n Motivation = 21, // \"motivace\"\r\n Valency = 22, // \"valence\"\r\n Link = 23, // \"odkaz\"\r\n Source = 24, // \"pramen\"\r\n SectionAuthor = 25, // \"autor hesla\"\r\n Evidence = 26, // \"doklad\"\r\n}\r\n\r\n/*\r\n * ConditionTypeEnum must match with ConditionTypeEnum number values in C#\r\n WordList = 0,\r\n DatingList = 1,\r\n TokenDistanceList = 2,\r\n *\r\n */\r\nenum ConditionTypeEnum {\r\n WordList = 0,\r\n DatingList = 1,\r\n TokenDistanceList = 2\r\n}\r\n\r\nenum DatingPrecisionEnum {\r\n Year = 0,\r\n Period = 1\r\n}\r\n\r\nenum DatingRangeEnum {\r\n OlderThen = 0,\r\n YoungerThen = 1,\r\n Between = 2,\r\n Around = 3\r\n}","class SearchBox {\n private inputField: string;\n private urlWithController: string;\n private options: Twitter.Typeahead.Options;\n private datasets: Array>;\n private bloodhounds: Array>;\n\n constructor(inputFieldElement: string, controllerPath: string) {\n this.inputField = inputFieldElement;\n this.urlWithController = getBaseUrl() + controllerPath;\n this.datasets = [];\n this.bloodhounds = [];\n\n this.options = {\n hint: true,\n highlight: true,\n minLength: 1\n };\n }\n\n value(value: any):void {\n $(this.inputField).typeahead('val', value);\n }\n\n create(): void {\n $(this.inputField).typeahead(this.options, this.datasets);\n }\n\n destroy(): void {\n $(this.inputField).typeahead(\"destroy\");\n }\n\n clearAndDestroy(): void {\n for (var i = 0; i < this.bloodhounds.length; i++) {\n var bloodhound = this.bloodhounds[i];\n bloodhound.clear();\n bloodhound.clearPrefetchCache();\n bloodhound.clearRemoteCache();\n }\n this.datasets = [];\n this.bloodhounds = [];\n this.destroy();\n }\n\n addDataSet(name: string, groupHeader: string, parameterUrlString: string = null): void {\n var prefetchUrl: string = this.urlWithController + \"/GetTypeahead\" + name;\n var remoteUrl: string = this.urlWithController + \"/GetTypeahead\" + name + \"?query=%QUERY\";\n\n if (parameterUrlString != null) {\n prefetchUrl += \"?\" + parameterUrlString;\n remoteUrl += \"&\" + parameterUrlString;\n }\n\n var remoteOptions: Bloodhound.RemoteOptions = {\n url: remoteUrl,\n wildcard: \"%QUERY\"\n };\n\n var bloodhound: Bloodhound = new Bloodhound({\n datumTokenizer: Bloodhound.tokenizers.whitespace,\n queryTokenizer: Bloodhound.tokenizers.whitespace,\n prefetch: prefetchUrl,\n remote: remoteOptions\n });\n\n\n var dataset: Twitter.Typeahead.Dataset = {\n name: name, \n source: bloodhound,\n templates: {\n header: \"
\" + groupHeader + \"
\"\n },\n limit: 5\n };\n\n this.bloodhounds.push(bloodhound);\n this.datasets.push(dataset);\n }\n }","///\n\nclass TypeaheadSearchBoxBase {\n private displayPath: (item: T) => string;\n private suggestionTemplate: (item: T) => string;\n private inputField: string;\n private urlWithController: string;\n private options: Twitter.Typeahead.Options;\n protected datasets: Array>;\n protected bloodhounds: Array>;\n private currentItem: T;\n\n constructor(inputFieldElement: string, controllerName: string, displayPath: (item: T) => string, suggestionTemplate: (item: T) => string = null, menuEl?: JQuery) {\n this.inputField = inputFieldElement;\n this.suggestionTemplate = suggestionTemplate;\n this.displayPath = displayPath;\n this.urlWithController = getBaseUrl() + controllerName;\n\n this.options = {\n hint: true,\n highlight: false,\n minLength: 1,\n menu: menuEl\n };\n }\n\n setValue(value: any): void {\n $(this.inputField).typeahead('val', value);\n }\n\n getValue(): T {\n return this.currentItem;\n }\n\n getInputValue(): string {\n return $(this.inputField).typeahead(\"val\");\n }\n\n create(selectionChangedCallback: (selectedExists: boolean, selectConfirmed: boolean) => void): void {\n var self = this;\n $(this.inputField).typeahead(this.options, this.datasets);\n $(this.inputField).bind(\"typeahead:render\", function (e, ...datums: T[]) {\n if (datums.length > 0) {\n var currentText = self.getInputValue();\n for (var i = 0; i < datums.length; i++) {\n var text = self.displayPath(datums[i]);\n if (text === currentText) {\n self.currentItem = datums[i];\n selectionChangedCallback(true, false);\n return;\n }\n }\n }\n\n self.currentItem = null;\n selectionChangedCallback(false, false);\n });\n $(this.inputField).bind(\"typeahead:select\", function (e, datum) {\n self.currentItem = datum;\n selectionChangedCallback(true, true);\n });\n $(this.inputField).bind(\"typeahead:autocomplete\", function (e, datum) {\n self.currentItem = datum;\n selectionChangedCallback(true, false);\n });\n //$(this.inputField).change(function () {\n // if (!$(this).val()) {\n // self.currentItem = null;\n // selectionChangedCallback(false, false);\n // }\n //});\n }\n\n destroy(): void {\n $(this.inputField).typeahead(\"destroy\");\n $(this.inputField).unbind(\"typeahead:render\");\n $(this.inputField).unbind(\"typeahead:select\");\n $(this.inputField).unbind(\"typeahead:autocomplete\");\n }\n\n reload() {\n this.clearCache();\n var value = this.getInputValue();\n this.setValue(\"\");\n this.setValue(value);\n }\n\n clearCache(): void {\n if (!this.bloodhounds)\n return;\n\n for (var i = 0; i < this.bloodhounds.length; i++) {\n var bloodhound = this.bloodhounds[i];\n bloodhound.clear();\n bloodhound.clearPrefetchCache();\n bloodhound.clearRemoteCache();\n }\n }\n\n protected createDataSet(name: string, groupHeader: string, parameterUrlString: string): ITuple, Twitter.Typeahead.Dataset> {\n var remoteUrl: string = this.urlWithController + \"/GetTypeahead\" + name + \"?query=%QUERY\";\n\n if (parameterUrlString != null) {\n remoteUrl += \"&\" + parameterUrlString;\n }\n\n var remoteOptions: Bloodhound.RemoteOptions = {\n url: remoteUrl,\n wildcard: \"%QUERY\"\n };\n\n var bloodhound: Bloodhound = new Bloodhound({\n datumTokenizer: this.datumTokenizer,\n queryTokenizer: Bloodhound.tokenizers.whitespace,\n remote: remoteOptions\n });\n\n var dataset: Twitter.Typeahead.Dataset = {\n name: name,\n source: bloodhound,\n display: this.displayPath,\n limit: 10,\n templates: {}\n };\n if (this.suggestionTemplate) {\n dataset.templates.suggestion = this.suggestionTemplate;\n }\n if (groupHeader) {\n dataset.templates.header = `
${groupHeader}
`;\n }\n\n return {\n item1: bloodhound,\n item2: dataset\n };\n }\n\n private datumTokenizer(datum: T): string[] {\n var text = this.displayPath(datum);\n return Bloodhound.tokenizers.whitespace(text);\n }\n\n public static getDefaultSuggestionTemplate(name: string, description: string) {\n return `
${escapeHtmlChars(name)}
${escapeHtmlChars(description)}
`;\n }\n}\n\nclass SingleSetTypeaheadSearchBox extends TypeaheadSearchBoxBase {\n setDataSet(name: string, parameterUrlString: string = null): void {\n this.clearCache();\n this.destroy();\n\n var result = this.createDataSet(name, null, parameterUrlString);\n\n this.bloodhounds = [result.item1];\n this.datasets = [result.item2];\n }\n}\n\nclass MultiSetTypeaheadSearchBox extends TypeaheadSearchBoxBase {\n clearDataSets(): void {\n this.clearCache();\n this.destroy();\n this.bloodhounds = null;\n this.datasets = null;\n }\n\n addDataSet(name: string, groupHeader: string, parameterUrlString: string = null): void {\n var result = this.createDataSet(name, groupHeader, parameterUrlString);\n\n if (!this.bloodhounds) this.bloodhounds = [];\n if (!this.datasets) this.datasets = [];\n\n this.bloodhounds.push(result.item1);\n this.datasets.push(result.item2);\n }\n\n public static getDefaultSuggestionTemplateMulti(name: string, description: string) {\n return `
${TypeaheadSearchBoxBase.getDefaultSuggestionTemplate(name, description)}
`;\n }\n}"]}