@universis/ngx-tables 0.7.30 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('iso-639-1/build'), require('rxjs'), require('jquery'), require('datatables.net'), require('datatables.net-scroller'), require('datatables.net-colreorder'), require('rxjs/add/observable/combineLatest'), require('@angular/common/http'), require('@themost/client'), require('@themost/angular'), require('@angular/common'), require('@ngx-translate/core'), require('@angular/forms'), require('@universis/common'), require('@universis/common/routing'), require('@universis/forms'), require('angular-formio'), require('ngx-bootstrap/modal'), require('ngx-bootstrap/progressbar'), require('ngx-pipes'), require('lodash'), require('@angular/core'), require('@angular/router'), require('@ngrx/store'), require('rxjs/operators')) :
3
- typeof define === 'function' && define.amd ? define('@universis/ngx-tables', ['exports', 'iso-639-1/build', 'rxjs', 'jquery', 'datatables.net', 'datatables.net-scroller', 'datatables.net-colreorder', 'rxjs/add/observable/combineLatest', '@angular/common/http', '@themost/client', '@themost/angular', '@angular/common', '@ngx-translate/core', '@angular/forms', '@universis/common', '@universis/common/routing', '@universis/forms', 'angular-formio', 'ngx-bootstrap/modal', 'ngx-bootstrap/progressbar', 'ngx-pipes', 'lodash', '@angular/core', '@angular/router', '@ngrx/store', 'rxjs/operators'], factory) :
4
- (factory((global.universis = global.universis || {}, global.universis['ngx-tables'] = {}),global.ISO6391,global.rxjs,global.jQuery_,null,null,null,global.rxjs['add/observable/combineLatest'],global.ng.common.http,global.client,global.i1,global.ng.common,global.core,global.ng.forms,global.i2,global.routing,global.forms$1,global.angularFormio,global.modal,global.progressbar,global.ngxPipes,global.lodash,global.ng.core,global.ng.router,global.store,global.rxjs.operators));
5
- }(this, (function (exports,ISO6391,rxjs,jQuery_,datatables_net,datatables_netScroller,datatables_netColreorder,combineLatest,http,client,i1,common,core,forms,i2,routing,forms$1,angularFormio,modal,progressbar,ngxPipes,lodash,i0,i1$1,store,operators) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('iso-639-1/build'), require('rxjs'), require('jquery'), require('datatables.net'), require('datatables.net-scroller'), require('datatables.net-colreorder'), require('datatables.net-buttons'), require('rxjs/add/observable/combineLatest'), require('@angular/common/http'), require('@themost/client'), require('@themost/angular'), require('@angular/common'), require('@ngx-translate/core'), require('@angular/forms'), require('@universis/common'), require('@universis/common/routing'), require('@universis/forms'), require('angular-formio'), require('ngx-bootstrap/modal'), require('ngx-bootstrap/progressbar'), require('ngx-pipes'), require('lodash'), require('@angular/core'), require('@angular/router'), require('@ngrx/store'), require('rxjs/operators')) :
3
+ typeof define === 'function' && define.amd ? define('@universis/ngx-tables', ['exports', 'iso-639-1/build', 'rxjs', 'jquery', 'datatables.net', 'datatables.net-scroller', 'datatables.net-colreorder', 'datatables.net-buttons', 'rxjs/add/observable/combineLatest', '@angular/common/http', '@themost/client', '@themost/angular', '@angular/common', '@ngx-translate/core', '@angular/forms', '@universis/common', '@universis/common/routing', '@universis/forms', 'angular-formio', 'ngx-bootstrap/modal', 'ngx-bootstrap/progressbar', 'ngx-pipes', 'lodash', '@angular/core', '@angular/router', '@ngrx/store', 'rxjs/operators'], factory) :
4
+ (factory((global.universis = global.universis || {}, global.universis['ngx-tables'] = {}),global.ISO6391,global.rxjs,global.jQuery_,null,null,null,null,global.rxjs['add/observable/combineLatest'],global.ng.common.http,global.client,global.i1,global.ng.common,global.core,global.ng.forms,global.i2,global.routing,global.forms$1,global.angularFormio,global.modal,global.progressbar,global.ngxPipes,global.lodash,global.ng.core,global.ng.router,global.store,global.rxjs.operators));
5
+ }(this, (function (exports,ISO6391,rxjs,jQuery_,datatables_net,datatables_netScroller,datatables_netColreorder,datatables_netButtons,combineLatest,http,client,i1,common,core,forms,i2,routing,forms$1,angularFormio,modal,progressbar,ngxPipes,lodash,i0,i1$1,store,operators) { 'use strict';
6
6
 
7
7
  /*! *****************************************************************************
8
8
  Copyright (c) Microsoft Corporation.
@@ -1029,6 +1029,307 @@
1029
1029
  return ColumnSelectorService;
1030
1030
  }());
1031
1031
 
1032
+ var ActivatedTableService = /** @class */ (function () {
1033
+ function ActivatedTableService(_router, _activatedRoute) {
1034
+ var _this = this;
1035
+ this._router = _router;
1036
+ this._activatedRoute = _activatedRoute;
1037
+ _router.events.forEach(function (event) {
1038
+ if (event instanceof i1$1.NavigationStart) {
1039
+ if (_this._activeTable) {
1040
+ _this._activeTable = null;
1041
+ }
1042
+ }
1043
+ });
1044
+ }
1045
+ Object.defineProperty(ActivatedTableService.prototype, "activeTable", {
1046
+ get: function () {
1047
+ return this._activeTable;
1048
+ },
1049
+ set: function (tableComponent) {
1050
+ this._activeTable = tableComponent;
1051
+ },
1052
+ enumerable: true,
1053
+ configurable: true
1054
+ });
1055
+ ActivatedTableService.decorators = [
1056
+ { type: i0.Injectable, args: [{
1057
+ providedIn: 'root'
1058
+ },] }
1059
+ ];
1060
+ /** @nocollapse */
1061
+ ActivatedTableService.ctorParameters = function () {
1062
+ return [
1063
+ { type: i1$1.Router },
1064
+ { type: i1$1.ActivatedRoute }
1065
+ ];
1066
+ };
1067
+ ActivatedTableService.ngInjectableDef = i0.defineInjectable({ factory: function ActivatedTableService_Factory() { return new ActivatedTableService(i0.inject(i1$1.Router), i0.inject(i1$1.ActivatedRoute)); }, token: ActivatedTableService, providedIn: "root" });
1068
+ return ActivatedTableService;
1069
+ }());
1070
+
1071
+ var MAX_EXPORT_ITEMS = 500;
1072
+ var BtnExpDirective = /** @class */ (function () {
1073
+ function BtnExpDirective(_activatedTable, _context, _config, _translate, _loadingService, _errorService) {
1074
+ this._activatedTable = _activatedTable;
1075
+ this._context = _context;
1076
+ this._config = _config;
1077
+ this._translate = _translate;
1078
+ this._loadingService = _loadingService;
1079
+ this._errorService = _errorService;
1080
+ }
1081
+ BtnExpDirective.prototype.clickEvent = function (event) {
1082
+ return __awaiter(this, void 0, void 0, function () {
1083
+ return __generator(this, function (_a) {
1084
+ event.preventDefault();
1085
+ event.stopPropagation();
1086
+ if (this._activatedTable.activeTable) {
1087
+ return [2 /*return*/, this._activatedTable.activeTable.exportView()];
1088
+ /*
1089
+ const lastQuery = this._activatedTable.activeTable.lastQuery;
1090
+ const tableConfig = this._activatedTable.activeTable.config;
1091
+ const serviceHeaders = this._context.getService().getHeaders();
1092
+ const queryModel = lastQuery.getModel();
1093
+ let query = this._context.model(queryModel).asQueryable();
1094
+ const queryParams = lastQuery.getParams();
1095
+ query = this.constructQuery(query, queryParams, tableConfig, serviceHeaders);
1096
+ // get export settings
1097
+ const exportSettings = this._config.settings as ExportLimitConfiguration;
1098
+ // get export limit
1099
+ const maxExportItems = exportSettings && exportSettings.tables && exportSettings.tables.exportLimit;
1100
+ if (maxExportItems && typeof maxExportItems === 'number' && maxExportItems > 0) {
1101
+ query.skip(0).take(maxExportItems);
1102
+ } else {
1103
+ query.skip(0).take(MAX_EXPORT_ITEMS);
1104
+ }
1105
+ // This constructs the URI based on the way @themost does
1106
+ const url = this.constructURL(query);
1107
+ this.downloadFile(url, query.getService().getHeaders(), query.getModel()); */
1108
+ }
1109
+ return [2 /*return*/];
1110
+ });
1111
+ });
1112
+ };
1113
+ /**
1114
+ * Sets the parameters to the query based on
1115
+ * the active filters of the activated table
1116
+ * @param {ClientDataQueryable} query
1117
+ * @param params: The filters of the last query of the activated table
1118
+ * @return ClientDataQueryable
1119
+ */
1120
+ BtnExpDirective.prototype.setParams = function (query, params) {
1121
+ if (params && typeof params === 'object') {
1122
+ Object.keys(params).forEach(function (key) {
1123
+ query.setParam(key, params[key]);
1124
+ });
1125
+ }
1126
+ return query;
1127
+ };
1128
+ /**
1129
+ * Sets the headers to the query based on
1130
+ * the default headers of the DataContext
1131
+ * and appending the accept header to get
1132
+ * an xlsx file from the API
1133
+ * @param {ClientDataQueryable} query
1134
+ * @param {Headers} headers: The headers to append to the query
1135
+ * @return ClientDataQueryable
1136
+ */
1137
+ BtnExpDirective.prototype.setHeaders = function (query, headers) {
1138
+ Object.keys(headers).forEach(function (key) {
1139
+ if (headers.hasOwnProperty(key)) {
1140
+ query.getService().setHeader(key, headers[key]);
1141
+ }
1142
+ });
1143
+ // sets a header to accept xlsx files
1144
+ query.getService().setHeader('Accept', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
1145
+ return query;
1146
+ };
1147
+ /**
1148
+ * Constructs the select parameter of the
1149
+ * ClientDataQuery by replacing the target name
1150
+ * of the field based on the localized translation
1151
+ * of that property on the advanced tabled
1152
+ * @param {ClientDataQueryable} query
1153
+ * @param tableConfig: The configuration of the activated table
1154
+ * @return ClientDataQueryable
1155
+ */
1156
+ BtnExpDirective.prototype.constructQueryParam = function (query, tableConfig) {
1157
+ var _this = this;
1158
+ var selectQuery = query.getParams().$select;
1159
+ var selectQueryArray = selectQuery.split(',');
1160
+ selectQueryArray = selectQueryArray.map(function (select) {
1161
+ var e_1, _a, e_2, _b;
1162
+ var words = select.split(' ');
1163
+ if (words.length === 3) {
1164
+ if (tableConfig && tableConfig.columns) {
1165
+ try {
1166
+ for (var _c = __values(tableConfig.columns), _d = _c.next(); !_d.done; _d = _c.next()) {
1167
+ var column = _d.value;
1168
+ if (column.property === words[2] && column.title) {
1169
+ words[2] = "\"" + _this._translate.instant(column.title) + "\"";
1170
+ }
1171
+ else if (column.property === words[2]) {
1172
+ words[2] = "\"" + _this._translate.instant(words[2]) + "\"";
1173
+ }
1174
+ }
1175
+ }
1176
+ catch (e_1_1) {
1177
+ e_1 = { error: e_1_1 };
1178
+ }
1179
+ finally {
1180
+ try {
1181
+ if (_d && !_d.done && (_a = _c.return))
1182
+ _a.call(_c);
1183
+ }
1184
+ finally {
1185
+ if (e_1)
1186
+ throw e_1.error;
1187
+ }
1188
+ }
1189
+ }
1190
+ }
1191
+ if (words.length === 1) {
1192
+ if (tableConfig && tableConfig.columns) {
1193
+ try {
1194
+ for (var _e = __values(tableConfig.columns), _f = _e.next(); !_f.done; _f = _e.next()) {
1195
+ var column = _f.value;
1196
+ if (column.name === words[0] && column.title) {
1197
+ words[0] = words[0] + " as \"" + _this._translate.instant(column.title) + "\"";
1198
+ break;
1199
+ }
1200
+ else if (column.name === words[0] && column.property) {
1201
+ words[0] = words[0] + " as \"" + _this._translate.instant(column.property) + "\"";
1202
+ break;
1203
+ }
1204
+ else if (words[0] === column.name && words[0] === "id" && column.hidden) {
1205
+ break;
1206
+ }
1207
+ else if (words[0] == column.name || words[0] === column.property) {
1208
+ words[0] = words[0] + " as \"" + _this._translate.instant(words[0]) + "\"";
1209
+ }
1210
+ }
1211
+ }
1212
+ catch (e_2_1) {
1213
+ e_2 = { error: e_2_1 };
1214
+ }
1215
+ finally {
1216
+ try {
1217
+ if (_f && !_f.done && (_b = _e.return))
1218
+ _b.call(_e);
1219
+ }
1220
+ finally {
1221
+ if (e_2)
1222
+ throw e_2.error;
1223
+ }
1224
+ }
1225
+ }
1226
+ return words[0];
1227
+ }
1228
+ return words.join(' ');
1229
+ });
1230
+ selectQuery = selectQueryArray.join(',');
1231
+ query.setParam('$select', selectQuery);
1232
+ return query;
1233
+ };
1234
+ /**
1235
+ * Constructs the fetch URL based the query parameters
1236
+ * @param {ClientDataQueryable} query
1237
+ * @return String
1238
+ */
1239
+ BtnExpDirective.prototype.constructURL = function (query) {
1240
+ var baseURL = query.getService().getBase();
1241
+ var url = baseURL.endsWith('/') ? (baseURL + query.getModel() + '?') : (baseURL + '/' + query.getModel() + '?');
1242
+ Object.keys(query.getParams()).forEach(function (key, index) {
1243
+ if (index === 0) {
1244
+ url += key + '=' + query.getParams()[key];
1245
+ }
1246
+ else {
1247
+ url += '&' + key + '=' + query.getParams()[key];
1248
+ }
1249
+ });
1250
+ return url;
1251
+ };
1252
+ /**
1253
+ * Constructs the query by setting the parameters of the
1254
+ * advanced table's active filters, sets the necessary headers
1255
+ * and build the select parameter of the query
1256
+ * @param {ClientDataQueryable} query
1257
+ * @param params: The filters of the last query of the activated table
1258
+ * @param tableConfig: The configuration of the activated table
1259
+ * @param {Headers} headers: The headers to append to the query
1260
+ * @return ClientDataQueryable
1261
+ */
1262
+ BtnExpDirective.prototype.constructQuery = function (query, params, tableConfig, headers) {
1263
+ var _query = this.setParams(query, params);
1264
+ _query = this.setHeaders(_query, headers);
1265
+ _query = this.constructQueryParam(_query, tableConfig);
1266
+ return _query;
1267
+ };
1268
+ /**
1269
+ * Fetches and saves the xlsx file
1270
+ * @param {String} url
1271
+ * @param {Headers} serviceHeaders: The headers to append to the query
1272
+ * @param modelName: The model name of the advanced table
1273
+ */
1274
+ BtnExpDirective.prototype.downloadFile = function (url, serviceHeaders, modelName) {
1275
+ var _this = this;
1276
+ this._loadingService.showLoading();
1277
+ fetch(encodeURI(url), {
1278
+ headers: serviceHeaders,
1279
+ credentials: 'include'
1280
+ }).then(function (response) {
1281
+ if (response && !response.ok) {
1282
+ throw new client.ResponseError(response.statusText, response.status);
1283
+ }
1284
+ return response.blob();
1285
+ }).then(function (blob) {
1286
+ var objectUrl = window.URL.createObjectURL(blob);
1287
+ var a = document.createElement('a');
1288
+ document.body.appendChild(a);
1289
+ a.setAttribute('style', 'display: none');
1290
+ a.href = objectUrl;
1291
+ var downloadName = modelName + ".xlsx";
1292
+ a.download = downloadName;
1293
+ // this adds support for IE and MS Edge (up to version 44.19041)
1294
+ if (window.navigator && window.navigator.msSaveOrOpenBlob) {
1295
+ window.navigator.msSaveOrOpenBlob(blob, downloadName);
1296
+ }
1297
+ else {
1298
+ // for all other browsers
1299
+ a.click();
1300
+ }
1301
+ window.URL.revokeObjectURL(objectUrl);
1302
+ a.remove();
1303
+ _this._loadingService.hideLoading();
1304
+ }).catch(function (err) {
1305
+ _this._loadingService.hideLoading();
1306
+ _this._errorService.showError(err, {
1307
+ continueLink: '.'
1308
+ });
1309
+ });
1310
+ };
1311
+ BtnExpDirective.decorators = [
1312
+ { type: i0.Directive, args: [{
1313
+ selector: '.universis-btn-export'
1314
+ },] }
1315
+ ];
1316
+ /** @nocollapse */
1317
+ BtnExpDirective.ctorParameters = function () {
1318
+ return [
1319
+ { type: ActivatedTableService },
1320
+ { type: i1.AngularDataContext },
1321
+ { type: i2.ConfigurationService },
1322
+ { type: core.TranslateService },
1323
+ { type: i2.LoadingService },
1324
+ { type: i2.ErrorService }
1325
+ ];
1326
+ };
1327
+ BtnExpDirective.propDecorators = {
1328
+ clickEvent: [{ type: i0.HostListener, args: ['click', ['$event'],] }]
1329
+ };
1330
+ return BtnExpDirective;
1331
+ }());
1332
+
1032
1333
  // restore jquery import to avoid Cannot call a namespace ('jquery') error
1033
1334
  var jQuery = jQuery_;
1034
1335
  var DataTablesApi = jQuery.fn.dataTable.Api;
@@ -1037,6 +1338,12 @@
1037
1338
  ctx.oApi._fnProcessingDisplay(ctx, show);
1038
1339
  });
1039
1340
  });
