@sumaris-net/ngx-components 1.13.2 → 1.14.2
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.
- package/bundles/sumaris-net.ngx-components.umd.js +260 -50
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +5 -0
- package/esm2015/src/app/core/services/account.service.js +1 -3
- package/esm2015/src/app/core/services/config/core.config.js +7 -1
- package/esm2015/src/app/core/services/network.service.js +53 -4
- package/esm2015/src/app/core/services/network.utils.js +1 -1
- package/esm2015/src/app/core/services/platform.service.js +88 -5
- package/esm2015/src/app/shared/dates.js +24 -1
- package/esm2015/src/app/shared/http/http.utils.js +14 -2
- package/esm2015/src/app/shared/upload-file/upload-file.component.js +12 -7
- package/esm2015/src/app/shared/upload-file/upload-file.model.js +8 -1
- package/esm2015/src/app/shared/version/versions.js +5 -1
- package/esm2015/src/environments/environment.class.js +1 -1
- package/fesm2015/sumaris-net.ngx-components.js +198 -12
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +2 -1
- package/src/app/core/services/config/core.config.d.ts +1 -0
- package/src/app/core/services/network.service.d.ts +10 -1
- package/src/app/core/services/network.utils.d.ts +15 -0
- package/src/app/core/services/platform.service.d.ts +5 -0
- package/src/app/shared/dates.d.ts +7 -0
- package/src/app/shared/http/http.utils.d.ts +1 -0
- package/src/app/shared/upload-file/upload-file.model.d.ts +5 -3
- package/src/app/shared/version/versions.d.ts +2 -0
- package/src/assets/i18n/en-US.json +2 -5
- package/src/assets/i18n/en.json +2 -5
- package/src/assets/i18n/fr.json +4 -3
- package/src/assets/manifest.json +5 -5
- package/src/environments/environment.class.d.ts +1 -0
- package/src/theme/_responsive.scss +7 -3
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/src/assets/manifest.sumaris.json +0 -17
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/animations'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/animations', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.animations, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global.ng.cdk.textField, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"]));
|
|
5
|
-
})(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, animations, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('moment-timezone'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/animations'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', 'moment-timezone', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/animations', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global.momentTZImported, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.animations, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global.ng.cdk.textField, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"]));
|
|
5
|
+
})(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, i1$2, i1$5, momentImported, i1$1, momentTZImported, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, animations, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
var i1__namespace$4 = /*#__PURE__*/_interopNamespace(i1$5);
|
|
34
34
|
var momentImported__namespace = /*#__PURE__*/_interopNamespace(momentImported);
|
|
35
35
|
var i1__namespace = /*#__PURE__*/_interopNamespace(i1$1);
|
|
36
|
+
var momentTZImported__namespace = /*#__PURE__*/_interopNamespace(momentTZImported);
|
|
36
37
|
var i3__namespace$3 = /*#__PURE__*/_interopNamespace(i3);
|
|
37
38
|
var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$6);
|
|
38
39
|
var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$1);
|
|
@@ -2572,6 +2573,7 @@
|
|
|
2572
2573
|
];
|
|
2573
2574
|
|
|
2574
2575
|
var moment$5 = momentImported__namespace;
|
|
2576
|
+
var tz = momentTZImported__namespace;
|
|
2575
2577
|
var DATE_UNIX_TIMESTAMP = 'X';
|
|
2576
2578
|
var DATE_UNIX_MS_TIMESTAMP = 'x';
|
|
2577
2579
|
var DateUtils = /** @class */ (function () {
|
|
@@ -2594,6 +2596,27 @@
|
|
|
2594
2596
|
var d2 = fromDateISOString(date2);
|
|
2595
2597
|
return (!d1 && !d2) || d1.isSame(d2, granularity);
|
|
2596
2598
|
};
|
|
2599
|
+
/**
|
|
2600
|
+
* Create a copy of a date, without time fields (always return a new Moment object, or undefined).
|
|
2601
|
+
* Same implementation as the Java class Dates.resetTime() (see any SUMARiS like Pod)
|
|
2602
|
+
* @param value
|
|
2603
|
+
* @param timezone a timezone (see https://momentjs.com/timezone/)
|
|
2604
|
+
*/
|
|
2605
|
+
DateUtils.resetTime = function (value, timezone) {
|
|
2606
|
+
if (!value)
|
|
2607
|
+
return undefined;
|
|
2608
|
+
var date = fromDateISOString(value);
|
|
2609
|
+
// No timezone
|
|
2610
|
+
if (!timezone) {
|
|
2611
|
+
return date.clone().startOf('day');
|
|
2612
|
+
}
|
|
2613
|
+
// Use timezone
|
|
2614
|
+
return moment$5.tz(timezone)
|
|
2615
|
+
.set('year', date.get('year'))
|
|
2616
|
+
.set('month', date.get('month'))
|
|
2617
|
+
.set('day', date.get('day'))
|
|
2618
|
+
.startOf('day');
|
|
2619
|
+
};
|
|
2597
2620
|
return DateUtils;
|
|
2598
2621
|
}());
|
|
2599
2622
|
function toDateISOString(value) {
|
|
@@ -11206,7 +11229,18 @@
|
|
|
11206
11229
|
switch (_a.label) {
|
|
11207
11230
|
case 0:
|
|
11208
11231
|
// Add headers
|
|
11209
|
-
opts = Object.assign({}, opts
|
|
11232
|
+
opts = Object.assign({}, opts
|
|
11233
|
+
//headers: new HttpHeaders(),
|
|
11234
|
+
//.append('X-App-Name', environment.name)
|
|
11235
|
+
//.append('X-App-Version', environment.version),
|
|
11236
|
+
);
|
|
11237
|
+
// Force no cache
|
|
11238
|
+
if (opts.nocache === true) {
|
|
11239
|
+
opts.headers = (opts.headers instanceof i2$1.HttpHeaders ? opts.headers : new i2$1.HttpHeaders(opts.headers));
|
|
11240
|
+
opts.headers
|
|
11241
|
+
.append('Cache-Control', 'no-cache')
|
|
11242
|
+
.append('Pragma', 'no-cache');
|
|
11243
|
+
}
|
|
11210
11244
|
_a.label = 1;
|
|
11211
11245
|
case 1:
|
|
11212
11246
|
_a.trys.push([1, 3, , 4]);
|
|
@@ -11264,6 +11298,7 @@
|
|
|
11264
11298
|
}());
|
|
11265
11299
|
VersionUtils.compare = compareVersionNumbers;
|
|
11266
11300
|
VersionUtils.isCompatible = isVersionCompatible;
|
|
11301
|
+
VersionUtils.isSame = isSameVersion;
|
|
11267
11302
|
/**
|
|
11268
11303
|
* Compare two software version numbers (e.g. 1.7.1)
|
|
11269
11304
|
* Returns:
|
|
@@ -11332,6 +11367,9 @@
|
|
|
11332
11367
|
//console.debug(`[http] Checking actual version {${actualVersion}} is compatible with min expected version {${minVersion}}`);
|
|
11333
11368
|
return compareVersionNumbers(minVersion, actualVersion) <= 0;
|
|
11334
11369
|
}
|
|
11370
|
+
function isSameVersion(v1, v2) {
|
|
11371
|
+
return compareVersionNumbers(v1, v2) === 0;
|
|
11372
|
+
}
|
|
11335
11373
|
|
|
11336
11374
|
var SelectPeerModal = /** @class */ (function () {
|
|
11337
11375
|
function SelectPeerModal(viewCtrl, cd, http, environment) {
|
|
@@ -12470,15 +12508,81 @@
|
|
|
12470
12508
|
});
|
|
12471
12509
|
};
|
|
12472
12510
|
NetworkService.prototype.getNodeInfo = function (peer) {
|
|
12511
|
+
var path = this.computePeerPath(peer, '/api/node/info');
|
|
12512
|
+
return this.get(path);
|
|
12513
|
+
};
|
|
12514
|
+
NetworkService.prototype.getAppManifest = function (peer, opts) {
|
|
12515
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
12516
|
+
var path, err_3;
|
|
12517
|
+
return __generator(this, function (_b) {
|
|
12518
|
+
switch (_b.label) {
|
|
12519
|
+
case 0:
|
|
12520
|
+
_b.trys.push([0, 2, , 3]);
|
|
12521
|
+
path = this.computePeerPath(peer, 'manifest.json');
|
|
12522
|
+
if (opts === null || opts === void 0 ? void 0 : opts.nocache) {
|
|
12523
|
+
path += '?t=' + Date.now();
|
|
12524
|
+
}
|
|
12525
|
+
return [4 /*yield*/, this.get(path, opts)];
|
|
12526
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
12527
|
+
case 2:
|
|
12528
|
+
err_3 = _b.sent();
|
|
12529
|
+
if (this.environment.production)
|
|
12530
|
+
console.error('[network] Cannot load file \'manifest.json\'. Please make sure webserver config allow CORS access', err_3);
|
|
12531
|
+
else
|
|
12532
|
+
console.error('[network] Cannot load file \'manifest.json\'.', err_3);
|
|
12533
|
+
return [3 /*break*/, 3];
|
|
12534
|
+
case 3: return [2 /*return*/];
|
|
12535
|
+
}
|
|
12536
|
+
});
|
|
12537
|
+
});
|
|
12538
|
+
};
|
|
12539
|
+
NetworkService.prototype.getAppVersion = function (peer, opts) {
|
|
12540
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
12541
|
+
var path, appVersion, err_4, manifest;
|
|
12542
|
+
return __generator(this, function (_b) {
|
|
12543
|
+
switch (_b.label) {
|
|
12544
|
+
case 0:
|
|
12545
|
+
_b.trys.push([0, 2, , 3]);
|
|
12546
|
+
path = this.computePeerPath(peer, 'version.appup');
|
|
12547
|
+
if (opts === null || opts === void 0 ? void 0 : opts.nocache) {
|
|
12548
|
+
path += '?t=' + Date.now();
|
|
12549
|
+
}
|
|
12550
|
+
return [4 /*yield*/, this.get(path, opts)];
|
|
12551
|
+
case 1:
|
|
12552
|
+
appVersion = _b.sent();
|
|
12553
|
+
if (isNotNilOrBlank(appVersion))
|
|
12554
|
+
return [2 /*return*/, appVersion];
|
|
12555
|
+
return [3 /*break*/, 3];
|
|
12556
|
+
case 2:
|
|
12557
|
+
err_4 = _b.sent();
|
|
12558
|
+
if (this.environment.production)
|
|
12559
|
+
console.error('[network] Cannot load file \'version.appup\'. Please make sure webserver config allow CORS access');
|
|
12560
|
+
else
|
|
12561
|
+
console.error('[network] Cannot load file \'version.appup\'.', err_4);
|
|
12562
|
+
return [3 /*break*/, 3];
|
|
12563
|
+
case 3: return [4 /*yield*/, this.getAppManifest(peer, opts)];
|
|
12564
|
+
case 4:
|
|
12565
|
+
manifest = _b.sent();
|
|
12566
|
+
return [2 /*return*/, manifest === null || manifest === void 0 ? void 0 : manifest.version];
|
|
12567
|
+
}
|
|
12568
|
+
});
|
|
12569
|
+
});
|
|
12570
|
+
};
|
|
12571
|
+
NetworkService.prototype.computePeerPath = function (peer, path) {
|
|
12473
12572
|
peer = peer || this.peer;
|
|
12474
12573
|
if (!peer)
|
|
12475
12574
|
return undefined;
|
|
12476
|
-
var peerUrl =
|
|
12575
|
+
var peerUrl = (peer instanceof exports.Peer) ? peer.url : peer;
|
|
12477
12576
|
// Remove trailing slash
|
|
12478
12577
|
if (peerUrl.endsWith('/')) {
|
|
12479
12578
|
peerUrl = peerUrl.substr(0, peerUrl.length - 1);
|
|
12480
12579
|
}
|
|
12481
|
-
|
|
12580
|
+
// Add first path
|
|
12581
|
+
if (!path.startsWith('/')) {
|
|
12582
|
+
path = '/' + path;
|
|
12583
|
+
}
|
|
12584
|
+
// Concat peer URL and path
|
|
12585
|
+
return peerUrl + path;
|
|
12482
12586
|
};
|
|
12483
12587
|
/**
|
|
12484
12588
|
* Allow to force offline mode
|
|
@@ -15860,8 +15964,6 @@
|
|
|
15860
15964
|
};
|
|
15861
15965
|
AccountService.prototype.canUserWriteDataForDepartment = function (recorderDepartment) {
|
|
15862
15966
|
if (ReferentialUtils.isEmpty(recorderDepartment)) {
|
|
15863
|
-
if (!this.isAdmin())
|
|
15864
|
-
console.warn('Unable to check if user has right: invalid recorderDepartment', recorderDepartment);
|
|
15865
15967
|
return this.isAdmin();
|
|
15866
15968
|
}
|
|
15867
15969
|
// Should be login, and status ENABLE
|
|
@@ -17167,6 +17269,12 @@
|
|
|
17167
17269
|
key: 'sumaris.android.install.url',
|
|
17168
17270
|
label: 'CONFIGURATION.OPTIONS.ANDROID_INSTALL_URL',
|
|
17169
17271
|
type: 'string'
|
|
17272
|
+
},
|
|
17273
|
+
DB_TIMEZONE: {
|
|
17274
|
+
key: 'sumaris.persistence.db.timezone',
|
|
17275
|
+
label: 'DB Timezone (readonly)',
|
|
17276
|
+
type: 'string',
|
|
17277
|
+
isTransient: true // ONly on server, cannot be set
|
|
17170
17278
|
}
|
|
17171
17279
|
});
|
|
17172
17280
|
|
|
@@ -17656,18 +17764,19 @@
|
|
|
17656
17764
|
return this.platform.height();
|
|
17657
17765
|
};
|
|
17658
17766
|
PlatformService.prototype.ngOnStart = function () {
|
|
17767
|
+
var _a;
|
|
17659
17768
|
return __awaiter(this, void 0, void 0, function () {
|
|
17660
|
-
var now, storage, err_1;
|
|
17769
|
+
var now, storage, checkIntervalMs, err_1;
|
|
17661
17770
|
var _this = this;
|
|
17662
|
-
return __generator(this, function (
|
|
17663
|
-
switch (
|
|
17771
|
+
return __generator(this, function (_d) {
|
|
17772
|
+
switch (_d.label) {
|
|
17664
17773
|
case 0:
|
|
17665
17774
|
now = Date.now();
|
|
17666
17775
|
this.accountService.tokenType = undefined;
|
|
17667
17776
|
console.info('[platform] Starting platform...');
|
|
17668
|
-
|
|
17777
|
+
_d.label = 1;
|
|
17669
17778
|
case 1:
|
|
17670
|
-
|
|
17779
|
+
_d.trys.push([1, 8, , 9]);
|
|
17671
17780
|
this._mobile = this.is('mobile');
|
|
17672
17781
|
this._cordova = this.is('cordova');
|
|
17673
17782
|
this._android = this.is('android');
|
|
@@ -17679,13 +17788,13 @@
|
|
|
17679
17788
|
return [4 /*yield*/, this.configureTranslate()];
|
|
17680
17789
|
case 2:
|
|
17681
17790
|
// Configure translation
|
|
17682
|
-
|
|
17791
|
+
_d.sent();
|
|
17683
17792
|
return [4 /*yield*/, this.storageReady()];
|
|
17684
17793
|
case 3:
|
|
17685
|
-
storage =
|
|
17794
|
+
storage = _d.sent();
|
|
17686
17795
|
return [4 /*yield*/, this.migrateStorage(storage)];
|
|
17687
17796
|
case 4:
|
|
17688
|
-
|
|
17797
|
+
_d.sent();
|
|
17689
17798
|
// Start root services
|
|
17690
17799
|
return [4 /*yield*/, Promise.all([
|
|
17691
17800
|
this.entitiesStorage.ready(),
|
|
@@ -17696,12 +17805,19 @@
|
|
|
17696
17805
|
])];
|
|
17697
17806
|
case 5:
|
|
17698
17807
|
// Start root services
|
|
17699
|
-
|
|
17700
|
-
|
|
17808
|
+
_d.sent();
|
|
17809
|
+
if (!(this.isWeb() && this.environment.production)) return [3 /*break*/, 7];
|
|
17810
|
+
return [4 /*yield*/, this.checkAppVersion({ canReload: true })];
|
|
17811
|
+
case 6:
|
|
17812
|
+
_d.sent();
|
|
17813
|
+
_d.label = 7;
|
|
17814
|
+
case 7:
|
|
17701
17815
|
// Update cache configuration when network changed
|
|
17702
17816
|
this.networkService.onNetworkStatusChanges
|
|
17703
|
-
.pipe(operators.skip(1)
|
|
17817
|
+
.pipe(operators.skip(1) // Olready done once, so we skip the first event
|
|
17818
|
+
)
|
|
17704
17819
|
.subscribe(function (type) { return _this.configureCache(type !== 'none'); });
|
|
17820
|
+
console.info("[platform] Starting platform [OK] {mobile: " + this._mobile + ", web: " + this.isWeb() + ", downloader: " + this.canDownload + ", fileOpener: " + this.canOpenFile + "} in " + (Date.now() - now) + "ms");
|
|
17705
17821
|
// Update authentication type
|
|
17706
17822
|
this.configService.config
|
|
17707
17823
|
.pipe(operators.map(function (config) { return config === null || config === void 0 ? void 0 : config.getProperty(CORE_CONFIG_OPTIONS.AUTH_TOKEN_TYPE); }), operators.filter(isNotNilOrBlank), operators.distinctUntilChanged())
|
|
@@ -17718,12 +17834,19 @@
|
|
|
17718
17834
|
_this.audioProvider.playStartupSound();
|
|
17719
17835
|
}, 1000);
|
|
17720
17836
|
}
|
|
17721
|
-
|
|
17722
|
-
|
|
17723
|
-
|
|
17837
|
+
checkIntervalMs = (this.environment.checkAppVersionIntervalInSeconds || 0) * 1000;
|
|
17838
|
+
if (this.isWeb() && this.environment.production && checkIntervalMs > 0) {
|
|
17839
|
+
(_a = this.checkAppVersionTimer) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
17840
|
+
this.checkAppVersionTimer = rxjs.timer(checkIntervalMs, checkIntervalMs)
|
|
17841
|
+
.subscribe(function (_) { return _this.checkAppVersion({ silent: true, canReload: false /*do NOT auto reload, when app is started*/ }); });
|
|
17842
|
+
this.registerSubscription(this.checkAppVersionTimer);
|
|
17843
|
+
}
|
|
17844
|
+
return [3 /*break*/, 9];
|
|
17845
|
+
case 8:
|
|
17846
|
+
err_1 = _d.sent();
|
|
17724
17847
|
// Manage startup error
|
|
17725
17848
|
return [2 /*return*/, this.onStartupError(err_1)];
|
|
17726
|
-
case
|
|
17849
|
+
case 9: return [2 /*return*/];
|
|
17727
17850
|
}
|
|
17728
17851
|
});
|
|
17729
17852
|
});
|
|
@@ -17844,16 +17967,89 @@
|
|
|
17844
17967
|
this.cache.setDefaultTTL(cacheTTL);
|
|
17845
17968
|
this.cache.setOfflineInvalidate(false); // Do not invalidate cache when offline
|
|
17846
17969
|
};
|
|
17970
|
+
PlatformService.prototype.checkAppVersion = function (opts) {
|
|
17971
|
+
var _a, _b, _c;
|
|
17972
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
17973
|
+
var silent, production, canAutoReload, actualVersion, peer, remoteVersion, reloadPath;
|
|
17974
|
+
return __generator(this, function (_d) {
|
|
17975
|
+
switch (_d.label) {
|
|
17976
|
+
case 0:
|
|
17977
|
+
if (this.networkService.offline || !this.isWeb())
|
|
17978
|
+
return [2 /*return*/]; // Skip
|
|
17979
|
+
silent = (opts === null || opts === void 0 ? void 0 : opts.silent) === true;
|
|
17980
|
+
production = this.environment.production;
|
|
17981
|
+
canAutoReload = !opts || opts.canReload !== false;
|
|
17982
|
+
if (!silent)
|
|
17983
|
+
console.info('[platform] Checking remote app version...');
|
|
17984
|
+
actualVersion = this.environment.version;
|
|
17985
|
+
if (isNilOrBlank(actualVersion)) {
|
|
17986
|
+
console.error('[platform] Missing required value for \'environment.version\'. Cannot check remote app version.');
|
|
17987
|
+
(_a = this.checkAppVersionTimer) === null || _a === void 0 ? void 0 : _a.unsubscribe(); // Stop timer if exists
|
|
17988
|
+
return [2 /*return*/]; // Skip
|
|
17989
|
+
}
|
|
17990
|
+
peer = undefined;
|
|
17991
|
+
return [4 /*yield*/, this.networkService.getAppVersion(peer)];
|
|
17992
|
+
case 1:
|
|
17993
|
+
remoteVersion = _d.sent();
|
|
17994
|
+
if (isNilOrBlank(remoteVersion)) {
|
|
17995
|
+
if (production && !silent)
|
|
17996
|
+
console.error('[platform] Cannot load remote app version. Skipping version check');
|
|
17997
|
+
(_b = this.checkAppVersionTimer) === null || _b === void 0 ? void 0 : _b.unsubscribe(); // Stop timer if exists
|
|
17998
|
+
return [2 /*return*/];
|
|
17999
|
+
}
|
|
18000
|
+
if (VersionUtils.isCompatible(remoteVersion, actualVersion)) {
|
|
18001
|
+
if (!silent)
|
|
18002
|
+
console.info('[platform] Checking remote app version [OK]');
|
|
18003
|
+
return [2 /*return*/];
|
|
18004
|
+
}
|
|
18005
|
+
reloadPath = location.href.replace(/[&]?version=[0-9.]+/gi, '');
|
|
18006
|
+
reloadPath += (reloadPath.indexOf('?') === -1) ? '?' : '&'; // Add query param separator
|
|
18007
|
+
reloadPath += 'version=' + remoteVersion; // Add version (to avoid a reload infinite loop)
|
|
18008
|
+
// Already try to reload, but version still bad
|
|
18009
|
+
if (reloadPath === location.href) {
|
|
18010
|
+
if (canAutoReload)
|
|
18011
|
+
console.error("[platform] Reloaded page failed, because version still mismatch! Please check version.appup file (expected app version: " + actualVersion + ")");
|
|
18012
|
+
// Stop timer, to avoid infinite loop
|
|
18013
|
+
(_c = this.checkAppVersionTimer) === null || _c === void 0 ? void 0 : _c.unsubscribe();
|
|
18014
|
+
return [2 /*return*/];
|
|
18015
|
+
}
|
|
18016
|
+
console.warn("[platform] More recent version detected (remote: " + remoteVersion + ", actual: " + actualVersion);
|
|
18017
|
+
if (!canAutoReload) return [3 /*break*/, 2];
|
|
18018
|
+
console.info('[platform] Will reloading at ' + reloadPath);
|
|
18019
|
+
location.href = reloadPath;
|
|
18020
|
+
return [3 /*break*/, 4];
|
|
18021
|
+
case 2: return [4 /*yield*/, this.showToast({
|
|
18022
|
+
message: 'CONFIRM.RELOAD_APP',
|
|
18023
|
+
messageParams: { version: remoteVersion, name: this.environment.name },
|
|
18024
|
+
type: 'info', duration: -1,
|
|
18025
|
+
buttons: [
|
|
18026
|
+
// Reload button
|
|
18027
|
+
{ text: this.translate.instant('COMMON.BTN_RELOAD'),
|
|
18028
|
+
side: 'end', handler: function () {
|
|
18029
|
+
location.href = reloadPath;
|
|
18030
|
+
return true;
|
|
18031
|
+
}
|
|
18032
|
+
}
|
|
18033
|
+
]
|
|
18034
|
+
})];
|
|
18035
|
+
case 3:
|
|
18036
|
+
_d.sent();
|
|
18037
|
+
_d.label = 4;
|
|
18038
|
+
case 4: return [2 /*return*/];
|
|
18039
|
+
}
|
|
18040
|
+
});
|
|
18041
|
+
});
|
|
18042
|
+
};
|
|
17847
18043
|
PlatformService.prototype.storageReady = function () {
|
|
17848
18044
|
return __awaiter(this, void 0, void 0, function () {
|
|
17849
18045
|
var forage, driver;
|
|
17850
|
-
return __generator(this, function (
|
|
17851
|
-
switch (
|
|
18046
|
+
return __generator(this, function (_d) {
|
|
18047
|
+
switch (_d.label) {
|
|
17852
18048
|
case 0:
|
|
17853
18049
|
console.info("[platform] Starting storage...");
|
|
17854
18050
|
return [4 /*yield*/, this.storage.ready()];
|
|
17855
18051
|
case 1:
|
|
17856
|
-
forage =
|
|
18052
|
+
forage = _d.sent();
|
|
17857
18053
|
driver = forage.driver();
|
|
17858
18054
|
if (isNil(driver)) {
|
|
17859
18055
|
console.error('[platform] NO DRIVER DEFINED IN STORAGE. Local storage cannot be used !');
|
|
@@ -17869,8 +18065,8 @@
|
|
|
17869
18065
|
PlatformService.prototype.migrateStorage = function (storage) {
|
|
17870
18066
|
return __awaiter(this, void 0, void 0, function () {
|
|
17871
18067
|
var canMigrate, oldForage, keys, now, toast_1, duration, err_2;
|
|
17872
|
-
return __generator(this, function (
|
|
17873
|
-
switch (
|
|
18068
|
+
return __generator(this, function (_d) {
|
|
18069
|
+
switch (_d.label) {
|
|
17874
18070
|
case 0:
|
|
17875
18071
|
canMigrate = storage &&
|
|
17876
18072
|
((storage.driver() === 'cordovaSQLiteDriver' && (storage.supports(storage.INDEXEDDB) || storage.supports(storage.WEBSQL))) ||
|
|
@@ -17884,26 +18080,26 @@
|
|
|
17884
18080
|
});
|
|
17885
18081
|
return [4 /*yield*/, oldForage.keys()];
|
|
17886
18082
|
case 1:
|
|
17887
|
-
keys =
|
|
18083
|
+
keys = _d.sent();
|
|
17888
18084
|
if (!isEmptyArray(keys)) return [3 /*break*/, 3];
|
|
17889
18085
|
// Drop the old instance (not need anymore)
|
|
17890
18086
|
console.debug("[platform] Old storage is empty: dropping unused instance {name: '" + storage.config().name + "', driver: '" + oldForage.driver() + "'}");
|
|
17891
18087
|
return [4 /*yield*/, oldForage.dropInstance()];
|
|
17892
18088
|
case 2:
|
|
17893
|
-
|
|
18089
|
+
_d.sent();
|
|
17894
18090
|
return [3 /*break*/, 12];
|
|
17895
18091
|
case 3:
|
|
17896
18092
|
now = Date.now();
|
|
17897
18093
|
console.info("[platform] Starting storage migration...");
|
|
17898
18094
|
return [4 /*yield*/, this.showToast({ message: 'INFO.DATA_MIGRATION_STARTED', type: 'info', duration: 30000 })];
|
|
17899
18095
|
case 4:
|
|
17900
|
-
toast_1 =
|
|
17901
|
-
|
|
18096
|
+
toast_1 = _d.sent();
|
|
18097
|
+
_d.label = 5;
|
|
17902
18098
|
case 5:
|
|
17903
|
-
|
|
18099
|
+
_d.trys.push([5, 9, , 12]);
|
|
17904
18100
|
return [4 /*yield*/, StorageUtils.copy(oldForage, storage, { keys: keys, deleteAfterCopy: false })];
|
|
17905
18101
|
case 6:
|
|
17906
|
-
|
|
18102
|
+
_d.sent();
|
|
17907
18103
|
duration = Date.now() - now;
|
|
17908
18104
|
setTimeout(function () { return toast_1.dismiss(); }, Math.max(2000 - duration, 0));
|
|
17909
18105
|
return [4 /*yield*/, this.showToast({ message: 'INFO.DATA_MIGRATION_SUCCEED',
|
|
@@ -17911,26 +18107,26 @@
|
|
|
17911
18107
|
showCloseButton: true
|
|
17912
18108
|
})];
|
|
17913
18109
|
case 7:
|
|
17914
|
-
|
|
18110
|
+
_d.sent();
|
|
17915
18111
|
console.info('[platform] Starting storage migration [OK]');
|
|
17916
18112
|
// Drop the old instance
|
|
17917
18113
|
console.info("[platform] Drop old storage {name: '" + storage.config().name + "', driver: '" + oldForage.driver() + "'}");
|
|
17918
18114
|
return [4 /*yield*/, oldForage.dropInstance()];
|
|
17919
18115
|
case 8:
|
|
17920
|
-
|
|
18116
|
+
_d.sent();
|
|
17921
18117
|
return [3 /*break*/, 12];
|
|
17922
18118
|
case 9:
|
|
17923
|
-
err_2 =
|
|
18119
|
+
err_2 = _d.sent();
|
|
17924
18120
|
console.error(err_2 && err_2.message || err_2, err_2);
|
|
17925
18121
|
return [4 /*yield*/, toast_1.dismiss()];
|
|
17926
18122
|
case 10:
|
|
17927
|
-
|
|
18123
|
+
_d.sent();
|
|
17928
18124
|
return [4 /*yield*/, this.showToast({ message: 'ERROR.DATA_MIGRATION_FAILED',
|
|
17929
18125
|
type: 'error',
|
|
17930
18126
|
showCloseButton: true
|
|
17931
18127
|
})];
|
|
17932
18128
|
case 11:
|
|
17933
|
-
|
|
18129
|
+
_d.sent();
|
|
17934
18130
|
return [3 /*break*/, 12];
|
|
17935
18131
|
case 12: return [2 /*return*/];
|
|
17936
18132
|
}
|
|
@@ -17946,8 +18142,8 @@
|
|
|
17946
18142
|
PlatformService.prototype.onStartupError = function (err) {
|
|
17947
18143
|
return __awaiter(this, void 0, void 0, function () {
|
|
17948
18144
|
var message, detailsMessage;
|
|
17949
|
-
return __generator(this, function (
|
|
17950
|
-
switch (
|
|
18145
|
+
return __generator(this, function (_d) {
|
|
18146
|
+
switch (_d.label) {
|
|
17951
18147
|
case 0:
|
|
17952
18148
|
console.error('[platform] Failed starting the platform! ', err);
|
|
17953
18149
|
message = err && err.message || err;
|
|
@@ -17959,14 +18155,14 @@
|
|
|
17959
18155
|
if (!this.translate) return [3 /*break*/, 2];
|
|
17960
18156
|
return [4 /*yield*/, this.translate.get(message).toPromise()];
|
|
17961
18157
|
case 1:
|
|
17962
|
-
message =
|
|
18158
|
+
message = _d.sent();
|
|
17963
18159
|
if (err && err.code) {
|
|
17964
18160
|
message += " {code: " + err.code + "}";
|
|
17965
18161
|
}
|
|
17966
18162
|
return [3 /*break*/, 3];
|
|
17967
18163
|
case 2:
|
|
17968
18164
|
message = "Fatal error: Please contact your administrator.\n\n{code: " + (err && err.code || 'null') + ", message: \"" + message + "\"}";
|
|
17969
|
-
|
|
18165
|
+
_d.label = 3;
|
|
17970
18166
|
case 3:
|
|
17971
18167
|
if (!this.toastController) return [3 /*break*/, 5];
|
|
17972
18168
|
if (detailsMessage) {
|
|
@@ -17979,7 +18175,7 @@
|
|
|
17979
18175
|
message: message
|
|
17980
18176
|
})];
|
|
17981
18177
|
case 4:
|
|
17982
|
-
|
|
18178
|
+
_d.sent();
|
|
17983
18179
|
return [3 /*break*/, 6];
|
|
17984
18180
|
case 5:
|
|
17985
18181
|
if (window) {
|
|
@@ -17993,7 +18189,7 @@
|
|
|
17993
18189
|
if (err && err.details)
|
|
17994
18190
|
console.error('cause', err.details);
|
|
17995
18191
|
}
|
|
17996
|
-
|
|
18192
|
+
_d.label = 6;
|
|
17997
18193
|
case 6: return [2 /*return*/];
|
|
17998
18194
|
}
|
|
17999
18195
|
});
|
|
@@ -18123,6 +18319,13 @@
|
|
|
18123
18319
|
}
|
|
18124
18320
|
return FileResponse;
|
|
18125
18321
|
}());
|
|
18322
|
+
function isProgressEvent(event) {
|
|
18323
|
+
return event.type === i2$1.HttpEventType.UploadProgress
|
|
18324
|
+
|| event.type === i2$1.HttpEventType.DownloadProgress;
|
|
18325
|
+
}
|
|
18326
|
+
function isResponseEvent(event) {
|
|
18327
|
+
return event.type === i2$1.HttpEventType.Response;
|
|
18328
|
+
}
|
|
18126
18329
|
|
|
18127
18330
|
var UploadFileComponent = /** @class */ (function () {
|
|
18128
18331
|
function UploadFileComponent(cd, translate) {
|
|
@@ -18289,7 +18492,7 @@
|
|
|
18289
18492
|
operators.switchMap(function (file) { return _this.uploadFn(file)
|
|
18290
18493
|
.pipe(operators.map(function (event) {
|
|
18291
18494
|
// Progress event
|
|
18292
|
-
if ((event
|
|
18495
|
+
if (isProgressEvent(event)) {
|
|
18293
18496
|
if (isNotNil(event.loaded) && event.loaded >= 0) {
|
|
18294
18497
|
file.progress = Math.min(1, event.loaded / (event.total || 1));
|
|
18295
18498
|
}
|
|
@@ -18297,15 +18500,20 @@
|
|
|
18297
18500
|
file.progress = -1; // Indeterminate progression
|
|
18298
18501
|
}
|
|
18299
18502
|
}
|
|
18503
|
+
// User event
|
|
18504
|
+
else if (event.type === i2$1.HttpEventType.User) {
|
|
18505
|
+
file.progress = -1; // Indeterminate progression
|
|
18506
|
+
}
|
|
18300
18507
|
// Response event
|
|
18301
|
-
else if (event
|
|
18508
|
+
else if (isResponseEvent(event)) {
|
|
18302
18509
|
file.progress = 1;
|
|
18303
18510
|
file.response = event;
|
|
18304
18511
|
console.debug("[upload-file] " + file.name + ": " + (event.statusText || 'OK'), file.response);
|
|
18305
18512
|
}
|
|
18306
|
-
// Other events
|
|
18513
|
+
// Other events: ignore
|
|
18307
18514
|
else {
|
|
18308
|
-
|
|
18515
|
+
// DEBUG
|
|
18516
|
+
console.debug('[upload-file] Ignoring a file event: ', event);
|
|
18309
18517
|
}
|
|
18310
18518
|
return file;
|
|
18311
18519
|
}), operators.catchError(function (err) {
|
|
@@ -31136,6 +31344,8 @@
|
|
|
31136
31344
|
exports.isNotNilString = isNotNilString;
|
|
31137
31345
|
exports.isNumber = isNumber;
|
|
31138
31346
|
exports.isNumberRange = isNumberRange;
|
|
31347
|
+
exports.isProgressEvent = isProgressEvent;
|
|
31348
|
+
exports.isResponseEvent = isResponseEvent;
|
|
31139
31349
|
exports.isTouchUi = isTouchUi;
|
|
31140
31350
|
exports.isWindow = isWindow;
|
|
31141
31351
|
exports.joinProperties = joinProperties;
|