@sysdoc/sharepoint-utils
Version:
Sysdoc's core Sharepoint utilities
140 lines (139 loc) • 5.99 kB
JavaScript
;
/*!
* 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;