1341
+ var ɵ0 = [];
1342
+ var EMPTY_DATASET = {
1343
+ recordsTotal: 0,
1344
+ recordsFiltered: 0,
1345
+ data: ɵ0,
1346
+ };
1040
1347
  var TableTranslationChangeDetector = /** @class */ (function (_super) {
1041
1348
  __extends(TableTranslationChangeDetector, _super);
1042
1349
  function TableTranslationChangeDetector() {
@@ -1055,6 +1362,15 @@
1055
1362
  return TableTranslationChangeDetector;
1056
1363
  }(i0.ChangeDetectorRef));
1057
1364
  var COLUMN_FORMATTERS = new i0.InjectionToken('column.formatters');
1365
+ var ExportLimitExceededError = /** @class */ (function (_super) {
1366
+ __extends(ExportLimitExceededError, _super);
1367
+ function ExportLimitExceededError(message) {
1368
+ var _this = _super.call(this, message) || this;
1369
+ _this.name = 'ExportLimitExceededError';
1370
+ return _this;
1371
+ }
1372
+ return ExportLimitExceededError;
1373
+ }(RangeError));
1058
1374
  var ColumnFormatter = /** @class */ (function (_super) {
1059
1375
  __extends(ColumnFormatter, _super);
1060
1376
  function ColumnFormatter(injector) {
@@ -1085,7 +1401,7 @@
1085
1401
  return (Number(String(Math.random()).slice(2))).toString(36);
1086
1402
  }
1087
1403
  var AdvancedTableComponent = /** @class */ (function () {
1088
- function AdvancedTableComponent(_context, _columnFormatters, _activatedRoute, _translateService, _injector, _advancedFilterValueProvider, _element, _template, _loading, _http, _columnSelector) {
1404
+ function AdvancedTableComponent(_context, _columnFormatters, _activatedRoute, _translateService, _injector, _advancedFilterValueProvider, _element, _template, _loading, _http, _columnSelector, _configuration, _exportSpreadsheet, _modalService, _errorService) {
1089
1405
  var _this = this;
1090
1406
  this._context = _context;
1091
1407
  this._columnFormatters = _columnFormatters;
@@ -1098,6 +1414,10 @@
1098
1414
  this._loading = _loading;
1099
1415
  this._http = _http;
1100
1416
  this._columnSelector = _columnSelector;
1417
+ this._configuration = _configuration;
1418
+ this._exportSpreadsheet = _exportSpreadsheet;
1419
+ this._modalService = _modalService;
1420
+ this._errorService = _errorService;
1101
1421
  this._firstLoad = true;
1102
1422
  this._showFooter = false;
1103
1423
  this._showHeader = true;
@@ -1141,6 +1461,7 @@
1141
1461
  this.customSelect = false;
1142
1462
  this.selected = [];
1143
1463
  this.unselected = [];
1464
+ this._lastQueryTotalItems = 0;
1144
1465
  // initialize translate pipe
1145
1466
  this.translator = new core.TranslatePipe(this._translateService, new TableTranslationChangeDetector());
1146
1467
  jQuery.fn.dataTable.ext.classes.sPageButton = 'btn';
@@ -1164,6 +1485,13 @@
1164
1485
  enumerable: true,
1165
1486
  configurable: true
1166
1487
  });
1488
+ Object.defineProperty(AdvancedTableComponent.prototype, "lastQueryTotalItems", {
1489
+ get: function () {
1490
+ return this._lastQueryTotalItems;
1491
+ },
1492
+ enumerable: true,
1493
+ configurable: true
1494
+ });
1167
1495
  Object.defineProperty(AdvancedTableComponent.prototype, "showFooter", {
1168
1496
  get: function () {
1169
1497
  return this._showFooter;
@@ -1790,12 +2118,15 @@
1790
2118
  recordsFiltered: 0,
1791
2119
  data: [],
1792
2120
  };
2121
+ self._lastQueryTotalItems = 0;
1793
2122
  // emit empty data
1794
2123
  self.load.emit(emptyDataSet);
1795
2124
  // return empty data
1796
2125
  return fnCallback(emptyDataSet);
1797
2126
  }
1798
2127
  }
2128
+ // reset error
2129
+ self.toggleError();
1799
2130
  // get activated route params
1800
2131
  var queryParams = self._activatedRoute.snapshot.queryParams;
1801
2132
  // get columns
@@ -1876,12 +2207,13 @@
1876
2207
  q.filter(expressions.join(' and '));
1877
2208
  }
1878
2209
  self.lastQueryParams = q.getParams();
1879
- q.getList().then(function (items) {
2210
+ return q.getList().then(function (items) {
1880
2211
  var dataSet = {
1881
2212
  recordsTotal: items.total,
1882
2213
  recordsFiltered: items.total,
1883
2214
  data: items.value,
1884
2215
  };
2216
+ self._lastQueryTotalItems = items.total;
1885
2217
  if (items.total === 0) {
1886
2218
  self.resetEmptyTable();
1887
2219
  }
@@ -1891,7 +2223,14 @@
1891
2223
  return fnCallback(dataSet);
1892
2224
  });
1893
2225
  }).catch(function (err) {
2226
+ // log error to console
1894
2227
  console.error('TABLES', err);
2228
+ // show error
2229
+ self.toggleError(err);
2230
+ self._lastQueryTotalItems = 0;
2231
+ // by returning empty dataset
2232
+ self.load.emit(EMPTY_DATASET);
2233
+ return fnCallback(EMPTY_DATASET);
1895
2234
  });
1896
2235
  }
1897
2236
  self.lastQueryParams = q.getParams();
@@ -1901,6 +2240,7 @@
1901
2240
  recordsFiltered: items.total,
1902
2241
  data: items.value,
1903
2242
  };
2243
+ self._lastQueryTotalItems = items.total;
1904
2244
  if (items.total === 0) {
1905
2245
  self.resetEmptyTable();
1906
2246
  }
@@ -1909,7 +2249,13 @@
1909
2249
  // return data
1910
2250
  return fnCallback(dataSet);
1911
2251
  }).catch(function (err) {
2252
+ // log error to console
1912
2253
  console.error('TABLES', err);
2254
+ // show error
2255
+ self.toggleError(err);
2256
+ // by returning empty dataset
2257
+ self.load.emit(EMPTY_DATASET);
2258
+ return fnCallback(EMPTY_DATASET);
1913
2259
  });
