UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

180 lines (171 loc) • 7.83 kB
webpackJsonpCoveo__temporary([71],{ /***/ 254: /***/ (function(module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__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; }; Object.defineProperty(exports, "__esModule", { value: true }); var Component_1 = __webpack_require__(7); var ComponentOptions_1 = __webpack_require__(8); var SettingsEvents_1 = __webpack_require__(56); var AnalyticsActionListMeta_1 = __webpack_require__(10); var Initialization_1 = __webpack_require__(2); var Strings_1 = __webpack_require__(6); var _ = __webpack_require__(0); var GlobalExports_1 = __webpack_require__(3); __webpack_require__(614); var SVGIcons_1 = __webpack_require__(12); var SearchInterface_1 = __webpack_require__(19); var RegisteredNamedMethods_1 = __webpack_require__(30); var moment = __webpack_require__(103); var createAnchor = function () { return document.createElement('a'); }; function setCreateAnchor(fn) { createAnchor = fn; } exports.setCreateAnchor = setCreateAnchor; /** * The ExportToExcel component renders an item in the {@link Settings} menu to allow the end user to export the current * search results to the Microsoft Excel format (.xlsx). * * @availablesince [November 2015 Release (v1.0.139)](https://docs.coveo.com/en/289/#november-2015-release-v10139) */ var ExportToExcel = /** @class */ (function (_super) { __extends(ExportToExcel, _super); /** * Creates a new ExportToExcel component. * @param element The HTMLElement on which to instantiate the component. * @param options The options for the ExportToExcel component. * @param bindings The bindings that the component requires to function normally. If not set, these will be * automatically resolved (with a slower execution time). * @param _window The global Window object (used to download the Excel link). */ function ExportToExcel(element, options, bindings, _window) { var _this = _super.call(this, element, ExportToExcel.ID, bindings) || this; _this.element = element; _this.options = options; _this.bindings = bindings; _this._window = _window; _this._window = _this._window || window; _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, ExportToExcel, options); _this.bind.onRootElement(SettingsEvents_1.SettingsEvents.settingsPopulateMenu, function (args) { args.menuData.push({ text: Strings_1.l('ExportToExcel'), className: 'coveo-export-to-excel', tooltip: Strings_1.l('ExportToExcelDescription'), onOpen: function () { return _this.download(); }, svgIcon: SVGIcons_1.SVGIcons.icons.dropdownExport, svgIconClassName: 'coveo-export-to-excel-svg' }); }); return _this; } /** * Downloads the Excel representation of the current query. * * Also logs an `exportToExcel` event in the usage analytics. */ ExportToExcel.prototype.download = function () { var _this = this; var query = this.buildExcelQuery(); this.logger.debug("Performing query following 'Export to Excel' click"); var endpoint = this.queryController.getEndpoint(); this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.exportToExcel, {}, this.element); endpoint.fetchBinary(query).then(function (content) { return _this.downloadExcelFile(content); }); }; ExportToExcel.prototype.buildExcelQuery = function () { var query = this.queryController.getLastQuery(); query = _.omit(query, ['numberOfResults', 'fieldsToInclude']); if (this.options.fieldsToInclude) { query.fieldsToInclude = this.options.fieldsToInclude; } return __assign({}, query, { format: 'xlsx', numberOfResults: this.options.numberOfResults }); }; ExportToExcel.prototype.downloadExcelFile = function (content) { var blob = new Blob([content], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); var fileName = this.buildExcelFileName(); if (window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(blob, fileName); return; } var url = URL.createObjectURL(blob); var a = createAnchor(); a.href = url; a.download = fileName; a.click(); URL.revokeObjectURL(url); }; ExportToExcel.prototype.buildExcelFileName = function () { var utc = moment().utc(); var year = utc.format('YYYY'); var month = utc.format('MM'); var day = utc.format('DD'); var hour = utc.format('HH'); var minute = utc.format('mm'); var second = utc.format('ss'); return "query--" + year + "-" + month + "-" + day + "--" + hour + "-" + minute + "-" + second + ".xlsx"; }; ExportToExcel.create = function (element, options, root) { return new ExportToExcel(element, options, RegisteredNamedMethods_1.get(root, SearchInterface_1.SearchInterface).getBindings()); }; ExportToExcel.ID = 'ExportToExcel'; ExportToExcel.doExport = function () { GlobalExports_1.exportGlobally({ ExportToExcel: ExportToExcel }); }; /** * The options for the ExportToExcel * @componentOptions */ ExportToExcel.options = { /** * Specifies the number of results to include in the resulting Excel file. * * Generating and downloading the Excel file should take a reasonably short amount of time when using the default * value. However, this amount of time will increase exponentially as you set the value higher. * * Consequently, you should avoid setting this value above the default index limit of 1000 search results. * * Note that for HIPAA organizations, the export size limit is 5 MB, and for non-HIPAA organizations, the limit is 25 MB. * * Default value is `100`. Minimum value is `1`. * * @availablesince [February 2016 Release (v1.0.318)](https://docs.coveo.com/en/309/#february-2016-release-v10318) */ numberOfResults: ComponentOptions_1.ComponentOptions.buildNumberOption({ defaultValue: 100, min: 1 }), /** * Specifies the fields to include in the CSV output. * * Note that this does not affect top level properties such as the title, clickUri, printableUri and sysUri, for example. * * Default value is `undefined`, meaning all fields will be exported. */ fieldsToInclude: ComponentOptions_1.ComponentOptions.buildFieldsOption() }; return ExportToExcel; }(Component_1.Component)); exports.ExportToExcel = ExportToExcel; Initialization_1.Initialization.registerAutoCreateComponent(ExportToExcel); /***/ }), /***/ 614: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin /***/ }) }); //# sourceMappingURL=ExportToExcel__65d8de8a9f769489e2ff.js.map