@sumaris-net/ngx-components 1.10.0 → 1.10.3
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 +62 -56
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +4 -0
- package/esm2015/src/app/core/core.module.js +7 -3
- package/esm2015/src/app/core/form/entity-editor.class.js +17 -15
- package/esm2015/src/app/core/services/account.service.js +21 -24
- package/esm2015/src/app/core/services/base-entity-service.class.js +3 -3
- package/esm2015/src/app/core/table/table.class.js +31 -19
- package/esm2015/src/environments/environment.js +3 -3
- package/fesm2015/sumaris-net.ngx-components.js +71 -57
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/core.module.d.ts +2 -1
- package/src/app/core/form/entity-editor.class.d.ts +9 -5
- package/src/app/core/services/account.service.d.ts +3 -2
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -64,11 +64,11 @@ export const environment = Object.freeze({
|
|
|
64
64
|
},
|
|
65
65
|
account: {
|
|
66
66
|
enableListenChanges: true,
|
|
67
|
-
listenIntervalInSeconds:
|
|
67
|
+
listenIntervalInSeconds: 60
|
|
68
68
|
},
|
|
69
69
|
entityEditor: {
|
|
70
70
|
enableListenChanges: true,
|
|
71
|
-
listenIntervalInSeconds:
|
|
71
|
+
listenIntervalInSeconds: 60
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
/*
|
|
@@ -78,4 +78,4 @@ export const environment = Object.freeze({
|
|
|
78
78
|
* because it will have performance impact when throw error
|
|
79
79
|
*/
|
|
80
80
|
import 'zone.js/dist/zone-error';
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBSWhFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwRCxJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLElBQUk7SUFDbkIsb0JBQW9CLEVBQUUsTUFBTTtJQUM1QixpQkFBaUIsRUFBRSxhQUFhO0lBRWhDLHNCQUFzQjtJQUN0QixZQUFZLEVBQUUsS0FBSztJQUVuQix3QkFBd0I7SUFDeEIsZ0JBQWdCO0lBRWhCLGNBQWMsRUFBRSxPQUFPO0lBRXZCLFlBQVksRUFBRTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLEVBQUU7U0FDVDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO0tBQ0Y7SUFDRCxjQUFjLEVBQUUsU0FBUztJQUN6Qix3QkFBd0IsRUFBRSwrREFBK0Q7SUFFekYsVUFBVTtJQUNWLE9BQU8sRUFBRTtRQUNQLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUVELFFBQVE7SUFDUixTQUFTLEVBQUUscUVBQXFFO0lBQ2hGLGNBQWMsRUFBRSw4RUFBOEU7SUFDOUYsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxPQUFPLEVBQUUsZ0dBQWdHO0lBRXpHLGNBQWM7SUFDZCxpQkFBaUIsRUFBRTtRQUVqQixxQ0FBcUM7UUFDckMsd0NBQXdDO1FBRXhDLG1DQUFtQztRQUNuQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE9BQU87S0FDakQ7SUFFRCxPQUFPLEVBQUU7UUFDUCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7Q0FDRixDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE9BQU8seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY2FuIGJlIHJlcGxhY2VkIGR1cmluZyBidWlsZCBieSB1c2luZyB0aGUgYGZpbGVSZXBsYWNlbWVudHNgIGFycmF5LlxuLy8gYG5nIGJ1aWxkIC0tLXByb2RgIHJlcGxhY2VzIGBlbnZpcm9ubWVudC50c2Agd2l0aCBgZW52aXJvbm1lbnQucHJvZC50c2AuXG4vLyBUaGUgbGlzdCBvZiBmaWxlIHJlcGxhY2VtZW50cyBjYW4gYmUgZm91bmQgaW4gYGFuZ3VsYXIuanNvbmAuXG5cbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gT2JqZWN0LmZyZWV6ZSh7XG4gIG5hbWU6ICdAc3VtYXJpcy1uZXQvbmd4LWNvbXBvbmVudHMnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG4gIHZlcnNpb246IHVuZGVmaW5lZCwgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICBwcm9kdWN0aW9uOiB0cnVlLCAvLyBsZXQgdG8gdHJ1ZSAhIGJlY2F1c2UgdXNlZCBieSBwYWNrYWdlclxuICBiYXNlVXJsOiAnLycsXG4gIGRlZmF1bHRMb2NhbGU6ICdmcicsXG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0OiAnRERNTScsXG4gIGFwb2xsb0ZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnLFxuXG4gIC8vIEZJWE1FOiBlbmFibGUgY2FjaGVcbiAgcGVyc2lzdENhY2hlOiBmYWxzZSxcblxuICAvLyBUT0RPOiBtYWtlIHRoaXMgd29ya3NcbiAgLy9vZmZsaW5lOiB0cnVlLFxuXG4gIHBlZXJNaW5WZXJzaW9uOiAnMS44LjAnLFxuXG4gIGRlZmF1bHRQZWVyczogW1xuICAgIHtcbiAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA4MDgxXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODBcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMjQnLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC4yOScsXG4gICAgICBwb3J0OiA4MDgwXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2loLnNmYS5zYycsXG4gICAgICBwb3J0OiA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3Rlc3Quc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzXG4gICAgfVxuICBdLFxuICBkZWZhdWx0QXBwTmFtZTogJ1NVTUFSaVMnLFxuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw6ICdodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBSWhFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwRCxJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLElBQUk7SUFDbkIsb0JBQW9CLEVBQUUsTUFBTTtJQUM1QixpQkFBaUIsRUFBRSxhQUFhO0lBRWhDLHNCQUFzQjtJQUN0QixZQUFZLEVBQUUsS0FBSztJQUVuQix3QkFBd0I7SUFDeEIsZ0JBQWdCO0lBRWhCLGNBQWMsRUFBRSxPQUFPO0lBRXZCLFlBQVksRUFBRTtRQUNaO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLEVBQUU7U0FDVDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO0tBQ0Y7SUFDRCxjQUFjLEVBQUUsU0FBUztJQUN6Qix3QkFBd0IsRUFBRSwrREFBK0Q7SUFFekYsVUFBVTtJQUNWLE9BQU8sRUFBRTtRQUNQLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUVELFFBQVE7SUFDUixTQUFTLEVBQUUscUVBQXFFO0lBQ2hGLGNBQWMsRUFBRSw4RUFBOEU7SUFDOUYsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxPQUFPLEVBQUUsZ0dBQWdHO0lBRXpHLGNBQWM7SUFDZCxpQkFBaUIsRUFBRTtRQUVqQixxQ0FBcUM7UUFDckMsd0NBQXdDO1FBRXhDLG1DQUFtQztRQUNuQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLE9BQU87S0FDakQ7SUFFRCxPQUFPLEVBQUU7UUFDUCxtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7Q0FDRixDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE9BQU8seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY2FuIGJlIHJlcGxhY2VkIGR1cmluZyBidWlsZCBieSB1c2luZyB0aGUgYGZpbGVSZXBsYWNlbWVudHNgIGFycmF5LlxuLy8gYG5nIGJ1aWxkIC0tLXByb2RgIHJlcGxhY2VzIGBlbnZpcm9ubWVudC50c2Agd2l0aCBgZW52aXJvbm1lbnQucHJvZC50c2AuXG4vLyBUaGUgbGlzdCBvZiBmaWxlIHJlcGxhY2VtZW50cyBjYW4gYmUgZm91bmQgaW4gYGFuZ3VsYXIuanNvbmAuXG5cbmltcG9ydCB7RW52aXJvbm1lbnR9IGZyb20gJy4vZW52aXJvbm1lbnQuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50ID0gT2JqZWN0LmZyZWV6ZSh7XG4gIG5hbWU6ICdAc3VtYXJpcy1uZXQvbmd4LWNvbXBvbmVudHMnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG4gIHZlcnNpb246IHVuZGVmaW5lZCwgLy8gb3ZlcnJpZGRlbiBieSBFTlZJUk9OTUVOVCB0b2tlblxuICBwcm9kdWN0aW9uOiB0cnVlLCAvLyBsZXQgdG8gdHJ1ZSAhIGJlY2F1c2UgdXNlZCBieSBwYWNrYWdlclxuICBiYXNlVXJsOiAnLycsXG4gIGRlZmF1bHRMb2NhbGU6ICdmcicsXG4gIGRlZmF1bHRMYXRMb25nRm9ybWF0OiAnRERNTScsXG4gIGFwb2xsb0ZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnLFxuXG4gIC8vIEZJWE1FOiBlbmFibGUgY2FjaGVcbiAgcGVyc2lzdENhY2hlOiBmYWxzZSxcblxuICAvLyBUT0RPOiBtYWtlIHRoaXMgd29ya3NcbiAgLy9vZmZsaW5lOiB0cnVlLFxuXG4gIHBlZXJNaW5WZXJzaW9uOiAnMS44LjAnLFxuXG4gIGRlZmF1bHRQZWVyczogW1xuICAgIHtcbiAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA4MDgxXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnMTkyLjE2OC4wLjQ1JyxcbiAgICAgIHBvcnQ6IDgwODBcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMjQnLFxuICAgICAgcG9ydDogODA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJzE5Mi4xNjguMC4yOScsXG4gICAgICBwb3J0OiA4MDgwXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2loLnNmYS5zYycsXG4gICAgICBwb3J0OiA4MFxuICAgIH0sXG4gICAge1xuICAgICAgaG9zdDogJ3Rlc3Quc3VtYXJpcy5uZXQnLFxuICAgICAgcG9ydDogNDQzXG4gICAgfVxuICBdLFxuICBkZWZhdWx0QXBwTmFtZTogJ1NVTUFSaVMnLFxuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw6ICdodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9bmV0LnN1bWFyaXMuYXBwJyxcblxuICAvLyBTdG9yYWdlXG4gIHN0b3JhZ2U6IHtcbiAgICBkcml2ZXJPcmRlcjogWydzcWxpdGUnLCAnaW5kZXhlZGRiJywgJ3dlYnNxbCcsICdsb2NhbHN0b3JhZ2UnXVxuICB9LFxuXG4gIC8vIEFib3V0XG4gIHNvdXJjZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMnLFxuICByZXBvcnRJc3N1ZVVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9pc3N1ZXMnLFxuICBmb3J1bVVybDogJ2h0dHBzOi8vZm9ydW0uc3VtYXJpcy5uZXQnLFxuICBoZWxwVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9ibG9iL21hc3Rlci91c2VyLW1hbnVhbC9pbmRleF9mci5tZCcsXG5cbiAgLy8gRGV2ZWxvcG1lbnRcbiAgZGVmYXVsdEF1dGhWYWx1ZXM6IHtcblxuICAgIC8vIEJhc2ljIGF1dGggKHVzaW5nIFBlcnNvbi51c2VybmFtZSlcbiAgICAvLyB1c2VybmFtZTogJ2FkbXEyJywgcGFzc3dvcmQ6ICdxMjIwMDYnXG5cbiAgICAvLyBUb2tlbiBhdXRoICh1c2luZyBQZXJzb24ucHVia2V5KVxuICAgIHVzZXJuYW1lOiAnYWRtaW5Ac3VtYXJpcy5uZXQnLCBwYXNzd29yZDogJ2FkbWluJyxcbiAgfSxcblxuICBhY2NvdW50OiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogNjBcbiAgfSxcblxuICBlbnRpdHlFZGl0b3I6IHtcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzOiB0cnVlLFxuICAgIGxpc3RlbkludGVydmFsSW5TZWNvbmRzOiA2MFxuICB9XG59KTtcblxuLypcbiAqIEluIGRldmVsb3BtZW50IG1vZGUsIHRvIGlnbm9yZSB6b25lIHJlbGF0ZWQgZXJyb3Igc3RhY2sgZnJhbWVzIHN1Y2ggYXNcbiAqIGB6b25lLnJ1bmAsIGB6b25lRGVsZWdhdGUuaW52b2tlVGFza2AgZm9yIGVhc2llciBkZWJ1Z2dpbmcsIHlvdSBjYW5cbiAqIGltcG9ydCB0aGUgZm9sbG93aW5nIGZpbGUsIGJ1dCBwbGVhc2UgY29tbWVudCBpdCBvdXQgaW4gcHJvZHVjdGlvbiBtb2RlXG4gKiBiZWNhdXNlIGl0IHdpbGwgaGF2ZSBwZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aHJvdyBlcnJvclxuICovXG5pbXBvcnQgJ3pvbmUuanMvZGlzdC96b25lLWVycm9yJztcbiJdfQ==
|
|
@@ -9498,11 +9498,11 @@ const environment = Object.freeze({
|
|
|
9498
9498
|
},
|
|
9499
9499
|
account: {
|
|
9500
9500
|
enableListenChanges: true,
|
|
9501
|
-
listenIntervalInSeconds:
|
|
9501
|
+
listenIntervalInSeconds: 60
|
|
9502
9502
|
},
|
|
9503
9503
|
entityEditor: {
|
|
9504
9504
|
enableListenChanges: true,
|
|
9505
|
-
listenIntervalInSeconds:
|
|
9505
|
+
listenIntervalInSeconds: 60
|
|
9506
9506
|
}
|
|
9507
9507
|
});
|
|
9508
9508
|
|
|
@@ -13612,7 +13612,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
13612
13612
|
};
|
|
13613
13613
|
this._$additionalFields = new BehaviorSubject([]);
|
|
13614
13614
|
this._tokenType$ = new BehaviorSubject(undefined);
|
|
13615
|
-
this._enableListenChanges = (!environment.account || environment.account.enableListenChanges !== false);
|
|
13615
|
+
this._enableListenChanges = (!environment.account || environment.account.enableListenChanges !== false); // True by default
|
|
13616
|
+
this._listenIntervalInSeconds = toNumber(environment.account && environment.account.listenIntervalInSeconds, 0); // no timer by default
|
|
13616
13617
|
this._debug = !environment.production;
|
|
13617
13618
|
if (this._debug)
|
|
13618
13619
|
console.debug('[account-service] Creating service');
|
|
@@ -13802,7 +13803,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13802
13803
|
this.onChange.next(this._data);
|
|
13803
13804
|
// Listen remote changes
|
|
13804
13805
|
if (this._enableListenChanges)
|
|
13805
|
-
this.
|
|
13806
|
+
this.startListenRemoteChanges();
|
|
13806
13807
|
return this._data;
|
|
13807
13808
|
}
|
|
13808
13809
|
catch (error) {
|
|
@@ -13927,7 +13928,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13927
13928
|
this.onLogin.next(this._data);
|
|
13928
13929
|
this.onChange.next(this._data);
|
|
13929
13930
|
if (this._enableListenChanges)
|
|
13930
|
-
this.
|
|
13931
|
+
this.startListenRemoteChanges();
|
|
13931
13932
|
return this._data;
|
|
13932
13933
|
});
|
|
13933
13934
|
}
|
|
@@ -14027,7 +14028,6 @@ class AccountService extends BaseGraphqlService {
|
|
|
14027
14028
|
if (hadAuthBasic)
|
|
14028
14029
|
this.onAuthBasicChange.next(undefined);
|
|
14029
14030
|
this.onChange.next(undefined);
|
|
14030
|
-
this.stopListenChanges();
|
|
14031
14031
|
});
|
|
14032
14032
|
}
|
|
14033
14033
|
/**
|
|
@@ -14147,7 +14147,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14147
14147
|
listenChanges(opts) {
|
|
14148
14148
|
if (this._enableListenChanges)
|
|
14149
14149
|
return new Subscription(); // Already started: skip
|
|
14150
|
-
return this.
|
|
14150
|
+
return this.startListenRemoteChanges(opts);
|
|
14151
14151
|
}
|
|
14152
14152
|
get additionalFields() {
|
|
14153
14153
|
return this._$additionalFields.getValue();
|
|
@@ -14169,7 +14169,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14169
14169
|
}
|
|
14170
14170
|
/* -- protected method -- */
|
|
14171
14171
|
resetData() {
|
|
14172
|
-
this.
|
|
14172
|
+
this.stopListenRemoteChanges();
|
|
14173
14173
|
this._cache.loaded = false;
|
|
14174
14174
|
this._cache.keypair = null;
|
|
14175
14175
|
this._cache.authToken = null;
|
|
@@ -14298,7 +14298,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14298
14298
|
this.onLogin.next(this._data);
|
|
14299
14299
|
this.onChange.next(this._data);
|
|
14300
14300
|
if (this._enableListenChanges)
|
|
14301
|
-
this.
|
|
14301
|
+
this.startListenRemoteChanges();
|
|
14302
14302
|
if (this._debug)
|
|
14303
14303
|
console.debug(`[account] Account restoration [OK] {pubkey: ${pubkey.substr(0, 8)}}, {profile: ${this._cache.mainProfile}}`);
|
|
14304
14304
|
return account;
|
|
@@ -14498,12 +14498,12 @@ class AccountService extends BaseGraphqlService {
|
|
|
14498
14498
|
return yield this.authenticateAndGetToken(newToken, (counter || 1) + 1 /* increment */);
|
|
14499
14499
|
});
|
|
14500
14500
|
}
|
|
14501
|
-
|
|
14501
|
+
startListenRemoteChanges(opts) {
|
|
14502
14502
|
if (this._listenChangesSubscription)
|
|
14503
|
-
this.
|
|
14503
|
+
this.stopListenRemoteChanges(); // Stop previous subscription
|
|
14504
14504
|
if (this.network.offline)
|
|
14505
14505
|
return new Subscription(); // Offline: skip
|
|
14506
|
-
|
|
14506
|
+
this._listenChangesSubscription = this.watchChanges(opts)
|
|
14507
14507
|
.subscribe({
|
|
14508
14508
|
next: (data) => {
|
|
14509
14509
|
console.debug(`[account] Remote update detected at ${data.updateDate}`);
|
|
@@ -14523,20 +14523,17 @@ class AccountService extends BaseGraphqlService {
|
|
|
14523
14523
|
}
|
|
14524
14524
|
}
|
|
14525
14525
|
});
|
|
14526
|
-
|
|
14527
|
-
|
|
14528
|
-
this._listenChangesSubscription = subscription;
|
|
14529
|
-
// Make sure to use the stop function, when unsubscribe
|
|
14530
|
-
return new Subscription(() => this.stopListenChanges());
|
|
14531
|
-
}
|
|
14532
|
-
stopListenChanges() {
|
|
14533
|
-
if (this._listenChangesSubscription) {
|
|
14534
|
-
this._listenChangesSubscription.unsubscribe();
|
|
14526
|
+
this._listenChangesSubscription.add(() => {
|
|
14527
|
+
console.debug(`[account] Stop watching remote changes`);
|
|
14535
14528
|
this._listenChangesSubscription = null;
|
|
14536
|
-
}
|
|
14529
|
+
});
|
|
14530
|
+
return this._listenChangesSubscription;
|
|
14537
14531
|
}
|
|
14538
|
-
|
|
14532
|
+
stopListenRemoteChanges() {
|
|
14539
14533
|
var _a;
|
|
14534
|
+
(_a = this._listenChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
14535
|
+
}
|
|
14536
|
+
watchChanges(opts) {
|
|
14540
14537
|
if (!this.started) {
|
|
14541
14538
|
// Wait service ready, then loop
|
|
14542
14539
|
return from(this.ready())
|
|
@@ -14547,7 +14544,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
14547
14544
|
if (this.network.offline)
|
|
14548
14545
|
throw new Error('Cannot watch account changes: network is offline.');
|
|
14549
14546
|
const variables = {
|
|
14550
|
-
interval:
|
|
14547
|
+
interval: toNumber(opts && opts.intervalInSeconds, this._listenIntervalInSeconds)
|
|
14551
14548
|
};
|
|
14552
14549
|
console.debug(`[account] Watching remote changes, every ${variables.interval}s`);
|
|
14553
14550
|
return this.graphql.subscribe({
|
|
@@ -20504,11 +20501,14 @@ AppIconComponent.propDecorators = {
|
|
|
20504
20501
|
};
|
|
20505
20502
|
|
|
20506
20503
|
class CoreModule {
|
|
20507
|
-
static forRoot() {
|
|
20504
|
+
static forRoot(environment) {
|
|
20508
20505
|
console.info('[core] Creating module (root)');
|
|
20509
20506
|
return {
|
|
20510
20507
|
ngModule: CoreModule,
|
|
20511
|
-
providers: [
|
|
20508
|
+
providers: [
|
|
20509
|
+
PlatformService,
|
|
20510
|
+
{ provide: ENVIRONMENT, useValue: environment }
|
|
20511
|
+
]
|
|
20512
20512
|
};
|
|
20513
20513
|
}
|
|
20514
20514
|
}
|
|
@@ -21007,7 +21007,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
21007
21007
|
throw Error('Not implemented!');
|
|
21008
21008
|
const variables = opts && opts.variables || {
|
|
21009
21009
|
id,
|
|
21010
|
-
interval: opts && opts.interval
|
|
21010
|
+
interval: toNumber(opts && opts.interval, 0) // no timer by default
|
|
21011
21011
|
};
|
|
21012
21012
|
if (this._debug)
|
|
21013
21013
|
console.debug(this._logPrefix + `[WS] Listening for changes on ${this._logTypeName} {${id}}...`);
|
|
@@ -22208,6 +22208,7 @@ class AppTable {
|
|
|
22208
22208
|
const canDelete = yield this.canDeleteRows(rows, opts);
|
|
22209
22209
|
if (!canDelete)
|
|
22210
22210
|
return 0; // Cannot delete
|
|
22211
|
+
// If data need to be saved first
|
|
22211
22212
|
if (this.saveBeforeDelete) {
|
|
22212
22213
|
// Cancel invalid rows (because of save() will fail, if invalid rows exists)
|
|
22213
22214
|
rows = rows.reduce((res, row) => {
|
|
@@ -22218,30 +22219,40 @@ class AppTable {
|
|
|
22218
22219
|
if (deleted) {
|
|
22219
22220
|
this.visibleRowCount--;
|
|
22220
22221
|
this.totalRowCount--;
|
|
22222
|
+
// Forget is was the edited row
|
|
22223
|
+
if (row === this.editedRow) {
|
|
22224
|
+
this.editedRow = undefined;
|
|
22225
|
+
}
|
|
22221
22226
|
return res;
|
|
22222
22227
|
}
|
|
22223
22228
|
}
|
|
22224
22229
|
return res.concat(row);
|
|
22225
22230
|
}, []);
|
|
22226
|
-
if
|
|
22227
|
-
|
|
22228
|
-
|
|
22229
|
-
|
|
22230
|
-
|
|
22231
|
-
|
|
22232
|
-
|
|
22231
|
+
// Apply save, only if there is still some rows to delete
|
|
22232
|
+
// WARN: If no more rows (e.g. because all has been cancelled) then continue anyway to clear editedRow and selection (issue IMAGINE-669)
|
|
22233
|
+
if (isNotEmptyArray(rows)) {
|
|
22234
|
+
// Save data (e.g. when using memory service)
|
|
22235
|
+
const saved = yield this.saveBeforeAction('delete');
|
|
22236
|
+
if (!saved) {
|
|
22237
|
+
// Stop if save cancelled or save failed
|
|
22238
|
+
return;
|
|
22239
|
+
}
|
|
22233
22240
|
}
|
|
22234
22241
|
}
|
|
22235
|
-
if (this.debug)
|
|
22236
|
-
console.debug('[table] Delete selection...');
|
|
22237
|
-
const rowsToDelete = rows.slice()
|
|
22238
|
-
// Reverse row order
|
|
22239
|
-
// This is a workaround, need because row.delete() has async execution
|
|
22240
|
-
// and index cache is updated with a delay)
|
|
22241
|
-
.sort((a, b) => a.id > b.id ? -1 : 1);
|
|
22242
22242
|
try {
|
|
22243
|
-
const deleteCount =
|
|
22244
|
-
|
|
22243
|
+
const deleteCount = rows.length;
|
|
22244
|
+
// Apply deletion on datasource
|
|
22245
|
+
// If no more rows to delete, continue anyway to clear editedRow and selection (issue IMAGINE-669)
|
|
22246
|
+
if (deleteCount) {
|
|
22247
|
+
if (this.debug)
|
|
22248
|
+
console.debug('[table] Delete selected rows...');
|
|
22249
|
+
// Reverse row order (on a copy)
|
|
22250
|
+
// This is a workaround, need because row.delete() has async execution
|
|
22251
|
+
// and index cache is updated with a delay
|
|
22252
|
+
rows = rows.slice()
|
|
22253
|
+
.sort((a, b) => a.id > b.id ? -1 : 1);
|
|
22254
|
+
yield this._dataSource.deleteAll(rows);
|
|
22255
|
+
}
|
|
22245
22256
|
// DO not update manually, because watchALl().subscribe() will update this count
|
|
22246
22257
|
//this.totalRowCount -= deleteCount;
|
|
22247
22258
|
//this.visibleRowCount -= deleteCount;
|
|
@@ -22249,7 +22260,8 @@ class AppTable {
|
|
|
22249
22260
|
this.editedRow = undefined;
|
|
22250
22261
|
this.markAsDirty({ emitEvent: false /*markForCheck() is called just after*/ });
|
|
22251
22262
|
this.markForCheck();
|
|
22252
|
-
|
|
22263
|
+
if (deleteCount)
|
|
22264
|
+
this.onAfterDeletedRows.next(rows);
|
|
22253
22265
|
return deleteCount;
|
|
22254
22266
|
}
|
|
22255
22267
|
catch (err) {
|
|
@@ -23569,22 +23581,23 @@ class AppEditorOptions extends AppTabEditorOptions {
|
|
|
23569
23581
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
23570
23582
|
class AppEntityEditor extends AppTabEditor {
|
|
23571
23583
|
constructor(injector, dataType, dataService, options) {
|
|
23572
|
-
var _a;
|
|
23573
23584
|
super(injector.get(ActivatedRoute), injector.get(Router), injector.get(AlertController), injector.get(TranslateService), options);
|
|
23574
23585
|
this.dataType = dataType;
|
|
23575
23586
|
this.dataService = dataService;
|
|
23576
23587
|
this.saving = false;
|
|
23577
23588
|
this.$title = new Subject();
|
|
23578
23589
|
this.onUpdateView = new EventEmitter();
|
|
23590
|
+
this.environement = injector.get(ENVIRONMENT);
|
|
23579
23591
|
options = Object.assign({
|
|
23580
23592
|
// Default options
|
|
23581
|
-
enableListenChanges:
|
|
23593
|
+
enableListenChanges: !this.environement.entityEditor || this.environement.entityEditor.enableListenChanges !== false, listenIntervalInSeconds: toNumber(this.environement.entityEditor && this.environement.entityEditor.listenIntervalInSeconds, 0), pathIdAttribute: 'id', autoLoad: true, autoUpdateRoute: true, i18nPrefix: '' }, options);
|
|
23582
23594
|
this.settings = injector.get(LocalSettingsService);
|
|
23583
23595
|
this.errorTranslator = injector.get(FormErrorTranslator);
|
|
23584
23596
|
this.cd = injector.get(ChangeDetectorRef);
|
|
23585
23597
|
this.dateFormat = injector.get(DateFormatPipe);
|
|
23586
23598
|
this.toastController = injector.get(ToastController);
|
|
23587
23599
|
this._enableListenChanges = options.enableListenChanges;
|
|
23600
|
+
this._listenIntervalInSeconds = options.listenIntervalInSeconds;
|
|
23588
23601
|
this._pathIdAttribute = options.pathIdAttribute;
|
|
23589
23602
|
this._autoLoad = options.autoLoad;
|
|
23590
23603
|
this._autoLoadDelay = options.autoLoadDelay;
|
|
@@ -23652,7 +23665,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
23652
23665
|
}
|
|
23653
23666
|
ngOnDestroy() {
|
|
23654
23667
|
super.ngOnDestroy();
|
|
23655
|
-
this.
|
|
23668
|
+
this._listenChangesSubscription = null; // already unsubscribe in the super function
|
|
23656
23669
|
this.$title.complete();
|
|
23657
23670
|
this.$title.unsubscribe();
|
|
23658
23671
|
this.onUpdateView.complete();
|
|
@@ -23731,32 +23744,33 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
23731
23744
|
}
|
|
23732
23745
|
startListenRemoteChanges() {
|
|
23733
23746
|
// Skip if disable, or already listening
|
|
23734
|
-
if (this.
|
|
23747
|
+
if (this._listenChangesSubscription || !this._enableListenChanges || this.isNewData)
|
|
23735
23748
|
return;
|
|
23736
23749
|
// Listen for changes on server
|
|
23737
|
-
this.
|
|
23750
|
+
this._listenChangesSubscription = this.dataService.listenChanges(this.data.id, { interval: this._listenIntervalInSeconds })
|
|
23738
23751
|
.pipe(filter(isNotNil))
|
|
23739
23752
|
.subscribe((data) => {
|
|
23740
23753
|
if (data.updateDate && data.updateDate.isAfter(this.data.updateDate)) {
|
|
23741
23754
|
if (!this.dirty) {
|
|
23742
23755
|
if (this.debug)
|
|
23743
|
-
console.debug(`[data-editor] Changes detected on server, at {${data.updateDate}}
|
|
23756
|
+
console.debug(`[data-editor] Changes detected on server, at {${data.updateDate}}: reloading page...`);
|
|
23744
23757
|
this.updateView(data);
|
|
23745
23758
|
}
|
|
23746
23759
|
else {
|
|
23747
23760
|
if (this.debug)
|
|
23748
23761
|
console.debug(`[data-editor] Changes detected on server, at {${data.updateDate}}, but page is dirty: skip reloading.`);
|
|
23762
|
+
// TODO: alter user (with a toast ?)
|
|
23749
23763
|
}
|
|
23750
23764
|
}
|
|
23751
23765
|
});
|
|
23752
|
-
this.
|
|
23753
|
-
this.registerSubscription(this.
|
|
23766
|
+
this._listenChangesSubscription.add(() => this._listenChangesSubscription = null);
|
|
23767
|
+
this.registerSubscription(this._listenChangesSubscription);
|
|
23754
23768
|
}
|
|
23755
23769
|
stopListenRemoteChanges() {
|
|
23756
|
-
if (this.
|
|
23757
|
-
this.unregisterSubscription(this.
|
|
23758
|
-
this.
|
|
23759
|
-
this.
|
|
23770
|
+
if (this._listenChangesSubscription) {
|
|
23771
|
+
this.unregisterSubscription(this._listenChangesSubscription);
|
|
23772
|
+
this._listenChangesSubscription.unsubscribe();
|
|
23773
|
+
this._listenChangesSubscription = null;
|
|
23760
23774
|
}
|
|
23761
23775
|
}
|
|
23762
23776
|
updateView(data, opts) {
|
|
@@ -23901,7 +23915,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
23901
23915
|
// Update the view (e.g metadata)
|
|
23902
23916
|
yield this.updateView(updatedData, opts);
|
|
23903
23917
|
// Subscribe to remote changes
|
|
23904
|
-
if (!this.
|
|
23918
|
+
if (!this._listenChangesSubscription)
|
|
23905
23919
|
this.startListenRemoteChanges();
|
|
23906
23920
|
this.submitted = false;
|
|
23907
23921
|
return true;
|