1914
2260
  },
1915
2261
  language: Object.assign({}, self.translator.transform('Tables.DataTable'), { emptyTable: ' ' }),
@@ -2142,9 +2488,28 @@
2142
2488
  this.dataTable.context[0].oLanguage.sZeroRecords = this.emptyTable.nativeElement.innerHTML;
2143
2489
  }
2144
2490
  };
2491
+ AdvancedTableComponent.prototype.toggleError = function (err) {
2492
+ if (this.dataTable && this.dataTable.context[0]) {
2493
+ var innerMessage = this.errorTemplate.nativeElement.getElementsByTagName('small').item(0);
2494
+ if (err) {
2495
+ this.lastError = err;
2496
+ if (innerMessage) {
2497
+ innerMessage.innerHTML = err.error && err.error.message ? err.error.message : err.message;
2498
+ }
2499
+ this.dataTable.context[0].oLanguage.sEmptyTable =
2500
+ this.dataTable.context[0].oLanguage.sZeroRecords = this.errorTemplate.nativeElement.innerHTML;
2501
+ }
2502
+ else {
2503
+ if (innerMessage) {
2504
+ innerMessage.innerHTML = '';
2505
+ }
2506
+ this.dataTable.context[0].oLanguage.sEmptyTable = this.dataTable.context[0].oLanguage.sZeroRecords = '';
2507
+ }
2508
+ }
2509
+ };
2145
2510
  AdvancedTableComponent.prototype.clearEmptyTable = function () {
2146
2511
  if (this.dataTable && this.dataTable.context[0]) {
2147
- this.dataTable.context[0].oLanguage.sEmptyTable = '';
2512
+ this.dataTable.context[0].oLanguage.sEmptyTable = this.dataTable.context[0].oLanguage.sZeroRecords = '';
2148
2513
  }
2149
2514
  };
