UNPKG

@sysdoc/sharepoint-utils

Version:

Sysdoc's core Sharepoint utilities

140 lines (139 loc) 5.99 kB
"use strict"; /*! * Copyright Sysdoc @ 2019 */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SPSearchProvider = void 0; var all_1 = require("@pnp/sp-commonjs/presets/all"); var SortDirection_1 = require("../../search/SortDirection"); var SPSearchResultPageModel_1 = require("./SPSearchResultPageModel"); var SPSearchProvider = /** @class */ (function () { function SPSearchProvider(config) { this.sourceId = (config === null || config === void 0 ? void 0 : config.sourceId) || null; this.queryExtra = (config === null || config === void 0 ? void 0 : config.queryExtra) || null; this.disableScroll = (config === null || config === void 0 ? void 0 : config.disableScroll) || false; this.resultsTransformer = (config === null || config === void 0 ? void 0 : config.resultsTransformer) || null; } SPSearchProvider.prototype.getSuggestions = function (query, includePeople) { if (includePeople === void 0) { includePeople = true; } return all_1.sp.searchSuggest({ count: typeof query === "object" ? query.rowLimit || 10 : 10, querytext: typeof query === "string" ? query : query.text, includePeople: includePeople }) .then(function (e) { var people = e.PeopleNames.map(function (e) { return { label: e, value: e }; }); var queries = e.Queries.map(function (e, i) { return { label: "Not implemented ", value: "Not implemented " + i }; }); var personal = e.PersonalResults.map(function (e) { return { value: e.Url, label: e.Title }; }); var result = (includePeople) ? __spreadArrays(people) : []; return result.concat(queries, personal); }); }; SPSearchProvider.prototype.getResultCount = function (query) { var q = this.prepareQuery(query); return this.performSearch(q) .then(function (e) { return e.TotalRows; }); }; SPSearchProvider.prototype.search = function (query) { var _this = this; var q = this.prepareQuery(query); return this.performSearch(q).then(function (e) { return new SPSearchResultPageModel_1.SPSearchResultPageModel(e, q.RowLimit, _this.resultsTransformer, _this.disableScroll); }); }; SPSearchProvider.prototype.prepareQuery = function (query) { var q = { RowLimit: 10, TrimDuplicates: false }; if (typeof query === "string") { q.Querytext = query; } else if (typeof query === "object") { var extra = query.extra; q.RowLimit = query.rowLimit || 10; if (query.refiners) { q.RefinementFilters = query.refiners.filter(function (e) { return !e.isReset && e.getValueForQuery(); }).map(function (e) { if (e.ignoreKey) { return e.getValueForQuery(); } return e.key + ":" + e.getValueForQuery(); }); } if (query.basicRefiners && query.basicRefiners.length) { q.RefinementFilters = q.RefinementFilters || []; query.basicRefiners.filter(function (e) { return e.value; }).map(function (e) { q.RefinementFilters.push(e.key + ":" + e.value); }); } if (query.stringRefiners && query.stringRefiners.length) { q.RefinementFilters = q.RefinementFilters || []; query.stringRefiners.forEach(function (e) { q.RefinementFilters.push(e); }); } if (query.selectProperties) { q.SelectProperties = query.selectProperties; } if (query.sortList && query.sortList.length) { q.EnableSorting = true; q.SortList = query.sortList.map(function (e) { return { __metadata: { type: "Microsoft.SharePoint.Client.Search.Query.Sort" }, "Property": e.key, Direction: e.direction == SortDirection_1.SortDirection.Ascending ? all_1.SortDirection.Ascending : all_1.SortDirection.Descending }; }); } q.Querytext = query.text + (" " + (this.queryExtra || "")); if (extra) { q = __assign(__assign({}, q), extra); } } // If we have a sourceId, then use it if (this.sourceId && typeof this.sourceId == "string") { q.SourceId = this.sourceId; } return q; }; SPSearchProvider.prototype.performSearch = function (q) { return all_1.sp.search(q); }; return SPSearchProvider; }()); exports.SPSearchProvider = SPSearchProvider;