{"version":3,"sources":["../LuV.LUMAS.Services/scripts/spext/services/spSearchOptions.ts"],"names":["PriorityElement","key","prio","_this","this","toString","exports","SearchOptions","prototype","setWebUrl","url","webUrl","replace","getWebUrl","window","webAbsoluteUrl","setSelectPropertiesMapAsString","properties","propertiesAsObject","JSON","parse","setSelectPropertiesMap","selectPropertiesMap","_","isArray","setSelectProperty","templateKey","managedProperty","item","push","getSelectProperties","length","result_1","forEach","v1","isObject","v2","apply","isString","results","filter","elem","pos","indexOf","getSelectPropertiesMap","getSelectPropertiesManagedMap","map","v3","i","isEmpty","setRowLimit","value","rowLimit","getRowLimit","setStartRow","startRow","getStartRow","addRefinementFilter","refinementFilters","getRefinementFilters","addRefiner","property","refiners","getRefiners","index","join","setRefiners","setSort","desc","sortList","getSortList","result","Property","Direction","setRequestDigest","requestDigestValue","requestDigest","getRequestDigest","configProperties"],"mappings":"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","file":"spSearchOptions.js","sourcesContent":["import * as _ from 'lodash';\r\n\r\nclass Result {\r\n\tpublic results: Array;\r\n}\r\n\r\nexport class PriorityElement {\r\n\tpublic toString = () => { return this.key; };\r\n\tconstructor(public key: string, public prio: number) {\r\n\t}\r\n}\r\n\r\n/** These are the options for the SearchService. Details for SharePoint Properties can be found here https://msdn.microsoft.com/en-us/library/office/jj163876.aspx */\r\nexport class SearchOptions {\r\n\t//private queryTemplate: string = null;\t\t// doesn't work in sp 2013\r\n\tprivate webUrl: string = null;\r\n\tprivate selectPropertiesMap: Array = [];\r\n\tprivate rowLimit: Number = 9999;\r\n\tprivate startRow: Number = 0;\r\n\tprivate sortList = {};\r\n\tprivate refinementFilters = null;\r\n\tprivate refiners: Array = [];\r\n\tprivate configProperties = {};\r\n\tprivate requestDigest: string = null;\r\n\r\n\t// doesn't work in sp 2013\r\n\t/** SharePoint Property, see MSDN */\r\n\t// public setQueryTemplate(template: string) {\r\n\t// \tthis.queryTemplate = template;\r\n\t// }\r\n\r\n\t// doesn't work in sp 2013\r\n\t/** SharePoint Property, see MSDN */\r\n\t// public getQueryTemplate(): string {\r\n\t// \treturn this.queryTemplate;\r\n\t// }\r\n\r\n\t/** sets the target url, where to execute the search */\r\n\tpublic setWebUrl(url: string) {\r\n\t\tif (url) {\r\n\t\t\t//removing the last slashes (/)\r\n\t\t\tthis.webUrl = url.replace(/\\/+$/, '');\r\n\t\t}\r\n\t}\r\n\r\n\t/** returns the target url of the search, if not set manually, the url of the current context will be used */\r\n\tpublic getWebUrl(): string {\r\n\t\tif (this.webUrl === null) {\r\n\t\t\treturn window[\"_spPageContextInfo\"].webAbsoluteUrl;\r\n\t\t}\r\n\t\treturn this.webUrl;\r\n\t}\r\n\r\n\t/** sets the properties for the result items, parse the value as JSON and executes setSelectPropertiesMap */\r\n\tpublic setSelectPropertiesMapAsString(properties: string) {\r\n\t\tif (!properties) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst propertiesAsObject = JSON.parse(properties);\r\n\t\tthis.setSelectPropertiesMap(propertiesAsObject);\r\n\t}\r\n\r\n\t/** sets the properties for the result items as json\r\n\t\t\tstructure of properties:\r\n\t\t\t[{'templateKey1':['managedProperty1','managedProperty2'],'templateKey2':'managedProperty3'}]\r\n\t\t\tif multiple managedProperties are configured for one templateKey, the first with a value will be used\r\n\t\t\tthis functionality is similiar to the configuration of managedProperties and crawledProperties in the CA\r\n\t\t\t*/\r\n\tpublic setSelectPropertiesMap(properties: Array) {\r\n\t\tthis.selectPropertiesMap = _.isArray(properties) ? properties : [properties];\r\n\t}\r\n\r\n\t/** sets one property for the reslt item\r\n\t * managedProperty can be string or Array\r\n\t * arraies defines a set of managedProperties, from which the first with a value will be used\r\n\t */\r\n\tpublic setSelectProperty(templateKey: string, managedProperty: any) {\r\n\t\tif (templateKey && managedProperty) {\r\n\t\t\tconst item = {};\r\n\t\t\titem[templateKey] = managedProperty;\r\n\t\t\tthis.selectPropertiesMap.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\t/** internal function, which collects all managedProperties from the selectPropertiesMap */\r\n\tpublic getSelectProperties(): Result {\r\n\t\tif (this.selectPropertiesMap && this.selectPropertiesMap.length) {\r\n\t\t\tconst result = [];\r\n\t\t\tthis.selectPropertiesMap.forEach((v1) => {\r\n\t\t\t\tif (_.isObject(v1)) {\r\n\t\t\t\t\t_.forEach(v1, (v2) => {\r\n\t\t\t\t\t\tif (_.isArray(v2)) {\r\n\t\t\t\t\t\t\tresult.push.apply(result, v2);\r\n\t\t\t\t\t\t} else if (_.isString(v2)) {\r\n\t\t\t\t\t\t\tresult.push(v2);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (_.isString(v1)) {\r\n\t\t\t\t\tresult.push(v1);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t//remove duplicate managed Properties\r\n\t\t\treturn { 'results': result.filter((elem, pos) => { return result.indexOf(elem) == pos; }) };\r\n\t\t}\r\n\t}\r\n\r\n\t/** returns the selectPropertiesMap */\r\n\tpublic getSelectPropertiesMap() {\r\n\t\treturn this.selectPropertiesMap;\r\n\t}\r\n\r\n\t/** internal function, which returns an associative array with managed property as key and select property as value\r\n\t *\t[{ \"DisplayTitle\": [\"FileName\", \"Title\"] }] > { \"FileName\": {key:\"DisplayTitle\",prio:0}, \"Title\": {key:\"DisplayTitle\",prio:1}}\r\n\t*/\r\n\tpublic getSelectPropertiesManagedMap(): { [key: string]: PriorityElement } {\r\n\t\tlet map: { [key: string]: PriorityElement } = {};\r\n\t\t_.forEach(this.selectPropertiesMap, (v1) => {\r\n\t\t\tif (_.isObject(v1)) {\r\n\t\t\t\t_.forEach(v1, (v2, key) => {\r\n\t\t\t\t\tif (_.isString(v2)) {\r\n\t\t\t\t\t\tmap[v2 as string] = new PriorityElement(key, -1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (_.isArray(v2)) {\r\n\t\t\t\t\t\t_.forEach(v2 as Array, (v3, i) => {\r\n\t\t\t\t\t\t\tmap[v3 as string] = new PriorityElement(key, i);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if (_.isString(v1)) {\r\n\t\t\t\tif (!map[v1]) {\r\n\t\t\t\t\tmap[v1 as string] = new PriorityElement(v1, -1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (_.isEmpty(map)) {\r\n\t\t\tmap = null;\r\n\t\t}\r\n\t\treturn map;\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic setRowLimit(value: Number) {\r\n\t\tthis.rowLimit = value;\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic getRowLimit(): Number {\r\n\t\treturn this.rowLimit;\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic setStartRow(value: Number) {\r\n\t\tthis.startRow = value;\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic getStartRow(): Number {\r\n\t\treturn this.startRow;\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic addRefinementFilter(filter: string) {\r\n\t\tif (!this.refinementFilters) {\r\n\t\t\tthis.refinementFilters = [];\r\n\t\t}\r\n\t\tif (filter) {\r\n\t\t\tthis.refinementFilters.push(filter);\r\n\t\t}\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic getRefinementFilters(): Result {\r\n\t\tif (!this.refinementFilters)\r\n\t\t\treturn { 'results': [] };\r\n\r\n\t\treturn { 'results': this.refinementFilters };\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic addRefiner(property: string) {\r\n\t\tif (property) {\r\n\t\t\tthis.refiners.push(property);\r\n\t\t}\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic getRefiners(): string {\r\n\t\treturn this.refiners.filter((value, index) => { return value && this.refiners.indexOf(value) == index; }).join(`,`);\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic setRefiners(refiners: Array) {\r\n\t\tif (_.isArray(refiners)) {\r\n\t\t\tthis.refiners = refiners;\r\n\t\t}\r\n\t}\r\n\r\n\t/** SharePoint Property, see MSDN */\r\n\tpublic setSort(property: string, desc: boolean) {\r\n\t\tif (property) {\r\n\t\t\tthis.sortList[property] = !!desc;\r\n\t\t}\r\n\t}\r\n\r\n\t/** internal function, which returns the sort in a format for the search query */\r\n\tpublic getSortList(): Result {\r\n\t\tconst result = [];\r\n\t\t_.forEach(this.sortList, function (value, key) {\r\n\t\t\tresult.push({ 'Property': key, 'Direction': value ? '1' : '0' });\r\n\t\t});\r\n\t\treturn { 'results': result };\r\n\t};\r\n\r\n\tpublic setRequestDigest(requestDigestValue: string) {\r\n\t\tthis.requestDigest = requestDigestValue;\r\n\t}\r\n\r\n\tpublic getRequestDigest(): string {\r\n\t\treturn this.requestDigest;\r\n\t}\r\n}\r\n"]}