2150
2515
  AdvancedTableComponent.prototype.export = function () {
@@ -2259,13 +2624,133 @@
2259
2624
  }
2260
2625
  });
2261
2626
  };
2627
+ /**
2628
+ *
2629
+ * @param options to pass an errorHandler callback, if desired
2630
+ * @returns void
2631
+ */
2632
+ AdvancedTableComponent.prototype.exportView = function (options) {
2633
+ return __awaiter(this, void 0, void 0, function () {
2634
+ var exportSettings, exportLimit, totalDisplayedItems, _a, body, header, previousDataState, targetDataState, _b, body, header, err_1;
2635
+ return __generator(this, function (_c) {
2636
+ switch (_c.label) {
2637
+ case 0:
2638
+ _c.trys.push([0, 4, 5, 6]);
2639
+ this._loading.showLoading();
2640
+ // validate query items and config
2641
+ if (!(this._lastQueryTotalItems && this.config)) {
2642
+ // do nothing
2643
+ return [2 /*return*/];
2644
+ }
2645
+ exportSettings = this._configuration.settings;
2646
+ exportLimit = (exportSettings && exportSettings.tables && exportSettings.tables.exportLimit > 0)
2647
+ ? exportSettings.tables.exportLimit : MAX_EXPORT_ITEMS;
2648
+ // and validate it
2649
+ if (this._lastQueryTotalItems > exportLimit) {
2650
+ // call error handler
2651
+ // provide a recognizible error type
2652
+ if (options && options.errorHandler) {
2653
+ options.errorHandler(new ExportLimitExceededError('Export limit exceeded'));
2654
+ return [2 /*return*/];
2655
+ }
2656
+ // or show warning modal and exit
2657
+ this._modalService.showWarningDialog(this._translateService.instant('Tables.ExportList'), this._translateService.instant('Tables.ExportLimitExceeded', { dataLength: this._lastQueryTotalItems, exportLimit: exportLimit }), i2.DIALOG_BUTTONS.Ok);
2658
+ return [2 /*return*/];
2659
+ }
2660
+ totalDisplayedItems = Array.from(this.dataTable.context[0].aiDisplay).length;
2661
+ if (!(totalDisplayedItems === this._lastQueryTotalItems))
2662
+ return [3 /*break*/, 1];
2663
+ _a = this.getExportableData(), body = _a.body, header = _a.header;
2664
+ // and export them to excel
2665
+ this._exportSpreadsheet.export(body, this._translateService.instant(this.config.title || 'Tables.ExportResults') + ".xlsx", {
2666
+ header: header,
2667
+ skipHeader: false
2668
+ });
2669
+ return [3 /*break*/, 3];
2670
+ case 1:
2671
+ previousDataState = this.dataTable.rows().data().toArray();
2672
+ return [4 /*yield*/, this.lastQuery.take(exportLimit).getItems()];
2673
+ case 2:
2674
+ targetDataState = _c.sent();
2675
+ // change table data on the fly, but do not redraw
2676
+ this.dataTable.clear().rows.add(targetDataState);
2677
+ _b = this.getExportableData(), body = _b.body, header = _b.header;
2678
+ // reset table data
2679
+ this.dataTable.clear().rows.add(previousDataState);
2680
+ // and export target data to excel
2681
+ this._exportSpreadsheet.export(body, this._translateService.instant(this.config.title || 'Tables.ExportResults') + ".xlsx", {
2682
+ header: header,
2683
+ skipHeader: false
2684
+ });
2685
+ _c.label = 3;
2686
+ case 3:
2687
+ // exit
2688
+ return [2 /*return*/];
2689
+ case 4:
2690
+ err_1 = _c.sent();
2691
+ // log error
2692
+ console.error(err_1);
2693
+ // call error handler, if defined
2694
+ if (options && options.errorHandler) {
2695
+ options.errorHandler(err_1);
2696
+ }
2697
+ else {
2698
+ // use default error service
2699
+ this._errorService.showError(err_1, {
2700
+ continueLink: '.'
2701
+ });
2702
+ }
2703
+ return [3 /*break*/, 6];
2704
+ case 5:
2705
+ this._loading.hideLoading();
2706
+ return [7 /*endfinally*/];
2707
+ case 6: return [2 /*return*/];
2708
+ }
2709
+ });
2710
+ });
2711
+ };
2712
+ AdvancedTableComponent.prototype.getExportableData = function () {
2713
+ var _this = this;
2714
+ if (!(this.dataTable && this.dataTable.buttons
2715
+ && typeof this.dataTable.buttons.exportData === 'function' && this.config)) {
2716
+ return { body: [], header: [] };
2717
+ }
2718
+ // fetch exportable excel data
2719
+ var _a = this.dataTable.buttons.exportData(), body = _a.body, header = _a.header;
2720
+ var cleanupIndexes = [];
2721
+ // clean up headers
2722
+ header = header.filter(function (headerItem, index) {
2723
+ // exclude empty headers
2724
+ if (headerItem.trim().length === 0) {
2725
+ cleanupIndexes.push(index);
2726
+ return false;
2727
+ }
2728
+ // find item by title
2729
+ var findItem = _this.config.columns.find(function (column) {
2730
+ return column.title && column.title.length && _this._translateService.instant(column.title) === headerItem;
2731
+ });
2732
+ // exclude hidden columns
2733
+ if (findItem && findItem.hidden === true) {
2734
+ cleanupIndexes.push(index);
2735
+ return false;
2736
+ }
2737
+ return true;
2738
+ });
2739
+ // clean up body
2740
+ body = body.map(function (row) {
2741
+ return row.filter(function (_, rowIndex) {
2742
+ return cleanupIndexes.indexOf(rowIndex) === -1;
2743
+ });
2744
+ });
2745
+ return { body: body, header: header };
2746
+ };
2262
2747
  AdvancedTableComponent.decorators = [
2263
2748
  { type: i0.Component, args: [{
2264
2749
  // tslint:disable-next-line: component-selector
2265
2750
  selector: 'app-advanced-table',
2266
- template: "\n <table #table class=\"dataTable\">\n </table>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n ",
2751
+ template: "\n <table #table class=\"dataTable\">\n </table>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n </div>\n </div>\n <div #errorTemplate class=\"d-none error-message\">\n <div class=\"text-center\">\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-danger border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-secondary\" [translate]=\"'Tables.DataError.Title'\"></h4>\n <p class=\"font-lg text-secondary mb-1\" [translate]=\"'Tables.DataError.Message'\"></p>\n <p class=\"font-lg text-secondary error-inner-message\">\n <small></small>\n </p>\n </div>\n </div>\n </div>\n ",
2267
2752
  encapsulation: i0.ViewEncapsulation.None,
2268
- styles: ["table.dataTable thead .sorting{background-image:none}table.dataTable thead .sorting_asc{background-position:95% 60%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsSAAALEgHS3X78AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAEtJREFUKJFjYBgywAOKMQALFjE/BgaGTCibjYGBYRM+kz0ZGBh2MTAw8DAwMHAxMDBsY2BgCCBGMQzg1IRNMV5NuVAJXIALqmYwAgBBkAlPRCLcLwAAAABJRU5ErkJggg==)}table.dataTable thead .sorting_desc{background-position:95% 60%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAArzAAAK8wHvFRX1AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAFNJREFUKJHVzTEKgDAQRNGHZfBg2sSTeDMLKwXPYuVJbBKQQEyrH6bZ+cPyWWaElz4kR5cOJ1b0FXnBVRYjjmIUsGGqvX6OmnImYk+JLTkzpPyBGwrtCvfBe56nAAAAAElFTkSuQmCC)}table.dataTable thead th{color:#73818e;font-size:.75rem;font-weight:600;padding-top:16px;padding-bottom:4px;border-bottom:none;padding-left:8px}table.dataTable tbody tr:first-child td:first-child{border-radius:6px 0}table.dataTable tbody tr:first-child td:last-child{border-radius:0 6px}table.dataTable tbody tr{border-radius:6px}table.dataTable tbody tr td:first-child{border-left:1px solid #c2cfd6}table.dataTable tbody tr td:last-child{border-right:1px solid #c2cfd6}table.dataTable tbody tr td{padding-top:8px;padding-bottom:8px;border-top:1px solid #c2cfd6}table.dataTable tbody tr:last-child td:first-child{border-radius:0 0 0 6px}table.dataTable tbody tr:last-child td:last-child{border-radius:0 0 6px}table.dataTable tbody tr:last-child td{border-bottom:1px solid #c2cfd6}table.dataTable td.dataTables_empty{border:none!important}table.dataTable.no-footer{border-bottom:none}.dataTables_paginate .btn.previous{margin-right:8px}.dataTables_paginate .btn.next{margin-left:8px}.dataTables_info,.dataTables_paginate{margin-top:1rem}.dataTables_paginate span .btn{border-radius:1.5rem}.dataTables_filter{display:none}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:0;overflow:auto}.dataTables_paginate{display:none}.dataTable.processing{opacity:15%}.dataTables_wrapper .dataTables_processing{background:0 0;position:absolute;display:inline-block;top:25%;z-index:5;color:#73818e}.text-decoration-line-through{text-decoration:line-through!important}tr.removed .checkbox+label{visibility:hidden}"]
2753
+ styles: ["table.dataTable thead .sorting{background-image:none}table.dataTable thead .sorting_asc{background-position:95% 60%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsSAAALEgHS3X78AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAEtJREFUKJFjYBgywAOKMQALFjE/BgaGTCibjYGBYRM+kz0ZGBh2MTAw8DAwMHAxMDBsY2BgCCBGMQzg1IRNMV5NuVAJXIALqmYwAgBBkAlPRCLcLwAAAABJRU5ErkJggg==)}table.dataTable thead .sorting_desc{background-position:95% 60%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAArzAAAK8wHvFRX1AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAFNJREFUKJHVzTEKgDAQRNGHZfBg2sSTeDMLKwXPYuVJbBKQQEyrH6bZ+cPyWWaElz4kR5cOJ1b0FXnBVRYjjmIUsGGqvX6OmnImYk+JLTkzpPyBGwrtCvfBe56nAAAAAElFTkSuQmCC)}table.dataTable thead th{color:#73818e;font-size:.75rem;font-weight:600;padding-top:16px;padding-bottom:4px;border-bottom:none;padding-left:8px}table.dataTable tbody tr:first-child td:first-child{border-radius:6px 0}table.dataTable tbody tr:first-child td:last-child{border-radius:0 6px}table.dataTable tbody tr{border-radius:6px}table.dataTable tbody tr td:first-child{border-left:1px solid #c2cfd6}table.dataTable tbody tr td:last-child{border-right:1px solid #c2cfd6}table.dataTable tbody tr td{padding-top:8px;padding-bottom:8px;border-top:1px solid #c2cfd6}table.dataTable tbody tr:last-child td:first-child{border-radius:0 0 0 6px}table.dataTable tbody tr:last-child td:last-child{border-radius:0 0 6px}table.dataTable tbody tr:last-child td{border-bottom:1px solid #c2cfd6}table.dataTable td.dataTables_empty{border:none!important}table.dataTable .error-inner-message>small{overflow-wrap:break-word}table.dataTable.no-footer{border-bottom:none}.dataTables_paginate .btn.previous{margin-right:8px}.dataTables_paginate .btn.next{margin-left:8px}.dataTables_info,.dataTables_paginate{margin-top:1rem}.dataTables_paginate span .btn{border-radius:1.5rem}.dataTables_filter{display:none}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:0;overflow:auto}.dataTables_paginate{display:none}.dataTable.processing{opacity:15%}.dataTables_wrapper .dataTables_processing{background:0 0;position:absolute;display:inline-block;top:25%;z-index:5;color:#73818e}.text-decoration-line-through{text-decoration:line-through!important}tr.removed .checkbox+label{visibility:hidden}"]
2269
2754
  }] }
2270
2755
  ];
