@sumaris-net/ngx-components 1.20.35 → 1.21.0-beta2
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 +1100 -319
- 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 +0 -9
- package/esm2015/public_api.js +8 -3
- package/esm2015/src/app/core/icon/icon.component.js +5 -2
- package/esm2015/src/app/core/menu/menu.component.js +9 -2
- package/esm2015/src/app/core/table/table.class.js +11 -11
- package/esm2015/src/app/shared/functions.js +60 -1
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +4 -5
- package/esm2015/src/app/shared/material/autocomplete/testing/autocomplete.test.js +7 -10
- package/esm2015/src/app/shared/material/chips/material.chips.js +2 -3
- package/esm2015/src/app/shared/material/chips/testing/chips.test.js +2 -3
- package/esm2015/src/app/shared/material/datetime/material.date.js +2 -3
- package/esm2015/src/app/shared/material/datetime/material.datetime.js +2 -3
- package/esm2015/src/app/shared/pipes/arrays.pipe.js +1 -1
- package/esm2015/src/app/shared/pipes/form.pipes.js +4 -2
- package/esm2015/src/app/shared/pipes/highlight.pipe.js +4 -4
- package/esm2015/src/app/shared/pipes/string.pipes.js +18 -7
- package/esm2015/src/app/shared/services/memory-entity-service.class.js +1 -13
- package/esm2015/src/app/shared/types.js +1 -1
- package/esm2015/src/app/social/job/job.model.js +24 -0
- package/esm2015/src/app/social/job/job.module.js +25 -0
- package/esm2015/src/app/social/job/job.service.js +54 -0
- package/esm2015/src/app/social/job/progression/job-progression.component.js +192 -0
- package/esm2015/src/app/social/job/progression/job-progression.list.js +20 -0
- package/esm2015/src/app/social/message/message.module.js +25 -0
- package/esm2015/src/app/social/social.errors.js +5 -2
- package/esm2015/src/app/social/social.module.js +10 -15
- package/esm2015/src/app/social/user-event/notification/user-event-notification.component.js +95 -0
- package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +39 -0
- package/esm2015/src/app/social/user-event/user-event.model.js +58 -2
- package/esm2015/src/app/social/user-event/user-event.module.js +28 -0
- package/esm2015/src/app/social/user-event/user-event.service.js +294 -166
- package/esm2015/src/app/social/user-event/user-events.table.js +17 -12
- package/esm2015/sumaris-net.ngx-components.js +8 -6
- package/fesm2015/sumaris-net.ngx-components.js +931 -284
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +2 -3
- package/public_api.d.ts +7 -2
- package/src/app/core/icon/icon.component.d.ts +4 -4
- package/src/app/core/table/table.class.d.ts +6 -8
- package/src/app/shared/functions.d.ts +9 -0
- package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +2 -1
- package/src/app/shared/material/badge/badge-icon.test.d.ts +1 -1
- package/src/app/shared/pipes/form.pipes.d.ts +2 -1
- package/src/app/shared/services/memory-entity-service.class.d.ts +0 -6
- package/src/app/shared/types.d.ts +4 -0
- package/src/app/social/job/job.model.d.ts +32 -0
- package/src/app/social/job/job.module.d.ts +2 -0
- package/src/app/social/job/job.service.d.ts +23 -0
- package/src/app/social/job/progression/job-progression.component.d.ts +43 -0
- package/src/app/social/job/progression/job-progression.list.d.ts +12 -0
- package/src/app/social/message/message.module.d.ts +2 -0
- package/src/app/social/social.errors.d.ts +3 -0
- package/src/app/social/social.module.d.ts +8 -0
- package/src/app/social/user-event/notification/user-event-notification.component.d.ts +25 -0
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +20 -0
- package/src/app/social/user-event/user-event.model.d.ts +51 -6
- package/src/app/social/user-event/user-event.module.d.ts +2 -0
- package/src/app/social/user-event/user-event.service.d.ts +80 -51
- package/src/app/social/user-event/user-events.table.d.ts +6 -6
- package/src/assets/i18n/en-US.json +15 -2
- package/src/assets/i18n/en.json +15 -2
- package/src/assets/i18n/fr.json +14 -1
- package/src/theme/_ngx-components.scss +7 -0
- package/sumaris-net.ngx-components.d.ts +7 -5
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/esm2015/src/app/shared/services.js +0 -61
- package/src/app/shared/services.d.ts +0 -9
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { SharedModule } from '../../shared/shared.module';
|
|
5
|
+
import { JobProgressionComponent } from './progression/job-progression.component';
|
|
6
|
+
import { JobProgressionList } from './progression/job-progression.list';
|
|
7
|
+
export class JobModule {
|
|
8
|
+
}
|
|
9
|
+
JobModule.decorators = [
|
|
10
|
+
{ type: NgModule, args: [{
|
|
11
|
+
imports: [
|
|
12
|
+
CommonModule,
|
|
13
|
+
SharedModule,
|
|
14
|
+
TranslateModule.forChild(),
|
|
15
|
+
],
|
|
16
|
+
declarations: [
|
|
17
|
+
JobProgressionComponent,
|
|
18
|
+
JobProgressionList
|
|
19
|
+
],
|
|
20
|
+
exports: [
|
|
21
|
+
JobProgressionComponent
|
|
22
|
+
]
|
|
23
|
+
},] }
|
|
24
|
+
];
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi9qb2IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFnQnhFLE1BQU0sT0FBTyxTQUFTOzs7WUFkckIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFlBQVk7b0JBQ1osZUFBZSxDQUFDLFFBQVEsRUFBRTtpQkFDM0I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHVCQUF1QjtvQkFDdkIsa0JBQWtCO2lCQUNuQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsdUJBQXVCO2lCQUN4QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9ncmVzc2lvbi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50JztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uTGlzdCB9IGZyb20gJy4vcHJvZ3Jlc3Npb24vam9iLXByb2dyZXNzaW9uLmxpc3QnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgSm9iUHJvZ3Jlc3Npb25Db21wb25lbnQsXG4gICAgSm9iUHJvZ3Jlc3Npb25MaXN0XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBKb2JQcm9ncmVzc2lvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEpvYk1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
|
+
import { JobProgression } from './job.model';
|
|
3
|
+
import { BaseGraphqlService } from '../../core/services/base-graphql-service.class';
|
|
4
|
+
import { GraphqlService } from '../../core/graphql/graphql.service';
|
|
5
|
+
import { Environment, ENVIRONMENT } from '../../../environments/environment.class';
|
|
6
|
+
import { gql } from '@apollo/client/core';
|
|
7
|
+
import { isNil, toNumber } from '../../shared/functions';
|
|
8
|
+
import { map } from 'rxjs/operators';
|
|
9
|
+
import { SocialErrorCodes } from '../social.errors';
|
|
10
|
+
export const JobProgressionServiceToken = new InjectionToken('JobProgressionService');
|
|
11
|
+
const jobProgressionSubscription = gql `subscription UpdateJobProgression($id: Int!, $interval: Int){
|
|
12
|
+
data: updateJobProgression(id: $id, interval: $interval) {
|
|
13
|
+
id
|
|
14
|
+
message
|
|
15
|
+
current
|
|
16
|
+
total
|
|
17
|
+
updateDate
|
|
18
|
+
}
|
|
19
|
+
}`;
|
|
20
|
+
export class JobProgressionService extends BaseGraphqlService {
|
|
21
|
+
constructor(graphql, environment) {
|
|
22
|
+
super(graphql, environment);
|
|
23
|
+
this.graphql = graphql;
|
|
24
|
+
this.environment = environment;
|
|
25
|
+
this._logPrefix = '[job-progression-service] ';
|
|
26
|
+
// For DEV only
|
|
27
|
+
this._debug = !(environment === null || environment === void 0 ? void 0 : environment.production);
|
|
28
|
+
}
|
|
29
|
+
listenChanges(id, options) {
|
|
30
|
+
if (isNil(id))
|
|
31
|
+
throw new Error(`${this._logPrefix}Missing argument 'id'`);
|
|
32
|
+
if (this._debug)
|
|
33
|
+
console.debug(`${this._logPrefix}[WS] Listening changes for job progression {${id}}...`);
|
|
34
|
+
return this.graphql.subscribe({
|
|
35
|
+
query: jobProgressionSubscription,
|
|
36
|
+
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
|
37
|
+
variables: { id, interval: toNumber(options === null || options === void 0 ? void 0 : options.interval, 10) },
|
|
38
|
+
error: { code: SocialErrorCodes.SUBSCRIBE_JOB_PROGRESSION_ERROR, message: 'SOCIAL.ERROR.SUBSCRIBE_JOB_PROGRESSION_ERROR' }
|
|
39
|
+
}).pipe(map(({ data }) => {
|
|
40
|
+
const progression = data && JobProgression.fromObject(data);
|
|
41
|
+
if (progression && this._debug)
|
|
42
|
+
console.debug(`${this._logPrefix}Job progression ${id} updated on server`, progression);
|
|
43
|
+
return progression;
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
JobProgressionService.decorators = [
|
|
48
|
+
{ type: Injectable }
|
|
49
|
+
];
|
|
50
|
+
JobProgressionService.ctorParameters = () => [
|
|
51
|
+
{ type: GraphqlService },
|
|
52
|
+
{ type: Environment, decorators: [{ type: Optional }, { type: Inject, args: [ENVIRONMENT,] }] }
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9qb2Ivam9iLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRW5GLE9BQU8sRUFBZSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsdUJBQXVCLENBQUMsQ0FBQztBQUU3RyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7RUFRcEMsQ0FBQTtBQU9GLE1BQU0sT0FBTyxxQkFDWCxTQUFRLGtCQUFrQztJQUcxQyxZQUNZLE9BQXVCLEVBQ1UsV0FBd0I7UUFFbkUsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUhsQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBR25FLElBQUksQ0FBQyxVQUFVLEdBQUcsNEJBQTRCLENBQUM7UUFDL0MsZUFBZTtRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBQyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsVUFBVSxDQUFBLENBQUM7SUFDekMsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVLEVBQUUsT0FHekI7UUFFQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsdUJBQXVCLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLCtDQUErQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQWdCO1lBQzNDLEtBQUssRUFBRSwwQkFBMEI7WUFDakMsV0FBVyxFQUFFLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXO1lBQ2pDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUM7WUFDM0QsS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLCtCQUErQixFQUFFLE9BQU8sRUFBRSw4Q0FBOEMsRUFBQztTQUN6SCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRTtZQUNiLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN4SCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUosQ0FBQzs7O1lBcENGLFVBQVU7OztZQXhCRixjQUFjO1lBQ2QsV0FBVyx1QkE4QmYsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uIH0gZnJvbSAnLi9qb2IubW9kZWwnO1xuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBHcmFwaHFsU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZldGNoUG9saWN5LCBncWwgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IGlzTmlsLCB0b051bWJlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU29jaWFsRXJyb3JDb2RlcyB9IGZyb20gJy4uL3NvY2lhbC5lcnJvcnMnO1xuXG5leHBvcnQgY29uc3QgSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Sm9iUHJvZ3Jlc3Npb25TZXJ2aWNlPignSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlJyk7XG5cbmNvbnN0IGpvYlByb2dyZXNzaW9uU3Vic2NyaXB0aW9uID0gZ3FsYHN1YnNjcmlwdGlvbiBVcGRhdGVKb2JQcm9ncmVzc2lvbigkaWQ6IEludCEsICRpbnRlcnZhbDogSW50KXtcbiAgZGF0YTogdXBkYXRlSm9iUHJvZ3Jlc3Npb24oaWQ6ICRpZCwgaW50ZXJ2YWw6ICRpbnRlcnZhbCkge1xuICAgIGlkXG4gICAgbWVzc2FnZVxuICAgIGN1cnJlbnRcbiAgICB0b3RhbFxuICAgIHVwZGF0ZURhdGVcbiAgfVxufWBcblxuZXhwb3J0IGludGVyZmFjZSBJSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlIHtcbiAgbGlzdGVuQ2hhbmdlcyhpZDogbnVtYmVyLCBvcHRpb25zPzogeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxKb2JQcm9ncmVzc2lvbj47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvblNlcnZpY2VcbiAgZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2U8Sm9iUHJvZ3Jlc3Npb24+XG4gIGltcGxlbWVudHMgSUpvYlByb2dyZXNzaW9uU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgZW52aXJvbm1lbnQpO1xuICAgIHRoaXMuX2xvZ1ByZWZpeCA9ICdbam9iLXByb2dyZXNzaW9uLXNlcnZpY2VdICc7XG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQ/LnByb2R1Y3Rpb247XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBudW1iZXIsIG9wdGlvbnM/OiB7XG4gICAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gICAgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeVxuICB9KTogT2JzZXJ2YWJsZTxKb2JQcm9ncmVzc2lvbj4ge1xuXG4gICAgaWYgKGlzTmlsKGlkKSkgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1NaXNzaW5nIGFyZ3VtZW50ICdpZCdgKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVtXU10gTGlzdGVuaW5nIGNoYW5nZXMgZm9yIGpvYiBwcm9ncmVzc2lvbiB7JHtpZH19Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsLnN1YnNjcmliZTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBxdWVyeTogam9iUHJvZ3Jlc3Npb25TdWJzY3JpcHRpb24sXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucz8uZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgaWQsIGludGVydmFsOiB0b051bWJlcihvcHRpb25zPy5pbnRlcnZhbCwgMTApfSxcbiAgICAgIGVycm9yOiB7Y29kZTogU29jaWFsRXJyb3JDb2Rlcy5TVUJTQ1JJQkVfSk9CX1BST0dSRVNTSU9OX0VSUk9SLCBtZXNzYWdlOiAnU09DSUFMLkVSUk9SLlNVQlNDUklCRV9KT0JfUFJPR1JFU1NJT05fRVJST1InfVxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHtkYXRhfSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9ncmVzc2lvbiA9IGRhdGEgJiYgSm9iUHJvZ3Jlc3Npb24uZnJvbU9iamVjdChkYXRhKTtcbiAgICAgICAgaWYgKHByb2dyZXNzaW9uICYmIHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Kb2IgcHJvZ3Jlc3Npb24gJHtpZH0gdXBkYXRlZCBvbiBzZXJ2ZXJgLCBwcm9ncmVzc2lvbik7XG4gICAgICAgIHJldHVybiBwcm9ncmVzc2lvbjtcbiAgICAgIH0pXG4gICAgKTtcblxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
|
|
3
|
+
import { JobProgressionServiceToken } from '../job.service';
|
|
4
|
+
import { Subscription } from 'rxjs';
|
|
5
|
+
import { arraySize, isNil, toBoolean, toNumber } from '../../../shared/functions';
|
|
6
|
+
import { filter, map } from 'rxjs/operators';
|
|
7
|
+
import { PopoverController } from '@ionic/angular';
|
|
8
|
+
import { JobProgressionList } from './job-progression.list';
|
|
9
|
+
export class JobProgressionComponent {
|
|
10
|
+
constructor(jobProgressionService, popoverController, cd) {
|
|
11
|
+
this.jobProgressionService = jobProgressionService;
|
|
12
|
+
this.popoverController = popoverController;
|
|
13
|
+
this.cd = cd;
|
|
14
|
+
this.debug = false;
|
|
15
|
+
this.titleI18n = 'SOCIAL.JOB.PROGRESSION.TITLE';
|
|
16
|
+
this.jobFinished = new EventEmitter();
|
|
17
|
+
this.disabled = true;
|
|
18
|
+
this.color = 'accent';
|
|
19
|
+
this.mode = 'determinate';
|
|
20
|
+
this.value = 0;
|
|
21
|
+
this.jobProgressions = [];
|
|
22
|
+
this._subscriptions = new Subscription();
|
|
23
|
+
this._subscriptionsById = {};
|
|
24
|
+
this._logPrefix = '[job-progression] ';
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
var _a, _b, _c, _d;
|
|
28
|
+
if (isNil(this.jobProgressionService)) {
|
|
29
|
+
console.warn(`${this._logPrefix}No service injected`);
|
|
30
|
+
}
|
|
31
|
+
// parse options
|
|
32
|
+
this.autoHide = toBoolean((_a = this.options) === null || _a === void 0 ? void 0 : _a.autoHide, false);
|
|
33
|
+
this.visible = !this.autoHide;
|
|
34
|
+
this.autoHideDelay = toNumber((_b = this.options) === null || _b === void 0 ? void 0 : _b.autoHideDelay, 1000);
|
|
35
|
+
this.autoRemove = toBoolean((_c = this.options) === null || _c === void 0 ? void 0 : _c.autoRemove, true);
|
|
36
|
+
this.autoRemoveDelay = toNumber((_d = this.options) === null || _d === void 0 ? void 0 : _d.autoRemoveDelay, 1000);
|
|
37
|
+
}
|
|
38
|
+
addJob(id) {
|
|
39
|
+
if (isNil(this.jobProgressionService)) {
|
|
40
|
+
console.warn(`${this._logPrefix}No service injected. Can't add a job`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (this.debug) {
|
|
44
|
+
console.debug(`${this._logPrefix}Add job id=${id}`);
|
|
45
|
+
}
|
|
46
|
+
if (!!this.getProgression(id)) {
|
|
47
|
+
console.warn(`${this._logPrefix}Job (id=${id}) already present`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.disabled = false;
|
|
51
|
+
const sub = this.jobProgressionService.listenChanges(id)
|
|
52
|
+
.pipe(filter(progression => {
|
|
53
|
+
if (id !== progression.id) {
|
|
54
|
+
console.error(`${this._logPrefix}Job progression (id=${progression.id}) doesn't match expected job (id=${id})`);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}), map(progression => {
|
|
59
|
+
// Ensure visible
|
|
60
|
+
this.visible = true;
|
|
61
|
+
// Get current progression object
|
|
62
|
+
const currentProgression = this.getProgression(id);
|
|
63
|
+
if (!currentProgression) {
|
|
64
|
+
// add it
|
|
65
|
+
this.jobProgressions.push(progression);
|
|
66
|
+
if (this.debug) {
|
|
67
|
+
console.debug(`${this._logPrefix}Progression added id=${id}`, progression);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// update current
|
|
72
|
+
Object.assign(currentProgression, progression);
|
|
73
|
+
if (this.debug) {
|
|
74
|
+
console.debug(`${this._logPrefix}Progression updated id=${id}`, progression);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return progression;
|
|
78
|
+
}))
|
|
79
|
+
.subscribe(progression => {
|
|
80
|
+
// update value
|
|
81
|
+
this.updateValue();
|
|
82
|
+
// job finished
|
|
83
|
+
if (progression.total > 0 && progression.current == progression.total) {
|
|
84
|
+
if (this.debug) {
|
|
85
|
+
console.debug(`${this._logPrefix}Finished job id=${progression.id}`);
|
|
86
|
+
}
|
|
87
|
+
// emit event
|
|
88
|
+
this.jobFinished.emit(progression.id);
|
|
89
|
+
if (this.autoRemove) {
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
var _a;
|
|
92
|
+
this.removeJob(progression.id);
|
|
93
|
+
// If last job
|
|
94
|
+
if (this.autoHide && !((_a = this.jobProgressions) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
this.visible = false;
|
|
97
|
+
this.markForCheck();
|
|
98
|
+
}, this.autoHideDelay);
|
|
99
|
+
}
|
|
100
|
+
}, this.autoRemoveDelay);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
this._subscriptionsById[id] = sub;
|
|
105
|
+
this._subscriptions.add(sub);
|
|
106
|
+
}
|
|
107
|
+
removeJob(id) {
|
|
108
|
+
if (this.debug) {
|
|
109
|
+
console.debug(`${this._logPrefix}Remove job id=${id}`);
|
|
110
|
+
}
|
|
111
|
+
const sub = this._subscriptionsById[id];
|
|
112
|
+
if (sub) {
|
|
113
|
+
this._subscriptions.remove(sub);
|
|
114
|
+
sub.unsubscribe();
|
|
115
|
+
}
|
|
116
|
+
const progression = this.getProgression(id);
|
|
117
|
+
if (progression) {
|
|
118
|
+
this.jobProgressions.splice(this.jobProgressions.indexOf(progression), 1);
|
|
119
|
+
}
|
|
120
|
+
this.updateValue();
|
|
121
|
+
}
|
|
122
|
+
getProgression(id) {
|
|
123
|
+
return this.jobProgressions.find(progression => progression.id === id);
|
|
124
|
+
}
|
|
125
|
+
updateValue() {
|
|
126
|
+
if (this.debug) {
|
|
127
|
+
console.debug(`${this._logPrefix}Updating value`);
|
|
128
|
+
}
|
|
129
|
+
let value = 0;
|
|
130
|
+
const nbProgression = arraySize(this.jobProgressions);
|
|
131
|
+
let allIndeterminate = nbProgression > 0;
|
|
132
|
+
this.jobProgressions.forEach(progression => {
|
|
133
|
+
const indeterminate = progression.total === 0;
|
|
134
|
+
allIndeterminate = allIndeterminate && indeterminate;
|
|
135
|
+
if (!indeterminate) {
|
|
136
|
+
value = value + progression.current * 100 / progression.total;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
this.value = nbProgression > 0 ? value / nbProgression : 0;
|
|
140
|
+
this.mode = allIndeterminate ? 'indeterminate' : 'determinate';
|
|
141
|
+
if (this.debug) {
|
|
142
|
+
console.debug(`${this._logPrefix}Setting value=${this.value}, mode=${this.mode}`);
|
|
143
|
+
}
|
|
144
|
+
this.markForCheck();
|
|
145
|
+
}
|
|
146
|
+
showList(event) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
const popover = yield this.popoverController.create({
|
|
149
|
+
component: JobProgressionList,
|
|
150
|
+
componentProps: {
|
|
151
|
+
titleI18n: this.titleI18n,
|
|
152
|
+
jobProgressions: this.jobProgressions
|
|
153
|
+
},
|
|
154
|
+
backdropDismiss: true,
|
|
155
|
+
keyboardClose: true,
|
|
156
|
+
event,
|
|
157
|
+
translucent: true,
|
|
158
|
+
cssClass: 'popover-large'
|
|
159
|
+
});
|
|
160
|
+
yield popover.present();
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
markForCheck() {
|
|
164
|
+
this.cd.markForCheck();
|
|
165
|
+
}
|
|
166
|
+
ngOnDestroy() {
|
|
167
|
+
if (this.debug) {
|
|
168
|
+
console.debug(`${this._logPrefix}Destroying`);
|
|
169
|
+
}
|
|
170
|
+
this._subscriptions.unsubscribe();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
JobProgressionComponent.decorators = [
|
|
174
|
+
{ type: Component, args: [{
|
|
175
|
+
selector: 'app-job-progression',
|
|
176
|
+
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n *ngIf=\"visible\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"jobProgressions?.length\"\n [matBadgeHidden]=\"!jobProgressions?.length\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >{{ disabled || jobProgressions?.length ? 'schedule' : 'task_alt' }}\n </mat-icon>\n <mat-spinner\n #spinner\n *ngIf=\"jobProgressions?.length\"\n class=\"floating-spinner\"\n [color]=\"color\"\n [mode]=\"mode\"\n [value]=\"value\"\n diameter=\"30\"\n strokeWidth=\"3\"\n ></mat-spinner>\n</button>\n\n",
|
|
177
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
178
|
+
styles: [".floating-spinner{position:absolute;top:6px;left:5px}"]
|
|
179
|
+
},] }
|
|
180
|
+
];
|
|
181
|
+
JobProgressionComponent.ctorParameters = () => [
|
|
182
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [JobProgressionServiceToken,] }] },
|
|
183
|
+
{ type: PopoverController },
|
|
184
|
+
{ type: ChangeDetectorRef }
|
|
185
|
+
];
|
|
186
|
+
JobProgressionComponent.propDecorators = {
|
|
187
|
+
debug: [{ type: Input }],
|
|
188
|
+
titleI18n: [{ type: Input }],
|
|
189
|
+
options: [{ type: Input }],
|
|
190
|
+
jobFinished: [{ type: Output }]
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi9wcm9ncmVzc2lvbi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hKLE9BQU8sRUFBMEIsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBNkIsTUFBTSx3QkFBd0IsQ0FBQztBQWV2RixNQUFNLE9BQU8sdUJBQXVCO0lBdUJsQyxZQUM0RCxxQkFBNkMsRUFDN0YsaUJBQW9DLEVBQ3BDLEVBQXFCO1FBRjJCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBd0I7UUFDN0Ysc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXhCeEIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGNBQVMsR0FBRyw4QkFBOEIsQ0FBQztRQUUxQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHbkQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixVQUFLLEdBQWlCLFFB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QUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO2dCQUNsRCxTQUFTLEVBQUUsa0JBQWtCO2dCQUM3QixjQUFjLEVBQTZCO29CQUN6QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtpQkFDdEM7Z0JBQ0QsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixLQUFLO2dCQUNMLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixRQUFRLEVBQUUsZUFBZTthQUMxQixDQUFDLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixDQUFDO0tBQUE7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsWUFBWSxDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OztZQWxNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0Isa3NCQUErQztnQkFFL0MsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7NENBeUJJLFFBQVEsWUFBSSxNQUFNLFNBQUMsMEJBQTBCO1lBeEN6QyxpQkFBaUI7WUFUUSxpQkFBaUI7OztvQkEyQmhELEtBQUs7d0JBQ0wsS0FBSztzQkFDTCxLQUFLOzBCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBJSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlLCBKb2JQcm9ncmVzc2lvblNlcnZpY2VUb2tlbiB9IGZyb20gJy4uL2pvYi5zZXJ2aWNlJztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uIH0gZnJvbSAnLi4vam9iLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT2JqZWN0TWFwIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IGFycmF5U2l6ZSwgaXNOaWwsIHRvQm9vbGVhbiwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBKb2JQcm9ncmVzc2lvbkxpc3QsIEpvYlByb2dyZXNzaW9uTGlzdE9wdGlvbnMgfSBmcm9tICcuL2pvYi1wcm9ncmVzc2lvbi5saXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBKb2JQcm9ncmVzc2lvbk9wdGlvbnMge1xuICBhdXRvSGlkZTogYm9vbGVhbjtcbiAgYXV0b0hpZGVEZWxheTogbnVtYmVyO1xuICBhdXRvUmVtb3ZlOiBib29sZWFuO1xuICBhdXRvUmVtb3ZlRGVsYXk6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWpvYi1wcm9ncmVzc2lvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBkZWJ1ZyA9IGZhbHNlO1xuICBASW5wdXQoKSB0aXRsZUkxOG4gPSAnU09DSUFMLkpPQi5QUk9HUkVTU0lPTi5USVRMRSc7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IEpvYlByb2dyZXNzaW9uT3B0aW9ucztcbiAgQE91dHB1dCgpIGpvYkZpbmlzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQgPSB0cnVlO1xuICBjb2xvcjogVGhlbWVQYWxldHRlID0gJ2FjY2VudCc7XG4gIG1vZGU6IFByb2dyZXNzU3Bpbm5lck1vZGUgPSAnZGV0ZXJtaW5hdGUnO1xuICB2YWx1ZSA9IDA7XG4gIGpvYlByb2dyZXNzaW9uczogSm9iUHJvZ3Jlc3Npb25bXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBhdXRvSGlkZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGF1dG9IaWRlRGVsYXk6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGF1dG9SZW1vdmU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBhdXRvUmVtb3ZlRGVsYXk6IG51bWJlcjtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zQnlJZDogT2JqZWN0TWFwPFN1YnNjcmlwdGlvbj4gPSB7fTtcbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1tqb2ItcHJvZ3Jlc3Npb25dICc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChKb2JQcm9ncmVzc2lvblNlcnZpY2VUb2tlbikgcHJvdGVjdGVkIGpvYlByb2dyZXNzaW9uU2VydmljZTogSUpvYlByb2dyZXNzaW9uU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChpc05pbCh0aGlzLmpvYlByb2dyZXNzaW9uU2VydmljZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9Tm8gc2VydmljZSBpbmplY3RlZGApO1xuICAgIH1cbiAgICAvLyBwYXJzZSBvcHRpb25zXG4gICAgdGhpcy5hdXRvSGlkZSA9IHRvQm9vbGVhbih0aGlzLm9wdGlvbnM/LmF1dG9IaWRlLCBmYWxzZSk7XG4gICAgdGhpcy52aXNpYmxlID0gIXRoaXMuYXV0b0hpZGU7XG4gICAgdGhpcy5hdXRvSGlkZURlbGF5ID0gdG9OdW1iZXIodGhpcy5vcHRpb25zPy5hdXRvSGlkZURlbGF5LCAxMDAwKTtcbiAgICB0aGlzLmF1dG9SZW1vdmUgPSB0b0Jvb2xlYW4odGhpcy5vcHRpb25zPy5hdXRvUmVtb3ZlLCB0cnVlKTtcbiAgICB0aGlzLmF1dG9SZW1vdmVEZWxheSA9IHRvTnVtYmVyKHRoaXMub3B0aW9ucz8uYXV0b1JlbW92ZURlbGF5LCAxMDAwKTtcbiAgfVxuXG4gIGFkZEpvYihpZDogbnVtYmVyKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuam9iUHJvZ3Jlc3Npb25TZXJ2aWNlKSkge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1ObyBzZXJ2aWNlIGluamVjdGVkLiBDYW4ndCBhZGQgYSBqb2JgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9QWRkIGpvYiBpZD0ke2lkfWApO1xuICAgIH1cbiAgICBpZiAoISF0aGlzLmdldFByb2dyZXNzaW9uKGlkKSkge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1Kb2IgKGlkPSR7aWR9KSBhbHJlYWR5IHByZXNlbnRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3ViID0gdGhpcy5qb2JQcm9ncmVzc2lvblNlcnZpY2UubGlzdGVuQ2hhbmdlcyhpZClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIocHJvZ3Jlc3Npb24gPT4ge1xuICAgICAgICAgIGlmIChpZCAhPT0gcHJvZ3Jlc3Npb24uaWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5fbG9nUHJlZml4fUpvYiBwcm9ncmVzc2lvbiAoaWQ9JHtwcm9ncmVzc2lvbi5pZH0pIGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgam9iIChpZD0ke2lkfSlgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAocHJvZ3Jlc3Npb24gPT4ge1xuICAgICAgICAgIC8vIEVuc3VyZSB2aXNpYmxlXG4gICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAvLyBHZXQgY3VycmVudCBwcm9ncmVzc2lvbiBvYmplY3RcbiAgICAgICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3Npb24gPSB0aGlzLmdldFByb2dyZXNzaW9uKGlkKTtcbiAgICAgICAgICBpZiAoIWN1cnJlbnRQcm9ncmVzc2lvbikge1xuICAgICAgICAgICAgLy8gYWRkIGl0XG4gICAgICAgICAgICB0aGlzLmpvYlByb2dyZXNzaW9ucy5wdXNoKHByb2dyZXNzaW9uKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVByb2dyZXNzaW9uIGFkZGVkIGlkPSR7aWR9YCwgcHJvZ3Jlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgY3VycmVudFxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihjdXJyZW50UHJvZ3Jlc3Npb24sIHByb2dyZXNzaW9uKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVByb2dyZXNzaW9uIHVwZGF0ZWQgaWQ9JHtpZH1gLCBwcm9ncmVzc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwcm9ncmVzc2lvbjtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocHJvZ3Jlc3Npb24gPT4ge1xuICAgICAgICAvLyB1cGRhdGUgdmFsdWVcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xuXG4gICAgICAgIC8vIGpvYiBmaW5pc2hlZFxuICAgICAgICBpZiAocHJvZ3Jlc3Npb24udG90YWwgPiAwICYmIHByb2dyZXNzaW9uLmN1cnJlbnQgPT0gcHJvZ3Jlc3Npb24udG90YWwpIHtcbiAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RmluaXNoZWQgam9iIGlkPSR7cHJvZ3Jlc3Npb24uaWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVtaXQgZXZlbnRcbiAgICAgICAgICB0aGlzLmpvYkZpbmlzaGVkLmVtaXQocHJvZ3Jlc3Npb24uaWQpO1xuICAgICAgICAgIGlmICh0aGlzLmF1dG9SZW1vdmUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlbW92ZUpvYihwcm9ncmVzc2lvbi5pZCk7XG4gICAgICAgICAgICAgIC8vIElmIGxhc3Qgam9iXG4gICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9IaWRlICYmICF0aGlzLmpvYlByb2dyZXNzaW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5hdXRvSGlkZURlbGF5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5hdXRvUmVtb3ZlRGVsYXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zQnlJZFtpZF0gPSBzdWI7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoc3ViKTtcbiAgfVxuXG4gIHJlbW92ZUpvYihpZDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVJlbW92ZSBqb2IgaWQ9JHtpZH1gKTtcbiAgICB9XG4gICAgY29uc3Qgc3ViID0gdGhpcy5fc3Vic2NyaXB0aW9uc0J5SWRbaWRdO1xuICAgIGlmIChzdWIpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucmVtb3ZlKHN1Yik7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgY29uc3QgcHJvZ3Jlc3Npb24gPSB0aGlzLmdldFByb2dyZXNzaW9uKGlkKTtcbiAgICBpZiAocHJvZ3Jlc3Npb24pIHtcbiAgICAgIHRoaXMuam9iUHJvZ3Jlc3Npb25zLnNwbGljZSh0aGlzLmpvYlByb2dyZXNzaW9ucy5pbmRleE9mKHByb2dyZXNzaW9uKSwgMSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcbiAgfVxuXG4gIGdldFByb2dyZXNzaW9uKGlkOiBudW1iZXIpOiBKb2JQcm9ncmVzc2lvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuam9iUHJvZ3Jlc3Npb25zLmZpbmQocHJvZ3Jlc3Npb24gPT4gcHJvZ3Jlc3Npb24uaWQgPT09IGlkKTtcbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKCkge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1VcGRhdGluZyB2YWx1ZWApO1xuICAgIH1cbiAgICBsZXQgdmFsdWUgPSAwO1xuICAgIGNvbnN0IG5iUHJvZ3Jlc3Npb24gPSBhcnJheVNpemUodGhpcy5qb2JQcm9ncmVzc2lvbnMpO1xuICAgIGxldCBhbGxJbmRldGVybWluYXRlID0gbmJQcm9ncmVzc2lvbiA+IDA7XG5cbiAgICB0aGlzLmpvYlByb2dyZXNzaW9ucy5mb3JFYWNoKHByb2dyZXNzaW9uID0+IHtcbiAgICAgIGNvbnN0IGluZGV0ZXJtaW5hdGUgPSBwcm9ncmVzc2lvbi50b3RhbCA9PT0gMDtcbiAgICAgIGFsbEluZGV0ZXJtaW5hdGUgPSBhbGxJbmRldGVybWluYXRlICYmIGluZGV0ZXJtaW5hdGU7XG4gICAgICBpZiAoIWluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSArIHByb2dyZXNzaW9uLmN1cnJlbnQgKiAxMDAgLyBwcm9ncmVzc2lvbi50b3RhbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudmFsdWUgPSBuYlByb2dyZXNzaW9uID4gMCA/IHZhbHVlIC8gbmJQcm9ncmVzc2lvbiA6IDA7XG4gICAgdGhpcy5tb2RlID0gYWxsSW5kZXRlcm1pbmF0ZSA/ICdpbmRldGVybWluYXRlJyA6ICdkZXRlcm1pbmF0ZSc7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVNldHRpbmcgdmFsdWU9JHt0aGlzLnZhbHVlfSwgbW9kZT0ke3RoaXMubW9kZX1gKTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXN5bmMgc2hvd0xpc3QoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBKb2JQcm9ncmVzc2lvbkxpc3QsXG4gICAgICBjb21wb25lbnRQcm9wczogPEpvYlByb2dyZXNzaW9uTGlzdE9wdGlvbnM+e1xuICAgICAgICB0aXRsZUkxOG46IHRoaXMudGl0bGVJMThuLFxuICAgICAgICBqb2JQcm9ncmVzc2lvbnM6IHRoaXMuam9iUHJvZ3Jlc3Npb25zXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgICAga2V5Ym9hcmRDbG9zZTogdHJ1ZSxcbiAgICAgIGV2ZW50LFxuICAgICAgdHJhbnNsdWNlbnQ6IHRydWUsXG4gICAgICBjc3NDbGFzczogJ3BvcG92ZXItbGFyZ2UnXG4gICAgfSk7XG4gICAgYXdhaXQgcG9wb3Zlci5wcmVzZW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9RGVzdHJveWluZ2ApO1xuICAgIH1cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
export class JobProgressionList {
|
|
3
|
+
constructor() {
|
|
4
|
+
}
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
JobProgressionList.decorators = [
|
|
9
|
+
{ type: Component, args: [{
|
|
10
|
+
selector: 'app-job-progression-list',
|
|
11
|
+
template: "<ion-list class=\"ion-list-popover\">\n\n <ion-row class=\"ion-list-header column\">\n <ion-col>\n <ion-label>{{titleI18n | translate}}</ion-label>\n </ion-col>\n </ion-row>\n\n <ion-item *ngIf=\"!jobProgressions?.length\">\n {{'SOCIAL.JOB.PROGRESSION.EMPTY' | translate}}\n </ion-item>\n <ion-item *ngFor=\"let jobProgression of jobProgressions\">\n <ion-grid class=\"ion-no-margin\">\n <ion-row>\n <ion-col>\n {{jobProgression.message}}\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-progress-bar\n [value]=\"jobProgression.total > 0 ? jobProgression.current / jobProgression.total : undefined\"\n [type]=\"jobProgression.total > 0 ? 'determinate' : 'indeterminate'\">\n </ion-progress-bar>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-item>\n\n</ion-list>\n",
|
|
12
|
+
styles: [":host(.popover-viewport){overflow-y:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}"]
|
|
13
|
+
},] }
|
|
14
|
+
];
|
|
15
|
+
JobProgressionList.ctorParameters = () => [];
|
|
16
|
+
JobProgressionList.propDecorators = {
|
|
17
|
+
titleI18n: [{ type: Input }],
|
|
18
|
+
jobProgressions: [{ type: Input }]
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLmxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9qb2IvcHJvZ3Jlc3Npb24vam9iLXByb2dyZXNzaW9uLmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFhekQsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QjtJQUNBLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7O1lBZEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLDQ0QkFBMEM7O2FBRTNDOzs7O3dCQUdFLEtBQUs7OEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSm9iUHJvZ3Jlc3Npb24gfSBmcm9tICcuLi9qb2IubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpvYlByb2dyZXNzaW9uTGlzdE9wdGlvbnMge1xuICB0aXRsZUkxOG4/OiBzdHJpbmc7XG4gIGpvYlByb2dyZXNzaW9ucz86IEpvYlByb2dyZXNzaW9uW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1qb2ItcHJvZ3Jlc3Npb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItcHJvZ3Jlc3Npb24ubGlzdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam9iLXByb2dyZXNzaW9uLmxpc3QuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEpvYlByb2dyZXNzaW9uTGlzdCBpbXBsZW1lbnRzIE9uSW5pdCwgSm9iUHJvZ3Jlc3Npb25MaXN0T3B0aW9ucyB7XG5cbiAgQElucHV0KCkgdGl0bGVJMThuOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGpvYlByb2dyZXNzaW9uczogSm9iUHJvZ3Jlc3Npb25bXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { CoreModule } from '../../core/core.module';
|
|
4
|
+
import { SharedModule } from '../../shared/shared.module';
|
|
5
|
+
import { MessageModal } from './message.modal';
|
|
6
|
+
import { MessageForm } from './message.form';
|
|
7
|
+
export class MessageModule {
|
|
8
|
+
}
|
|
9
|
+
MessageModule.decorators = [
|
|
10
|
+
{ type: NgModule, args: [{
|
|
11
|
+
imports: [
|
|
12
|
+
CommonModule,
|
|
13
|
+
CoreModule,
|
|
14
|
+
SharedModule
|
|
15
|
+
],
|
|
16
|
+
declarations: [
|
|
17
|
+
MessageModal,
|
|
18
|
+
MessageForm
|
|
19
|
+
],
|
|
20
|
+
exports: [
|
|
21
|
+
MessageModal
|
|
22
|
+
]
|
|
23
|
+
},] }
|
|
24
|
+
];
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9tZXNzYWdlL21lc3NhZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdCN0MsTUFBTSxPQUFPLGFBQWE7OztZQWR6QixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRTtvQkFDWixZQUFZO29CQUNaLFdBQVc7aUJBQ1o7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJy4uLy4uL2NvcmUvY29yZS5tb2R1bGUnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgTWVzc2FnZU1vZGFsIH0gZnJvbSAnLi9tZXNzYWdlLm1vZGFsJztcbmltcG9ydCB7IE1lc3NhZ2VGb3JtIH0gZnJvbSAnLi9tZXNzYWdlLmZvcm0nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgU2hhcmVkTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE1lc3NhZ2VNb2RhbCxcbiAgICBNZXNzYWdlRm9ybVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTWVzc2FnZU1vZGFsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZU1vZHVsZSB7fVxuIl19
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export const SocialErrorCodes = {
|
|
2
2
|
LOAD_USER_EVENTS_ERROR: 50000,
|
|
3
3
|
SAVE_USER_EVENT_ERROR: 50001,
|
|
4
|
-
|
|
4
|
+
COUNT_USER_EVENT_ERROR: 50002,
|
|
5
|
+
SEND_MESSAGE_ERROR: 50003,
|
|
6
|
+
SUBSCRIBE_USER_EVENTS_ERROR: 50005,
|
|
7
|
+
SUBSCRIBE_JOB_PROGRESSION_ERROR: 50010
|
|
5
8
|
};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLmVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3NvY2lhbC5lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsc0JBQXNCLEVBQUUsS0FBSztJQUM3QixxQkFBcUIsRUFBRSxLQUFLO0lBQzVCLHNCQUFzQixFQUFFLEtBQUs7SUFDN0Isa0JBQWtCLEVBQUUsS0FBSztJQUN6QiwyQkFBMkIsRUFBRSxLQUFLO0lBRWxDLCtCQUErQixFQUFFLEtBQUs7Q0FDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTb2NpYWxFcnJvckNvZGVzID0ge1xuICBMT0FEX1VTRVJfRVZFTlRTX0VSUk9SOiA1MDAwMCxcbiAgU0FWRV9VU0VSX0VWRU5UX0VSUk9SOiA1MDAwMSxcbiAgQ09VTlRfVVNFUl9FVkVOVF9FUlJPUjogNTAwMDIsXG4gIFNFTkRfTUVTU0FHRV9FUlJPUjogNTAwMDMsXG4gIFNVQlNDUklCRV9VU0VSX0VWRU5UU19FUlJPUjogNTAwMDUsXG5cbiAgU1VCU0NSSUJFX0pPQl9QUk9HUkVTU0lPTl9FUlJPUjogNTAwMTBcbn07XG4iXX0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
1
|
+
import { InjectionToken, NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { UserEventsTable } from './user-event/user-events.table';
|
|
4
3
|
import { CoreModule } from '../core/core.module';
|
|
5
|
-
import { MessageModal } from './message/message.modal';
|
|
6
4
|
import { SharedModule } from '../shared/shared.module';
|
|
7
|
-
import {
|
|
5
|
+
import { UserEventModule } from './user-event/user-event.module';
|
|
6
|
+
import { MessageModule } from './message/message.module';
|
|
7
|
+
import { JobModule } from './job/job.module';
|
|
8
|
+
export const SocialModuleOptionsToken = new InjectionToken("SocialModuleOptions");
|
|
8
9
|
export class SocialModule {
|
|
9
10
|
}
|
|
10
11
|
SocialModule.decorators = [
|
|
@@ -12,17 +13,11 @@ SocialModule.decorators = [
|
|
|
12
13
|
imports: [
|
|
13
14
|
CommonModule,
|
|
14
15
|
CoreModule,
|
|
15
|
-
SharedModule
|
|
16
|
+
SharedModule,
|
|
17
|
+
UserEventModule,
|
|
18
|
+
JobModule,
|
|
19
|
+
MessageModule,
|
|
16
20
|
],
|
|
17
|
-
declarations: [
|
|
18
|
-
UserEventsTable,
|
|
19
|
-
MessageModal,
|
|
20
|
-
MessageForm
|
|
21
|
-
],
|
|
22
|
-
exports: [
|
|
23
|
-
UserEventsTable,
|
|
24
|
-
MessageModal
|
|
25
|
-
]
|
|
26
21
|
},] }
|
|
27
22
|
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3NvY2lhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFVN0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFhdkcsTUFBTSxPQUFPLFlBQVk7OztZQVh4QixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixZQUFZO29CQUVaLGVBQWU7b0JBQ2YsU0FBUztvQkFDVCxhQUFhO2lCQUNkO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnLi4vY29yZS9jb3JlLm1vZHVsZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBVc2VyRXZlbnRNb2R1bGUgfSBmcm9tICcuL3VzZXItZXZlbnQvdXNlci1ldmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgTWVzc2FnZU1vZHVsZSB9IGZyb20gJy4vbWVzc2FnZS9tZXNzYWdlLm1vZHVsZSc7XG5pbXBvcnQgeyBKb2JNb2R1bGUgfSBmcm9tICcuL2pvYi9qb2IubW9kdWxlJztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uT3B0aW9ucyB9IGZyb20gJy4vam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvY2lhbE1vZHVsZU9wdGlvbnMge1xuICBzaG93VXNlckV2ZW50Tm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAvLyB0b2RvIDogdXNlckV2ZW50Tm90aWZpY2F0aW9uT3B0aW9uc1xuICBzaG93Sm9iUHJvZ3Jlc3Npb246IGJvb2xlYW47XG4gIGpvYlByb2dyZXNzaW9uT3B0aW9uczogSm9iUHJvZ3Jlc3Npb25PcHRpb25zO1xufVxuXG5leHBvcnQgY29uc3QgU29jaWFsTW9kdWxlT3B0aW9uc1Rva2VuID0gbmV3IEluamVjdGlvblRva2VuPFNvY2lhbE1vZHVsZU9wdGlvbnM+KFwiU29jaWFsTW9kdWxlT3B0aW9uc1wiKTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcblxuICAgIFVzZXJFdmVudE1vZHVsZSxcbiAgICBKb2JNb2R1bGUsXG4gICAgTWVzc2FnZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU29jaWFsTW9kdWxlIHtcblxufVxuIl19
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, Optional } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
4
|
+
import { PopoverController } from '@ionic/angular';
|
|
5
|
+
import { UserEventServiceToken } from '../user-event.service';
|
|
6
|
+
import { UserEventNotificationList } from './user-event-notification.list';
|
|
7
|
+
import { AccountService } from '../../../core/services/account.service';
|
|
8
|
+
import { map } from 'rxjs/operators';
|
|
9
|
+
import { isNil } from '../../../shared/functions';
|
|
10
|
+
export class UserEventNotificationComponent {
|
|
11
|
+
constructor(userEventService, accountService, popoverController, cd) {
|
|
12
|
+
this.userEventService = userEventService;
|
|
13
|
+
this.accountService = accountService;
|
|
14
|
+
this.popoverController = popoverController;
|
|
15
|
+
this.cd = cd;
|
|
16
|
+
this.debug = false;
|
|
17
|
+
this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
|
|
18
|
+
this.disabled = false;
|
|
19
|
+
this.userEventsSubject = new BehaviorSubject(undefined);
|
|
20
|
+
this._subscriptions = new Subscription();
|
|
21
|
+
this._logPrefix = '[user-event-notification] ';
|
|
22
|
+
this._readEvent = new EventEmitter();
|
|
23
|
+
}
|
|
24
|
+
get count() {
|
|
25
|
+
var _a;
|
|
26
|
+
return (_a = this.userEventService) === null || _a === void 0 ? void 0 : _a.userEventCount.pipe(map(value => value === 0 ? undefined : value));
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
var _a;
|
|
30
|
+
if (isNil(this.userEventService)) {
|
|
31
|
+
console.warn(`${this._logPrefix}No service injected`);
|
|
32
|
+
this.disabled = true;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this._subscriptions.add(this.userEventService.watchAll(0, 10, 'creationDate', "desc", {
|
|
36
|
+
recipients: [(_a = this.accountService.person) === null || _a === void 0 ? void 0 : _a.pubkey]
|
|
37
|
+
}).subscribe(value => {
|
|
38
|
+
const data = value.data;
|
|
39
|
+
if (this.debug) {
|
|
40
|
+
console.debug(`${this._logPrefix}Receiving user events`, data);
|
|
41
|
+
}
|
|
42
|
+
this.userEventsSubject.next(data);
|
|
43
|
+
}));
|
|
44
|
+
this._readEvent.subscribe(value => {
|
|
45
|
+
this.userEventService.markAsRead(value);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
showList(event) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const popover = yield this.popoverController.create({
|
|
51
|
+
component: UserEventNotificationList,
|
|
52
|
+
componentProps: {
|
|
53
|
+
titleI18n: this.titleI18n,
|
|
54
|
+
userEvents: this.userEventsSubject,
|
|
55
|
+
readEvent: this._readEvent
|
|
56
|
+
},
|
|
57
|
+
backdropDismiss: true,
|
|
58
|
+
keyboardClose: true,
|
|
59
|
+
event,
|
|
60
|
+
translucent: true,
|
|
61
|
+
cssClass: 'popover-large'
|
|
62
|
+
});
|
|
63
|
+
yield popover.present();
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
markForCheck() {
|
|
67
|
+
this.cd.markForCheck();
|
|
68
|
+
}
|
|
69
|
+
ngOnDestroy() {
|
|
70
|
+
if (this.debug) {
|
|
71
|
+
console.debug(`${this._logPrefix}Destroying`);
|
|
72
|
+
}
|
|
73
|
+
this._subscriptions.unsubscribe();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
UserEventNotificationComponent.decorators = [
|
|
77
|
+
{ type: Component, args: [{
|
|
78
|
+
selector: 'app-user-event-notification-component',
|
|
79
|
+
template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"count | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n",
|
|
80
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
81
|
+
styles: [""]
|
|
82
|
+
},] }
|
|
83
|
+
];
|
|
84
|
+
UserEventNotificationComponent.ctorParameters = () => [
|
|
85
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [UserEventServiceToken,] }] },
|
|
86
|
+
{ type: AccountService },
|
|
87
|
+
{ type: PopoverController },
|
|
88
|
+
{ type: ChangeDetectorRef }
|
|
89
|
+
];
|
|
90
|
+
UserEventNotificationComponent.propDecorators = {
|
|
91
|
+
debug: [{ type: Input }],
|
|
92
|
+
titleI18n: [{ type: Input }],
|
|
93
|
+
disabled: [{ type: Input }]
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC1ub3RpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFxQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBb0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVFsRCxNQUFNLE9BQU8sOEJBQThCO0lBZ0J6QyxZQUNvRCxnQkFBMkUsRUFDbkgsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLEVBQXFCO1FBSG1CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkQ7UUFDbkgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFsQnhCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsc0NBQXNDLENBQUM7UUFDbkQsYUFBUSxHQUFH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Ozs7NENBa0JJLFFBQVEsWUFBSSxNQUFNLFNBQUMscUJBQXFCO1lBM0JwQyxjQUFjO1lBSmQsaUJBQWlCO1lBRlEsaUJBQWlCOzs7b0JBa0JoRCxLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBvcG92ZXJDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSVVzZXJFdmVudFNlcnZpY2UsIFVzZXJFdmVudFNlcnZpY2VUb2tlbiB9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0LCBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0T3B0aW9ucyB9IGZyb20gJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdCc7XG5pbXBvcnQgeyBJVXNlckV2ZW50LCBJVXNlckV2ZW50RmlsdGVyIH0gZnJvbSAnLi4vdXNlci1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC11c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi1jb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudE5vdGlmaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBkZWJ1ZyA9IGZhbHNlO1xuICBASW5wdXQoKSB0aXRsZUkxOG4gPSAnU09DSUFMLlVTRVJfRVZFTlQuTk9USUZJQ0FUSU9OLlRJVExFJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICB1c2VyRXZlbnRzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVVzZXJFdmVudDxhbnk+W10+KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IGNvdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckV2ZW50U2VydmljZT8udXNlckV2ZW50Q291bnQucGlwZShtYXAodmFsdWUgPT4gdmFsdWUgPT09IDAgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LW5vdGlmaWNhdGlvbl0gJztcbiAgcHJpdmF0ZSBfcmVhZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJVXNlckV2ZW50PGFueT4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChVc2VyRXZlbnRTZXJ2aWNlVG9rZW4pIHB1YmxpYyB1c2VyRXZlbnRTZXJ2aWNlOiBJVXNlckV2ZW50U2VydmljZTxJVXNlckV2ZW50PGFueT4sIElVc2VyRXZlbnRGaWx0ZXI8YW55Pj4sXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgaWYgKGlzTmlsKHRoaXMudXNlckV2ZW50U2VydmljZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9Tm8gc2VydmljZSBpbmplY3RlZGApO1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudXNlckV2ZW50U2VydmljZS53YXRjaEFsbCgwLDEwLCdjcmVhdGlvbkRhdGUnLCBcImRlc2NcIixcbiAgICAgICAge1xuICAgICAgICAgIHJlY2lwaWVudHM6IFt0aGlzLmFjY291bnRTZXJ2aWNlLnBlcnNvbj8ucHVia2V5XVxuICAgICAgICB9KS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gdmFsdWUuZGF0YTtcbiAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZpbmcgdXNlciBldmVudHNgLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVzZXJFdmVudHNTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl9yZWFkRXZlbnQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5tYXJrQXNSZWFkKHZhbHVlKTtcbiAgICB9KVxuICB9XG5cblxuICBhc3luYyBzaG93TGlzdChldmVudDogVUlFdmVudCkge1xuICAgIGNvbnN0IHBvcG92ZXIgPSBhd2FpdCB0aGlzLnBvcG92ZXJDb250cm9sbGVyLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3QsXG4gICAgICBjb21wb25lbnRQcm9wczogPFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3RPcHRpb25zPntcbiAgICAgICAgdGl0bGVJMThuOiB0aGlzLnRpdGxlSTE4bixcbiAgICAgICAgdXNlckV2ZW50czogdGhpcy51c2VyRXZlbnRzU3ViamVjdCxcbiAgICAgICAgcmVhZEV2ZW50OiB0aGlzLl9yZWFkRXZlbnRcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgICBrZXlib2FyZENsb3NlOiB0cnVlLFxuICAgICAgZXZlbnQsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZSdcbiAgICB9KTtcbiAgICBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXN0cm95aW5nYCk7XG4gICAgfVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component, Input, Output } from '@angular/core';
|
|
2
|
+
import { PopoverController } from '@ionic/angular';
|
|
3
|
+
export class UserEventNotificationList {
|
|
4
|
+
constructor(popoverController) {
|
|
5
|
+
this.popoverController = popoverController;
|
|
6
|
+
}
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
}
|
|
9
|
+
read($event, userEvent) {
|
|
10
|
+
var _a;
|
|
11
|
+
if (userEvent === null || userEvent === void 0 ? void 0 : userEvent.readDate)
|
|
12
|
+
return;
|
|
13
|
+
(_a = this.readEvent) === null || _a === void 0 ? void 0 : _a.emit(userEvent);
|
|
14
|
+
}
|
|
15
|
+
executeAction(action, userEvent) {
|
|
16
|
+
// Execute then close popover
|
|
17
|
+
action.executeAction(userEvent);
|
|
18
|
+
this.dismiss();
|
|
19
|
+
}
|
|
20
|
+
dismiss() {
|
|
21
|
+
this.popoverController.dismiss();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
UserEventNotificationList.decorators = [
|
|
25
|
+
{ type: Component, args: [{
|
|
26
|
+
selector: 'app-user-event-notification-list',
|
|
27
|
+
template: "\n<ion-list class=\"ion-list-popover\">\n\n <ion-row class=\"ion-list-header column\">\n <ion-col>\n <ion-label>{{titleI18n | translate}}</ion-label>\n </ion-col>\n </ion-row>\n\n <ion-item *ngIf=\"!(userEvents | async)?.length\">\n {{'SOCIAL.USER_EVENT.NOTIFICATION.EMPTY' | translate}}\n </ion-item>\n <ion-item\n *ngFor=\"let userEvent of userEvents | async\"\n (click)=\"read($event, userEvent)\"\n >\n\n <ion-avatar slot=\"start\">\n\n <img *ngIf=\"userEvent.avatar; else avatarIcon\" src=\"{{ userEvent.avatar }}\">\n\n <ng-template #avatarIcon>\n <app-icon\n *ngIf=\"userEvent.avatarIcon\"\n [ref]=\"userEvent.avatarIcon\"\n height=\"40\"\n width=\"40\"\n ></app-icon>\n </ng-template>\n\n </ion-avatar>\n\n <ion-grid class=\"ion-no-margin ion-no-padding\">\n <ion-row>\n <ion-col>\n <p [class.unread]=\"!userEvent.readDate\">\n {{userEvent.message}}\n </p>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"userEvent.actions?.length\">\n <ion-col>\n <p>\n <span *ngFor=\"let action of userEvent.actions\">\n <a\n [style.margin-right.px]=\"8\"\n [style.cursor]=\"'pointer'\"\n (click)=\"executeAction(action, userEvent)\"\n >\n {{ '➞ ' + action.name}}\n </a>\n </span>\n </p>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <app-icon\n *ngIf=\"userEvent.icon\"\n [ref]=\"userEvent.icon\"\n height=\"16\"\n width=\"16\"\n [style.vertical-align]=\"'sub'\"\n ></app-icon>\n <small>\n <span>{{userEvent.creationDate|dateFromNow}}</span>\n <span [style.color]=\"'gray'\">{{ ' | ' + (userEvent.creationDate|dateFormat:{time:true}) }}</span>\n </small>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-item>\n\n</ion-list>\n",
|
|
28
|
+
styles: [":host(.popover-viewport){overflow-y:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.unread{font-weight:700}"]
|
|
29
|
+
},] }
|
|
30
|
+
];
|
|
31
|
+
UserEventNotificationList.ctorParameters = () => [
|
|
32
|
+
{ type: PopoverController }
|
|
33
|
+
];
|
|
34
|
+
UserEventNotificationList.propDecorators = {
|
|
35
|
+
titleI18n: [{ type: Input }],
|
|
36
|
+
userEvents: [{ type: Input }],
|
|
37
|
+
readEvent: [{ type: Output }]
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWFuRCxNQUFNLE9BQU8seUJBQXlCO0lBT3BDLFlBQ1ksaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFFaEQsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWUsRUFBRSxTQUEwQjs7UUFDOUMsSUFBSSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsUUFBUTtZQUFFLE9BQU87UUFDaEMsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBdUIsRUFBRSxTQUEwQjtRQUMvRCw2QkFBNkI7UUFDN0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7O1lBakNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0NBQWtDO2dCQUM1Qyx1akVBQWtEOzthQUVuRDs7O1lBWlEsaUJBQWlCOzs7d0JBZXZCLEtBQUs7eUJBQ0wsS0FBSzt3QkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVVzZXJFdmVudCwgVXNlckV2ZW50QWN0aW9uIH0gZnJvbSAnLi4vdXNlci1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0T3B0aW9ucyB7XG4gIHRpdGxlSTE4bj86IHN0cmluZztcbiAgdXNlckV2ZW50cz86IE9ic2VydmFibGU8SVVzZXJFdmVudDxhbnk+W10+O1xuICByZWFkRXZlbnQ/OiBFdmVudEVtaXR0ZXI8SVVzZXJFdmVudDxhbnk+Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItZXZlbnQtbm90aWZpY2F0aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3QgaW1wbGVtZW50cyBPbkluaXQsIFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3RPcHRpb25zIHtcblxuICBASW5wdXQoKSB0aXRsZUkxOG46IHN0cmluZztcbiAgQElucHV0KCkgdXNlckV2ZW50czogU3ViamVjdDxJVXNlckV2ZW50PGFueT5bXT47XG5cbiAgQE91dHB1dCgpIHJlYWRFdmVudDogRXZlbnRFbWl0dGVyPElVc2VyRXZlbnQ8YW55Pj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlclxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgcmVhZCgkZXZlbnQ6IFVJRXZlbnQsIHVzZXJFdmVudDogSVVzZXJFdmVudDxhbnk+KSB7XG4gICAgaWYgKHVzZXJFdmVudD8ucmVhZERhdGUpIHJldHVybjtcbiAgICB0aGlzLnJlYWRFdmVudD8uZW1pdCh1c2VyRXZlbnQpO1xuICB9XG5cbiAgZXhlY3V0ZUFjdGlvbihhY3Rpb246IFVzZXJFdmVudEFjdGlvbiwgdXNlckV2ZW50OiBJVXNlckV2ZW50PGFueT4pIHtcbiAgICAvLyBFeGVjdXRlIHRoZW4gY2xvc2UgcG9wb3ZlclxuICAgIGFjdGlvbi5leGVjdXRlQWN0aW9uKHVzZXJFdmVudCk7XG4gICAgdGhpcy5kaXNtaXNzKCk7XG4gIH1cblxuICBkaXNtaXNzKCkge1xuICAgIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuZGlzbWlzcygpO1xuICB9XG59XG4iXX0=
|