2271
2756
  /** @nocollapse */
@@ -2281,12 +2766,17 @@
2281
2766
  { type: i2.TemplatePipe },
2282
2767
  { type: i2.LoadingService },
2283
2768
  { type: http.HttpClient },
2284
- { type: ColumnSelectorService }
2769
+ { type: ColumnSelectorService },
2770
+ { type: i2.ConfigurationService },
2771
+ { type: i2.ExportSpreadsheetService },
2772
+ { type: i2.ModalService },
2773
+ { type: i2.ErrorService }
2285
2774
  ];
2286
2775
  };
2287
2776
  AdvancedTableComponent.propDecorators = {
2288
2777
  table: [{ type: i0.ViewChild, args: ['table',] }],
2289
2778
  emptyTable: [{ type: i0.ViewChild, args: ['emptyTable',] }],
2779
+ errorTemplate: [{ type: i0.ViewChild, args: ['errorTemplate',] }],
2290
2780
  loadingTable: [{ type: i0.ViewChild, args: ['loadingTable',] }],
2291
2781
  height: [{ type: i0.Input }],
2292
2782
  showActions: [{ type: i0.Input }],
@@ -3294,49 +3784,10 @@
3294
3784
  /** @nocollapse */
3295
3785
  AdvancedSearchConfigurationResolver.ctorParameters = function () {
3296
3786
  return [
3297
- { type: http.HttpClient }
3298
- ];
3299
- };
3300
- return AdvancedSearchConfigurationResolver;
3301
- }());
3302
-
3303
- var ActivatedTableService = /** @class */ (function () {
3304
- function ActivatedTableService(_router, _activatedRoute) {
3305
- var _this = this;
3306
- this._router = _router;
3307
- this._activatedRoute = _activatedRoute;
3308
- _router.events.forEach(function (event) {
3309
- if (event instanceof i1$1.NavigationStart) {
3310
- if (_this._activeTable) {
3311
- _this._activeTable = null;
3312
- }
3313
- }
3314
- });
3315
- }
3316
- Object.defineProperty(ActivatedTableService.prototype, "activeTable", {
3317
- get: function () {
3318
- return this._activeTable;
3319
- },
3320
- set: function (tableComponent) {
3321
- this._activeTable = tableComponent;
3322
- },
3323
- enumerable: true,
3324
- configurable: true
3325
- });
3326
- ActivatedTableService.decorators = [
3327
- { type: i0.Injectable, args: [{
3328
- providedIn: 'root'
3329
- },] }
3330
- ];
3331
- /** @nocollapse */
3332
- ActivatedTableService.ctorParameters = function () {
3333
- return [
3334
- { type: i1$1.Router },
3335
- { type: i1$1.ActivatedRoute }
3787
+ { type: http.HttpClient }
3336
3788
  ];
3337
3789
  };
3338
- ActivatedTableService.ngInjectableDef = i0.defineInjectable({ factory: function ActivatedTableService_Factory() { return new ActivatedTableService(i0.inject(i1$1.Router), i0.inject(i1$1.ActivatedRoute)); }, token: ActivatedTableService, providedIn: "root" });
3339
- return ActivatedTableService;
3790
+ return AdvancedSearchConfigurationResolver;
3340
3791
  }());
3341
3792
 
3342
3793
  var AdvancedTableSettingsComponent = /** @class */ (function () {
@@ -4274,265 +4725,6 @@
4274
4725
  return AdvancedTableEditorDirective;
4275
4726
  }());
4276
4727
 
4277
- var MAX_EXPORT_ITEMS = 500;
4278
- var BtnExpDirective = /** @class */ (function () {
4279
- function BtnExpDirective(_activatedTable, _context, _config, _translate, _loadingService, _errorService) {
4280
- this._activatedTable = _activatedTable;
4281
- this._context = _context;
4282
- this._config = _config;
4283
- this._translate = _translate;
4284
- this._loadingService = _loadingService;
4285
- this._errorService = _errorService;
4286
- }
4287
- BtnExpDirective.prototype.clickEvent = function (event) {
4288
- return __awaiter(this, void 0, void 0, function () {
4289
- var lastQuery, tableConfig, serviceHeaders, queryModel, query, queryParams, exportSettings, maxExportItems, url;
4290
- return __generator(this, function (_a) {
4291
- event.preventDefault();
4292
- event.stopPropagation();
4293
- if (this._activatedTable.activeTable) {
4294
- lastQuery = this._activatedTable.activeTable.lastQuery;
4295
- tableConfig = this._activatedTable.activeTable.config;
4296
- serviceHeaders = this._context.getService().getHeaders();
4297
- queryModel = lastQuery.getModel();
4298
- query = this._context.model(queryModel).asQueryable();
4299
- queryParams = lastQuery.getParams();
4300
- query = this.constructQuery(query, queryParams, tableConfig, serviceHeaders);
4301
- exportSettings = this._config.settings;
4302
- maxExportItems = exportSettings && exportSettings.tables && exportSettings.tables.exportLimit;
4303
- if (maxExportItems && typeof maxExportItems === 'number' && maxExportItems > 0) {
4304
- query.skip(0).take(maxExportItems);
4305
- }
4306
- else {
4307
- query.skip(0).take(MAX_EXPORT_ITEMS);
4308
- }
4309
- url = this.constructURL(query);
4310
- this.downloadFile(url, query.getService().getHeaders(), query.getModel());
4311
- }
4312
- return [2 /*return*/];
4313
- });
4314
- });
4315
- };
4316
- /**
4317
- * Sets the parameters to the query based on
4318
- * the active filters of the activated table
4319
- * @param {ClientDataQueryable} query
4320
- * @param params: The filters of the last query of the activated table
4321
- * @return ClientDataQueryable
4322
- */
4323
- BtnExpDirective.prototype.setParams = function (query, params) {
4324
- if (params && typeof params === 'object') {
4325
- Object.keys(params).forEach(function (key) {
4326
- query.setParam(key, params[key]);
4327
- });
4328
- }
4329
- return query;
4330
- };
4331
- /**
4332
- * Sets the headers to the query based on
4333
- * the default headers of the DataContext
4334
- * and appending the accept header to get
4335
- * an xlsx file from the API
4336
- * @param {ClientDataQueryable} query
4337
- * @param {Headers} headers: The headers to append to the query
4338
- * @return ClientDataQueryable
4339
- */
4340
- BtnExpDirective.prototype.setHeaders = function (query, headers) {
4341
- Object.keys(headers).forEach(function (key) {
4342
- if (headers.hasOwnProperty(key)) {
4343
- query.getService().setHeader(key, headers[key]);
4344
- }
4345
- });
4346
- // sets a header to accept xlsx files
4347
- query.getService().setHeader('Accept', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
4348
- return query;
4349
- };
4350
- /**
4351
- * Constructs the select parameter of the
4352
- * ClientDataQuery by replacing the target name
4353
- * of the field based on the localized translation
4354
- * of that property on the advanced tabled
4355
- * @param {ClientDataQueryable} query
4356
- * @param tableConfig: The configuration of the activated table
4357
- * @return ClientDataQueryable
4358
- */
4359
- BtnExpDirective.prototype.constructQueryParam = function (query, tableConfig) {
4360
- var _this = this;
4361
- var selectQuery = query.getParams().$select;
4362
- var selectQueryArray = selectQuery.split(',');
4363
- selectQueryArray = selectQueryArray.map(function (select) {
4364
- var e_1, _a, e_2, _b;
4365
- var words = select.split(' ');
4366
- if (words.length === 3) {
4367
- if (tableConfig && tableConfig.columns) {
4368
- try {
4369
- for (var _c = __values(tableConfig.columns), _d = _c.next(); !_d.done; _d = _c.next()) {
4370
- var column = _d.value;
4371
- if (column.property === words[2] && column.title) {
4372
- words[2] = "\"" + _this._translate.instant(column.title) + "\"";
4373
- }
4374
- else if (column.property === words[2]) {
4375
- words[2] = "\"" + _this._translate.instant(words[2]) + "\"";
4376
- }
4377
- }
4378
- }
4379
- catch (e_1_1) {
4380
- e_1 = { error: e_1_1 };
4381
- }
4382
- finally {
4383
- try {
4384
- if (_d && !_d.done && (_a = _c.return))
4385
- _a.call(_c);
4386
- }
4387
- finally {
4388
- if (e_1)
4389
- throw e_1.error;
4390
- }
4391
- }
4392
- }
4393
- }
4394
- if (words.length === 1) {
4395
- if (tableConfig && tableConfig.columns) {
4396
- try {
4397
- for (var _e = __values(tableConfig.columns), _f = _e.next(); !_f.done; _f = _e.next()) {
4398
- var column = _f.value;
4399
- if (column.name === words[0] && column.title) {
4400
- words[0] = words[0] + " as \"" + _this._translate.instant(column.title) + "\"";
4401
- break;
4402
- }
4403
- else if (column.name === words[0] && column.property) {
4404
- words[0] = words[0] + " as \"" + _this._translate.instant(column.property) + "\"";
4405
- break;
4406
- }
4407
- else if (words[0] === column.name && words[0] === "id" && column.hidden) {
4408
- break;
4409
- }
4410
- else if (words[0] == column.name || words[0] === column.property) {
4411
- words[0] = words[0] + " as \"" + _this._translate.instant(words[0]) + "\"";
4412
- }
4413
- }
4414
- }
4415
- catch (e_2_1) {
4416
- e_2 = { error: e_2_1 };
4417
- }
4418
- finally {
4419
- try {
4420
- if (_f && !_f.done && (_b = _e.return))
4421
- _b.call(_e);
4422
- }
4423
- finally {
4424
- if (e_2)
4425
- throw e_2.error;
4426
- }
4427
- }
4428
- }
4429
- return words[0];
4430
- }
4431
- return words.join(' ');
4432
- });
4433
- selectQuery = selectQueryArray.join(',');
4434
- query.setParam('$select', selectQuery);
4435
- return query;
4436
- };
4437
- /**
4438
- * Constructs the fetch URL based the query parameters
4439
- * @param {ClientDataQueryable} query
4440
- * @return String
4441
- */
4442
- BtnExpDirective.prototype.constructURL = function (query) {
4443
- var baseURL = query.getService().getBase();
4444
- var url = baseURL.endsWith('/') ? (baseURL + query.getModel() + '?') : (baseURL + '/' + query.getModel() + '?');
4445
- Object.keys(query.getParams()).forEach(function (key, index) {
4446
- if (index === 0) {
4447
- url += key + '=' + query.getParams()[key];
4448
- }
4449
- else {
4450
- url += '&' + key + '=' + query.getParams()[key];
4451
- }
4452
- });
4453
- return url;
4454
- };
4455
- /**
4456
- * Constructs the query by setting the parameters of the
4457
- * advanced table's active filters, sets the necessary headers
4458
- * and build the select parameter of the query
4459
- * @param {ClientDataQueryable} query
4460
- * @param params: The filters of the last query of the activated table
4461
- * @param tableConfig: The configuration of the activated table
4462
- * @param {Headers} headers: The headers to append to the query
4463
- * @return ClientDataQueryable
4464
- */
4465
- BtnExpDirective.prototype.constructQuery = function (query, params, tableConfig, headers) {
4466
- var _query = this.setParams(query, params);
4467
- _query = this.setHeaders(_query, headers);
4468
- _query = this.constructQueryParam(_query, tableConfig);
4469
- return _query;
4470
- };
4471
- /**
4472
- * Fetches and saves the xlsx file
4473
- * @param {String} url
4474
- * @param {Headers} serviceHeaders: The headers to append to the query
4475
- * @param modelName: The model name of the advanced table
4476
- */
4477
- BtnExpDirective.prototype.downloadFile = function (url, serviceHeaders, modelName) {
4478
- var _this = this;
4479
- this._loadingService.showLoading();
4480
- fetch(encodeURI(url), {
4481
- headers: serviceHeaders,
4482
- credentials: 'include'
4483
- }).then(function (response) {
4484
- if (response && !response.ok) {
4485
- throw new client.ResponseError(response.statusText, response.status);
4486
- }
4487
- return response.blob();
4488
- }).then(function (blob) {
4489
- var objectUrl = window.URL.createObjectURL(blob);
4490
- var a = document.createElement('a');
4491
- document.body.appendChild(a);
4492
- a.setAttribute('style', 'display: none');
4493
- a.href = objectUrl;
4494
- var downloadName = modelName + ".xlsx";
4495
- a.download = downloadName;
4496
- // this adds support for IE and MS Edge (up to version 44.19041)
4497
- if (window.navigator && window.navigator.msSaveOrOpenBlob) {
4498
- window.navigator.msSaveOrOpenBlob(blob, downloadName);
4499
- }
4500
- else {
4501
- // for all other browsers
4502
- a.click();
4503
- }
4504
- window.URL.revokeObjectURL(objectUrl);
4505
- a.remove();
4506
- _this._loadingService.hideLoading();
4507
- }).catch(function (err) {
4508
- _this._loadingService.hideLoading();
4509
- _this._errorService.showError(err, {
4510
- continueLink: '.'
4511
- });
4512
- });
4513
- };
4514
- BtnExpDirective.decorators = [
4515
- { type: i0.Directive, args: [{
4516
- selector: '.universis-btn-export'
4517
- },] }
4518
- ];
4519
- /** @nocollapse */
4520
- BtnExpDirective.ctorParameters = function () {
4521
- return [
4522
- { type: ActivatedTableService },
4523
- { type: i1.AngularDataContext },
4524
- { type: i2.ConfigurationService },
4525
- { type: core.TranslateService },
4526
- { type: i2.LoadingService },
4527
- { type: i2.ErrorService }
4528
- ];
4529
- };
4530
- BtnExpDirective.propDecorators = {
4531
- clickEvent: [{ type: i0.HostListener, args: ['click', ['$event'],] }]
4532
- };
4533
- return BtnExpDirective;
4534
- }());
4535
-
4536
4728
  var AdvancedAggregatorService = /** @class */ (function () {
4537
4729
  function AdvancedAggregatorService(_context, _template) {
4538
4730
  this._context = _context;
@@ -5117,6 +5309,8 @@
5117
5309
  return ParseTitlePipe;
5118
5310
  }());
5119
5311
 
5312
+ // tslint:disable: quotemark
5313
+ // tslint:disable: max-line-length
5120
5314
  var TABLES_EL = {
5121
5315
  "Tables": {
5122
5316
  "Export": "Εξαγωγή",
@@ -5196,7 +5390,14 @@
5196
5390
  "MoveColumnHelp": "Χρησιμοποιήστε τα πλήκτρα 'Επάνω' και 'Κάτω' για να αλλάξετε την σειρά εμφάνισης των στηλών του πίνακα.",
5197
5391
  "UnknownColumn": "Άγνωστο",
5198
5392
  "SelectColumn": "Επιλογή",
5199
- "ActionLinkColumn": "Ενέργειες"
5393
+ "ActionLinkColumn": "Ενέργειες",
5394
+ "DataError": {
5395
+ "Title": "Σφάλμα κατά την παραλαβή των δεδομένων",
5396
+ "Message": "Συνέβη σφάλμα κατά την παραλαβή των δεδομένων. Προσπαθήστε ξανά ή τροποποιήστε τα στοιχεία αναζήτησης."
5397
+ },
5398
+ "ExportList": "Εξαγωγή λίστας",
5399
+ "ExportLimitExceeded": "Το πλήθος των στοιχείων προς εξαγωγή ({{dataLength}}) ξεπερνάει το μέγιστο επιτρεπτό ({{exportLimit}}). Παρακαλούμε προσαρμόστε τα φίλτρα της αναζήτησης και προσπαθήστε ξανά.",
5400
+ "ExportResults": "Δεδομένα λίστας"
5200
5401
  },
5201
5402
  "TrueFalse": {
5202
5403
  "long": {
@@ -5237,6 +5438,8 @@
5237
5438
  }
5238
5439
  };
5239
5440
 
5441
+ // tslint:disable: quotemark
5442
+ // tslint:disable: max-line-length
5240
5443
  var TABLES_EN = {
5241
5444
  "Tables": {
5242
5445
  "Export": "Export",
@@ -5315,7 +5518,14 @@
5315
5518
  "MoveColumnHelp": "Use 'Move up' and 'Move down' buttons to change column order.",
5316
5519
  "UnknownColumn": "Unknown",
5317
5520
  "SelectColumn": "Select",
5318
- "ActionLinkColumn": "Actions"
5521
+ "ActionLinkColumn": "Actions",
5522
+ "DataError": {
5523
+ "Title": "Error while getting data",
5524
+ "Message": "An error occurred while getting data. Please try again or change your criteria."
5525
+ },
5526
+ "ExportList": "Export list",
5527
+ "ExportLimitExceeded": "The number of items that are to be exported ({{dataLength}}) exceeds the export limit ({{exportLimit}}). Please apply more specific filters to the search.",
5528
+ "ExportResults": "Exported list"
5319
5529
  },
5320
5530
  "TrueFalse": {
5321
5531
  "long": {
@@ -5637,7 +5847,7 @@
5637
5847
  return AdvancedSearchRouterState;
5638
5848
  }(AdvancedSearchState));
5639
5849
 
5640
- var ɵ0 = FORMATTERS;
5850
+ var ɵ0$1 = FORMATTERS;
5641
5851
  var TablesModule = /** @class */ (function () {
5642
5852
  function TablesModule(_translateService) {
5643
5853
  this._translateService = _translateService;
@@ -5675,7 +5885,7 @@
5675
5885
  providers: [common.DatePipe, i2.TemplatePipe,
5676
5886
  {
5677
5887
  provide: COLUMN_FORMATTERS,
5678
- useValue: ɵ0
5888
+ useValue: ɵ0$1
5679
5889
  },
5680
5890
  AdvancedTableConfigurationResolver,
5681
5891
  AdvancedSearchConfigurationResolver,
@@ -5781,8 +5991,10 @@
5781
5991
  exports.NgClassFormatter = NgClassFormatter;
5782
5992
  exports.LanguageFormatter = LanguageFormatter;
5783
5993
  exports.COLUMN_FORMATTERS = COLUMN_FORMATTERS;
5994
+ exports.ExportLimitExceededError = ExportLimitExceededError;
5784
5995
  exports.AdvancedTableConfiguration = AdvancedTableConfiguration;
5785
5996
  exports.AdvancedTableComponent = AdvancedTableComponent;
5997
+ exports.ɵ0 = ɵ0;
5786
5998
  exports.AdvancedTableSettingsComponent = AdvancedTableSettingsComponent;
5787
5999
  exports.AdvancedTableSearchBaseComponent = AdvancedTableSearchBaseComponent;
5788
6000
  exports.AdvancedTableSearchComponent = AdvancedTableSearchComponent;
@@ -5794,6 +6006,7 @@
5794
6006
  exports.TableSimpleHeaderComponent = TableSimpleHeaderComponent;
5795
6007
  exports.AdvancedTableNotNullError = AdvancedTableNotNullError;
5796
6008
  exports.AdvancedTableEditorDirective = AdvancedTableEditorDirective;
6009
+ exports.MAX_EXPORT_ITEMS = MAX_EXPORT_ITEMS;
5797
6010
  exports.BtnExpDirective = BtnExpDirective;
5798
6011
  exports.AdvancedAggregatorComponent = AdvancedAggregatorComponent;
5799
6012
  exports.AdvancedAggregatorListComponent = AdvancedAggregatorListComponent;
@@ -5802,7 +6015,6 @@
5802
6015
  exports.ParseTitlePipe = ParseTitlePipe;
5803
6016
  exports.AdvancedAggregatorService = AdvancedAggregatorService;
5804
6017
  exports.TablesModule = TablesModule;
5805
- exports.ɵ0 = ɵ0;
5806
6018
  exports.ActivatedTableService = ActivatedTableService;
5807
6019
  exports.ColumnSelectorService = ColumnSelectorService;
5808
6020
  exports.ColumnSelectorComponent = ColumnSelectorComponent;