@sumaris-net/ngx-components 1.21.8 → 1.22.0-rc1
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 +1299 -191
- 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/esm2015/public_api.js +8 -1
- package/esm2015/src/app/core/icon/icon.component.js +5 -2
- package/esm2015/src/app/core/menu/menu.component.js +2 -2
- package/esm2015/src/app/shared/pipes/date-diff-duration.pipe.js +9 -5
- package/esm2015/src/app/shared/types.js +1 -1
- package/esm2015/src/app/social/job/job.model.js +26 -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 +200 -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 +89 -0
- package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +78 -0
- package/esm2015/src/app/social/user-event/testing/user-event.testing.service.js +73 -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 +33 -0
- package/esm2015/src/app/social/user-event/user-event.service.js +412 -173
- package/esm2015/src/app/social/user-event/user-events.table.js +18 -13
- package/esm2015/sumaris-net.ngx-components.js +9 -6
- package/fesm2015/sumaris-net.ngx-components.js +1121 -254
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +7 -0
- package/src/app/core/icon/icon.component.d.ts +4 -4
- package/src/app/shared/material/badge/badge-icon.test.d.ts +1 -1
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +6 -2
- package/src/app/shared/types.d.ts +4 -0
- package/src/app/social/job/job.model.d.ts +33 -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 +44 -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 +22 -0
- package/src/app/social/user-event/notification/user-event-notification.list.d.ts +30 -0
- package/src/app/social/user-event/testing/user-event.testing.service.d.ts +35 -0
- package/src/app/social/user-event/user-event.model.d.ts +52 -8
- package/src/app/social/user-event/user-event.module.d.ts +2 -0
- package/src/app/social/user-event/user-event.service.d.ts +101 -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 +16 -2
- package/src/assets/i18n/fr.json +15 -1
- package/src/theme/_ngx-components.scss +8 -0
- package/sumaris-net.ngx-components.d.ts +8 -5
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -0,0 +1,200 @@
|
|
|
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 { JobProgression } from '../job.model';
|
|
5
|
+
import { Subscription } from 'rxjs';
|
|
6
|
+
import { arraySize, isNil, toBoolean, toNumber } from '../../../shared/functions';
|
|
7
|
+
import { filter, map } from 'rxjs/operators';
|
|
8
|
+
import { PopoverController } from '@ionic/angular';
|
|
9
|
+
import { JobProgressionList } from './job-progression.list';
|
|
10
|
+
export class JobProgressionComponent {
|
|
11
|
+
constructor(jobProgressionService, popoverController, cd) {
|
|
12
|
+
this.jobProgressionService = jobProgressionService;
|
|
13
|
+
this.popoverController = popoverController;
|
|
14
|
+
this.cd = cd;
|
|
15
|
+
this.debug = false;
|
|
16
|
+
this.titleI18n = 'SOCIAL.JOB.PROGRESSION.TITLE';
|
|
17
|
+
this.jobFinished = new EventEmitter();
|
|
18
|
+
this.disabled = true;
|
|
19
|
+
this.color = 'accent';
|
|
20
|
+
this.mode = 'determinate';
|
|
21
|
+
this.value = 0;
|
|
22
|
+
this.jobProgressions = [];
|
|
23
|
+
this._subscriptions = new Subscription();
|
|
24
|
+
this._subscriptionsById = {};
|
|
25
|
+
this._logPrefix = '[job-progression] ';
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
var _a, _b, _c, _d;
|
|
29
|
+
if (isNil(this.jobProgressionService)) {
|
|
30
|
+
console.warn(`${this._logPrefix}No service injected`);
|
|
31
|
+
}
|
|
32
|
+
// parse options
|
|
33
|
+
this.autoHide = toBoolean((_a = this.options) === null || _a === void 0 ? void 0 : _a.autoHide, false);
|
|
34
|
+
this.visible = !this.autoHide;
|
|
35
|
+
this.autoHideDelay = toNumber((_b = this.options) === null || _b === void 0 ? void 0 : _b.autoHideDelay, 1000);
|
|
36
|
+
this.autoRemove = toBoolean((_c = this.options) === null || _c === void 0 ? void 0 : _c.autoRemove, true);
|
|
37
|
+
this.autoRemoveDelay = toNumber((_d = this.options) === null || _d === void 0 ? void 0 : _d.autoRemoveDelay, 1000);
|
|
38
|
+
}
|
|
39
|
+
addJob(id) {
|
|
40
|
+
if (isNil(this.jobProgressionService)) {
|
|
41
|
+
console.warn(`${this._logPrefix}No service injected. Can't add a job`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!!this.getProgression(id)) {
|
|
45
|
+
console.warn(`${this._logPrefix}Job (id=${id}) already present`);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (this.debug) {
|
|
49
|
+
console.debug(`${this._logPrefix}Add job id=${id}`);
|
|
50
|
+
}
|
|
51
|
+
// Adding empty job progression
|
|
52
|
+
const progression = new JobProgression(id);
|
|
53
|
+
this.jobProgressions.push(progression);
|
|
54
|
+
this.disabled = false;
|
|
55
|
+
const sub = this.jobProgressionService.listenChanges(id)
|
|
56
|
+
.pipe(filter(progression => {
|
|
57
|
+
if (id !== progression.id) {
|
|
58
|
+
console.error(`${this._logPrefix}Job progression (id=${progression.id}) doesn't match expected job (id=${id})`);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}), map(progression => {
|
|
63
|
+
// Ensure visible
|
|
64
|
+
this.visible = true;
|
|
65
|
+
// Get current progression object
|
|
66
|
+
const currentProgression = this.getProgression(id);
|
|
67
|
+
if (!currentProgression) {
|
|
68
|
+
// add it if absent
|
|
69
|
+
this.jobProgressions.push(progression);
|
|
70
|
+
if (this.debug) {
|
|
71
|
+
console.debug(`${this._logPrefix}Progression added id=${id}`, progression);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// update current
|
|
76
|
+
Object.assign(currentProgression, progression);
|
|
77
|
+
if (this.debug) {
|
|
78
|
+
console.debug(`${this._logPrefix}Progression updated id=${id}`, progression);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return progression;
|
|
82
|
+
}))
|
|
83
|
+
.subscribe(progression => {
|
|
84
|
+
// update value
|
|
85
|
+
this.updateValue();
|
|
86
|
+
// job finished
|
|
87
|
+
if (progression.total > 0 && progression.current == progression.total) {
|
|
88
|
+
if (this.debug) {
|
|
89
|
+
console.debug(`${this._logPrefix}Finished job id=${progression.id}`);
|
|
90
|
+
}
|
|
91
|
+
// emit event
|
|
92
|
+
this.jobFinished.emit(progression.id);
|
|
93
|
+
if (this.autoRemove) {
|
|
94
|
+
setTimeout(() => {
|
|
95
|
+
var _a;
|
|
96
|
+
this.removeJob(progression.id);
|
|
97
|
+
// If last job
|
|
98
|
+
if (this.autoHide && !((_a = this.jobProgressions) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
99
|
+
setTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
var _b;
|
|
101
|
+
(_b = this._listPopover) === null || _b === void 0 ? void 0 : _b.dismiss();
|
|
102
|
+
this.visible = false;
|
|
103
|
+
this.markForCheck();
|
|
104
|
+
}), this.autoHideDelay);
|
|
105
|
+
}
|
|
106
|
+
}, this.autoRemoveDelay);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
this._subscriptionsById[id] = sub;
|
|
111
|
+
this._subscriptions.add(sub);
|
|
112
|
+
}
|
|
113
|
+
removeJob(id) {
|
|
114
|
+
if (this.debug) {
|
|
115
|
+
console.debug(`${this._logPrefix}Remove job id=${id}`);
|
|
116
|
+
}
|
|
117
|
+
const sub = this._subscriptionsById[id];
|
|
118
|
+
if (sub) {
|
|
119
|
+
this._subscriptions.remove(sub);
|
|
120
|
+
sub.unsubscribe();
|
|
121
|
+
}
|
|
122
|
+
const progression = this.getProgression(id);
|
|
123
|
+
if (progression) {
|
|
124
|
+
this.jobProgressions.splice(this.jobProgressions.indexOf(progression), 1);
|
|
125
|
+
}
|
|
126
|
+
this.updateValue();
|
|
127
|
+
}
|
|
128
|
+
getProgression(id) {
|
|
129
|
+
return this.jobProgressions.find(progression => progression.id === id);
|
|
130
|
+
}
|
|
131
|
+
updateValue() {
|
|
132
|
+
if (this.debug) {
|
|
133
|
+
console.debug(`${this._logPrefix}Updating value`);
|
|
134
|
+
}
|
|
135
|
+
let value = 0;
|
|
136
|
+
const nbProgression = arraySize(this.jobProgressions);
|
|
137
|
+
let allIndeterminate = nbProgression > 0;
|
|
138
|
+
this.jobProgressions.forEach(progression => {
|
|
139
|
+
const indeterminate = progression.total === 0;
|
|
140
|
+
allIndeterminate = allIndeterminate && indeterminate;
|
|
141
|
+
if (!indeterminate) {
|
|
142
|
+
value = value + progression.current * 100 / progression.total;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
this.value = nbProgression > 0 ? value / nbProgression : 0;
|
|
146
|
+
this.mode = allIndeterminate ? 'indeterminate' : 'determinate';
|
|
147
|
+
if (this.debug) {
|
|
148
|
+
console.debug(`${this._logPrefix}Setting value=${this.value}, mode=${this.mode}`);
|
|
149
|
+
}
|
|
150
|
+
this.markForCheck();
|
|
151
|
+
}
|
|
152
|
+
showList(event) {
|
|
153
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
this._listPopover = yield this.popoverController.create({
|
|
155
|
+
component: JobProgressionList,
|
|
156
|
+
componentProps: {
|
|
157
|
+
titleI18n: this.titleI18n,
|
|
158
|
+
jobProgressions: this.jobProgressions
|
|
159
|
+
},
|
|
160
|
+
backdropDismiss: true,
|
|
161
|
+
keyboardClose: true,
|
|
162
|
+
event,
|
|
163
|
+
translucent: true,
|
|
164
|
+
cssClass: 'popover-large'
|
|
165
|
+
});
|
|
166
|
+
yield this._listPopover.present();
|
|
167
|
+
yield this._listPopover.onDidDismiss();
|
|
168
|
+
this._listPopover = undefined;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
markForCheck() {
|
|
172
|
+
this.cd.markForCheck();
|
|
173
|
+
}
|
|
174
|
+
ngOnDestroy() {
|
|
175
|
+
if (this.debug) {
|
|
176
|
+
console.debug(`${this._logPrefix}Destroying`);
|
|
177
|
+
}
|
|
178
|
+
this._subscriptions.unsubscribe();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
JobProgressionComponent.decorators = [
|
|
182
|
+
{ type: Component, args: [{
|
|
183
|
+
selector: 'app-job-progression',
|
|
184
|
+
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",
|
|
185
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
186
|
+
styles: [".floating-spinner{position:absolute;top:6px;left:5px}"]
|
|
187
|
+
},] }
|
|
188
|
+
];
|
|
189
|
+
JobProgressionComponent.ctorParameters = () => [
|
|
190
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [JobProgressionServiceToken,] }] },
|
|
191
|
+
{ type: PopoverController },
|
|
192
|
+
{ type: ChangeDetectorRef }
|
|
193
|
+
];
|
|
194
|
+
JobProgressionComponent.propDecorators = {
|
|
195
|
+
debug: [{ type: Input }],
|
|
196
|
+
titleI18n: [{ type: Input }],
|
|
197
|
+
options: [{ type: Input }],
|
|
198
|
+
jobFinished: [{ type: Output }]
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi9wcm9ncmVzc2lvbi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hKLE9BQU8sRUFBMEIsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUE2QixNQUFNLHdCQUF3QixDQUFDO0FBZXZGLE1BQU0sT0FBTyx1QkFBdUI7SUF3QmxDLFlBQzRELHFCQUE2QyxFQUM3RixpQkFBb0MsRUFDcEMsRUFBcUI7UUFGMkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUM3RixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBekJ4QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsY0FBUyxHQUFHLDhCQUE4QixDQUFDO1FBRTFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdu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LHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7NENBMEJJLFFBQVEsWUFBSSxNQUFNLFNBQUMsMEJBQTBCO1lBekN6QyxpQkFBaUI7WUFUUSxpQkFBaUI7OztvQkEyQmhELEtBQUs7d0JBQ0wsS0FBSztzQkFDTCxLQUFLOzBCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBJSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlLCBKb2JQcm9ncmVzc2lvblNlcnZpY2VUb2tlbiB9IGZyb20gJy4uL2pvYi5zZXJ2aWNlJztcbmltcG9ydCB7IEpvYlByb2dyZXNzaW9uIH0gZnJvbSAnLi4vam9iLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT2JqZWN0TWFwIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IGFycmF5U2l6ZSwgaXNOaWwsIHRvQm9vbGVhbiwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBKb2JQcm9ncmVzc2lvbkxpc3QsIEpvYlByb2dyZXNzaW9uTGlzdE9wdGlvbnMgfSBmcm9tICcuL2pvYi1wcm9ncmVzc2lvbi5saXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBKb2JQcm9ncmVzc2lvbk9wdGlvbnMge1xuICBhdXRvSGlkZTogYm9vbGVhbjtcbiAgYXV0b0hpZGVEZWxheTogbnVtYmVyO1xuICBhdXRvUmVtb3ZlOiBib29sZWFuO1xuICBhdXRvUmVtb3ZlRGVsYXk6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWpvYi1wcm9ncmVzc2lvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qb2ItcHJvZ3Jlc3Npb24uY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBkZWJ1ZyA9IGZhbHNlO1xuICBASW5wdXQoKSB0aXRsZUkxOG4gPSAnU09DSUFMLkpPQi5QUk9HUkVTU0lPTi5USVRMRSc7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IEpvYlByb2dyZXNzaW9uT3B0aW9ucztcbiAgQE91dHB1dCgpIGpvYkZpbmlzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQgPSB0cnVlO1xuICBjb2xvcjogVGhlbWVQYWxldHRlID0gJ2FjY2VudCc7XG4gIG1vZGU6IFByb2dyZXNzU3Bpbm5lck1vZGUgPSAnZGV0ZXJtaW5hdGUnO1xuICB2YWx1ZSA9IDA7XG4gIGpvYlByb2dyZXNzaW9uczogSm9iUHJvZ3Jlc3Npb25bXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBhdXRvSGlkZTogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGF1dG9IaWRlRGVsYXk6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGF1dG9SZW1vdmU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBhdXRvUmVtb3ZlRGVsYXk6IG51bWJlcjtcblxuICBwcml2YXRlIF9saXN0UG9wb3ZlcjogSFRNTElvblBvcG92ZXJFbGVtZW50O1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zQnlJZDogT2JqZWN0TWFwPFN1YnNjcmlwdGlvbj4gPSB7fTtcbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1tqb2ItcHJvZ3Jlc3Npb25dICc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChKb2JQcm9ncmVzc2lvblNlcnZpY2VUb2tlbikgcHJvdGVjdGVkIGpvYlByb2dyZXNzaW9uU2VydmljZTogSUpvYlByb2dyZXNzaW9uU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChpc05pbCh0aGlzLmpvYlByb2dyZXNzaW9uU2VydmljZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9Tm8gc2VydmljZSBpbmplY3RlZGApO1xuICAgIH1cbiAgICAvLyBwYXJzZSBvcHRpb25zXG4gICAgdGhpcy5hdXRvSGlkZSA9IHRvQm9vbGVhbih0aGlzLm9wdGlvbnM/LmF1dG9IaWRlLCBmYWxzZSk7XG4gICAgdGhpcy52aXNpYmxlID0gIXRoaXMuYXV0b0hpZGU7XG4gICAgdGhpcy5hdXRvSGlkZURlbGF5ID0gdG9OdW1iZXIodGhpcy5vcHRpb25zPy5hdXRvSGlkZURlbGF5LCAxMDAwKTtcbiAgICB0aGlzLmF1dG9SZW1vdmUgPSB0b0Jvb2xlYW4odGhpcy5vcHRpb25zPy5hdXRvUmVtb3ZlLCB0cnVlKTtcbiAgICB0aGlzLmF1dG9SZW1vdmVEZWxheSA9IHRvTnVtYmVyKHRoaXMub3B0aW9ucz8uYXV0b1JlbW92ZURlbGF5LCAxMDAwKTtcbiAgfVxuXG4gIGFkZEpvYihpZDogbnVtYmVyKSB7XG4gICAgaWYgKGlzTmlsKHRoaXMuam9iUHJvZ3Jlc3Npb25TZXJ2aWNlKSkge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1ObyBzZXJ2aWNlIGluamVjdGVkLiBDYW4ndCBhZGQgYSBqb2JgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISF0aGlzLmdldFByb2dyZXNzaW9uKGlkKSkge1xuICAgICAgY29uc29sZS53YXJuKGAke3RoaXMuX2xvZ1ByZWZpeH1Kb2IgKGlkPSR7aWR9KSBhbHJlYWR5IHByZXNlbnRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUFkZCBqb2IgaWQ9JHtpZH1gKTtcbiAgICB9XG4gICAgLy8gQWRkaW5nIGVtcHR5IGpvYiBwcm9ncmVzc2lvblxuICAgIGNvbnN0IHByb2dyZXNzaW9uID0gbmV3IEpvYlByb2dyZXNzaW9uKGlkKTtcbiAgICB0aGlzLmpvYlByb2dyZXNzaW9ucy5wdXNoKHByb2dyZXNzaW9uKTtcblxuICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YiA9IHRoaXMuam9iUHJvZ3Jlc3Npb25TZXJ2aWNlLmxpc3RlbkNoYW5nZXMoaWQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKHByb2dyZXNzaW9uID0+IHtcbiAgICAgICAgICBpZiAoaWQgIT09IHByb2dyZXNzaW9uLmlkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1Kb2IgcHJvZ3Jlc3Npb24gKGlkPSR7cHJvZ3Jlc3Npb24uaWR9KSBkb2Vzbid0IG1hdGNoIGV4cGVjdGVkIGpvYiAoaWQ9JHtpZH0pYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKHByb2dyZXNzaW9uID0+IHtcbiAgICAgICAgICAvLyBFbnN1cmUgdmlzaWJsZVxuICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgLy8gR2V0IGN1cnJlbnQgcHJvZ3Jlc3Npb24gb2JqZWN0XG4gICAgICAgICAgY29uc3QgY3VycmVudFByb2dyZXNzaW9uID0gdGhpcy5nZXRQcm9ncmVzc2lvbihpZCk7XG4gICAgICAgICAgaWYgKCFjdXJyZW50UHJvZ3Jlc3Npb24pIHtcbiAgICAgICAgICAgIC8vIGFkZCBpdCBpZiBhYnNlbnRcbiAgICAgICAgICAgIHRoaXMuam9iUHJvZ3Jlc3Npb25zLnB1c2gocHJvZ3Jlc3Npb24pO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9UHJvZ3Jlc3Npb24gYWRkZWQgaWQ9JHtpZH1gLCBwcm9ncmVzc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBjdXJyZW50XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGN1cnJlbnRQcm9ncmVzc2lvbiwgcHJvZ3Jlc3Npb24pO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9UHJvZ3Jlc3Npb24gdXBkYXRlZCBpZD0ke2lkfWAsIHByb2dyZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByb2dyZXNzaW9uO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShwcm9ncmVzc2lvbiA9PiB7XG4gICAgICAgIC8vIHVwZGF0ZSB2YWx1ZVxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XG5cbiAgICAgICAgLy8gam9iIGZpbmlzaGVkXG4gICAgICAgIGlmIChwcm9ncmVzc2lvbi50b3RhbCA+IDAgJiYgcHJvZ3Jlc3Npb24uY3VycmVudCA9PSBwcm9ncmVzc2lvbi50b3RhbCkge1xuICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1GaW5pc2hlZCBqb2IgaWQ9JHtwcm9ncmVzc2lvbi5pZH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZW1pdCBldmVudFxuICAgICAgICAgIHRoaXMuam9iRmluaXNoZWQuZW1pdChwcm9ncmVzc2lvbi5pZCk7XG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlbW92ZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlSm9iKHByb2dyZXNzaW9uLmlkKTtcbiAgICAgICAgICAgICAgLy8gSWYgbGFzdCBqb2JcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0hpZGUgJiYgIXRoaXMuam9iUHJvZ3Jlc3Npb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RQb3BvdmVyPy5kaXNtaXNzKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5hdXRvSGlkZURlbGF5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5hdXRvUmVtb3ZlRGVsYXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zQnlJZFtpZF0gPSBzdWI7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoc3ViKTtcbiAgfVxuXG4gIHJlbW92ZUpvYihpZDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVJlbW92ZSBqb2IgaWQ9JHtpZH1gKTtcbiAgICB9XG4gICAgY29uc3Qgc3ViID0gdGhpcy5fc3Vic2NyaXB0aW9uc0J5SWRbaWRdO1xuICAgIGlmIChzdWIpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucmVtb3ZlKHN1Yik7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgY29uc3QgcHJvZ3Jlc3Npb24gPSB0aGlzLmdldFByb2dyZXNzaW9uKGlkKTtcbiAgICBpZiAocHJvZ3Jlc3Npb24pIHtcbiAgICAgIHRoaXMuam9iUHJvZ3Jlc3Npb25zLnNwbGljZSh0aGlzLmpvYlByb2dyZXNzaW9ucy5pbmRleE9mKHByb2dyZXNzaW9uKSwgMSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcbiAgfVxuXG4gIGdldFByb2dyZXNzaW9uKGlkOiBudW1iZXIpOiBKb2JQcm9ncmVzc2lvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuam9iUHJvZ3Jlc3Npb25zLmZpbmQocHJvZ3Jlc3Npb24gPT4gcHJvZ3Jlc3Npb24uaWQgPT09IGlkKTtcbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKCkge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1VcGRhdGluZyB2YWx1ZWApO1xuICAgIH1cbiAgICBsZXQgdmFsdWUgPSAwO1xuICAgIGNvbnN0IG5iUHJvZ3Jlc3Npb24gPSBhcnJheVNpemUodGhpcy5qb2JQcm9ncmVzc2lvbnMpO1xuICAgIGxldCBhbGxJbmRldGVybWluYXRlID0gbmJQcm9ncmVzc2lvbiA+IDA7XG5cbiAgICB0aGlzLmpvYlByb2dyZXNzaW9ucy5mb3JFYWNoKHByb2dyZXNzaW9uID0+IHtcbiAgICAgIGNvbnN0IGluZGV0ZXJtaW5hdGUgPSBwcm9ncmVzc2lvbi50b3RhbCA9PT0gMDtcbiAgICAgIGFsbEluZGV0ZXJtaW5hdGUgPSBhbGxJbmRldGVybWluYXRlICYmIGluZGV0ZXJtaW5hdGU7XG4gICAgICBpZiAoIWluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSArIHByb2dyZXNzaW9uLmN1cnJlbnQgKiAxMDAgLyBwcm9ncmVzc2lvbi50b3RhbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudmFsdWUgPSBuYlByb2dyZXNzaW9uID4gMCA/IHZhbHVlIC8gbmJQcm9ncmVzc2lvbiA6IDA7XG4gICAgdGhpcy5tb2RlID0gYWxsSW5kZXRlcm1pbmF0ZSA/ICdpbmRldGVybWluYXRlJyA6ICdkZXRlcm1pbmF0ZSc7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVNldHRpbmcgdmFsdWU9JHt0aGlzLnZhbHVlfSwgbW9kZT0ke3RoaXMubW9kZX1gKTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgYXN5bmMgc2hvd0xpc3QoZXZlbnQ6IFVJRXZlbnQpIHtcbiAgICB0aGlzLl9saXN0UG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogSm9iUHJvZ3Jlc3Npb25MaXN0LFxuICAgICAgY29tcG9uZW50UHJvcHM6IDxKb2JQcm9ncmVzc2lvbkxpc3RPcHRpb25zPntcbiAgICAgICAgdGl0bGVJMThuOiB0aGlzLnRpdGxlSTE4bixcbiAgICAgICAgam9iUHJvZ3Jlc3Npb25zOiB0aGlzLmpvYlByb2dyZXNzaW9uc1xuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IHRydWUsXG4gICAgICBldmVudCxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgY3NzQ2xhc3M6ICdwb3BvdmVyLWxhcmdlJ1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuX2xpc3RQb3BvdmVyLnByZXNlbnQoKTtcbiAgICBhd2FpdCB0aGlzLl9saXN0UG9wb3Zlci5vbkRpZERpc21pc3MoKTtcbiAgICB0aGlzLl9saXN0UG9wb3ZlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXN0cm95aW5nYCk7XG4gICAgfVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -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\" class=\"ion-item-job-progression\">\n <ion-grid class=\"ion-no-margin\">\n <ion-row class=\"name\">\n <ion-col>\n {{jobProgression.name}}\n </ion-col>\n </ion-row>\n <ion-row class=\"message\">\n <ion-col>\n {{jobProgression.message}}\n </ion-col>\n </ion-row>\n <ion-row class=\"progress-bar\">\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}.ion-item-job-progression{font-size:.9em}.ion-item-job-progression .message{font-style:italic}.ion-item-job-progression .progress-bar{margin-top:5px;margin-bottom:5px}"]
|
|
13
|
+
},] }
|
|
14
|
+
];
|
|
15
|
+
JobProgressionList.ctorParameters = () => [];
|
|
16
|
+
JobProgressionList.propDecorators = {
|
|
17
|
+
titleI18n: [{ type: Input }],
|
|
18
|
+
jobProgressions: [{ type: Input }]
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLmxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9qb2IvcHJvZ3Jlc3Npb24vam9iLXByb2dyZXNzaW9uLmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFhekQsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QjtJQUNBLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7O1lBZEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLG9sQ0FBMEM7O2FBRTNDOzs7O3dCQUdFLEtBQUs7OEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSm9iUHJvZ3Jlc3Npb24gfSBmcm9tICcuLi9qb2IubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpvYlByb2dyZXNzaW9uTGlzdE9wdGlvbnMge1xuICB0aXRsZUkxOG4/OiBzdHJpbmc7XG4gIGpvYlByb2dyZXNzaW9ucz86IEpvYlByb2dyZXNzaW9uW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1qb2ItcHJvZ3Jlc3Npb24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItcHJvZ3Jlc3Npb24ubGlzdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam9iLXByb2dyZXNzaW9uLmxpc3Quc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvbkxpc3QgaW1wbGVtZW50cyBPbkluaXQsIEpvYlByb2dyZXNzaW9uTGlzdE9wdGlvbnMge1xuXG4gIEBJbnB1dCgpIHRpdGxlSTE4bjogc3RyaW5nO1xuICBASW5wdXQoKSBqb2JQcm9ncmVzc2lvbnM6IEpvYlByb2dyZXNzaW9uW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -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,89 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional } from '@angular/core';
|
|
3
|
+
import { PopoverController } from '@ionic/angular';
|
|
4
|
+
import { UserEventServiceToken } from '../user-event.service';
|
|
5
|
+
import { UserEventNotificationList } from './user-event-notification.list';
|
|
6
|
+
import { AccountService } from '../../../core/services/account.service';
|
|
7
|
+
import { map } from 'rxjs/operators';
|
|
8
|
+
import { isNil } from '../../../shared/functions';
|
|
9
|
+
export class UserEventNotificationComponent {
|
|
10
|
+
constructor(userEventService, accountService, popoverController) {
|
|
11
|
+
this.userEventService = userEventService;
|
|
12
|
+
this.accountService = accountService;
|
|
13
|
+
this.popoverController = popoverController;
|
|
14
|
+
this.debug = false;
|
|
15
|
+
this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
this._logPrefix = '[user-event-notification] ';
|
|
18
|
+
this._readEvent = new EventEmitter();
|
|
19
|
+
this._readEvents = new EventEmitter();
|
|
20
|
+
}
|
|
21
|
+
get count() {
|
|
22
|
+
var _a;
|
|
23
|
+
return (_a = this.userEventService) === null || _a === void 0 ? void 0 : _a.userEventCount.pipe(map(value => value === 0 ? undefined : value));
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
if (isNil(this.userEventService)) {
|
|
28
|
+
console.warn(`${this._logPrefix}No service injected`);
|
|
29
|
+
this.disabled = true;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Wait service
|
|
33
|
+
yield this.userEventService.ready();
|
|
34
|
+
// Subscribe to read event
|
|
35
|
+
this._readEvent.subscribe(value => {
|
|
36
|
+
// default: mark event as read
|
|
37
|
+
this.userEventService.markAsRead([value]);
|
|
38
|
+
});
|
|
39
|
+
this._readEvents.subscribe(value => {
|
|
40
|
+
this.userEventService.markAsRead(value);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
showList(event) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
// Reset count
|
|
47
|
+
this.userEventService.resetCount();
|
|
48
|
+
const popover = yield this.popoverController.create({
|
|
49
|
+
component: UserEventNotificationList,
|
|
50
|
+
componentProps: {
|
|
51
|
+
debug: this.debug,
|
|
52
|
+
titleI18n: this.titleI18n,
|
|
53
|
+
readEvent: this._readEvent,
|
|
54
|
+
readEvents: this._readEvents
|
|
55
|
+
},
|
|
56
|
+
backdropDismiss: true,
|
|
57
|
+
keyboardClose: true,
|
|
58
|
+
event,
|
|
59
|
+
translucent: true,
|
|
60
|
+
cssClass: 'popover-large'
|
|
61
|
+
});
|
|
62
|
+
yield popover.present();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
if (this.debug) {
|
|
67
|
+
console.debug(`${this._logPrefix}Destroying`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
UserEventNotificationComponent.decorators = [
|
|
72
|
+
{ type: Component, args: [{
|
|
73
|
+
selector: 'app-user-event-notification-component',
|
|
74
|
+
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",
|
|
75
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
76
|
+
styles: [""]
|
|
77
|
+
},] }
|
|
78
|
+
];
|
|
79
|
+
UserEventNotificationComponent.ctorParameters = () => [
|
|
80
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [UserEventServiceToken,] }] },
|
|
81
|
+
{ type: AccountService },
|
|
82
|
+
{ type: PopoverController }
|
|
83
|
+
];
|
|
84
|
+
UserEventNotificationComponent.propDecorators = {
|
|
85
|
+
debug: [{ type: Input }],
|
|
86
|
+
titleI18n: [{ type: Input }],
|
|
87
|
+
disabled: [{ type: Input }]
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC1ub3RpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFxQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBb0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVFsRCxNQUFNLE9BQU8sOEJBQThCO0lBY3pDLFlBQ29ELGdCQUEyRSxFQUNuSCxjQUE4QixFQUM5QixpQkFBb0M7UUFGSSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJEO1FBQ25ILG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZnZDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsc0NBQXNDLENBQUM7UUFDbkQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU1sQixlQUFVLEdBQUcsNEJBQTRCLENBQUM7UUFDMUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ2pELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFNeEQsQ0FBQztJQVpMLElBQUksS0FBSzs7UUFDUCxhQUFPLElBQUksQ0FBQyxnQkFBZ0IsMENBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ25HLENBQUM7SUFZSyxRQUFROztZQUVaLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUscUJBQXFCLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE9BQU87YUFDUjtZQUVELGVBQWU7WUFDZixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVwQywwQkFBMEI7WUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hDLDhCQUE4QjtnQkFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLFFBQVEsQ0FBQyxLQUFjOztZQUMzQixjQUFjO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRW5DLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztnQkFDbEQsU0FBUyxFQUFFLHlCQUF5QjtnQkFDcEMsY0FBYyxFQUFvQztvQkFDaEQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2lCQUM3QjtnQkFDRCxlQUFlLEVBQUUsSUFBSTtnQkFDckIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLEtBQUs7Z0JBQ0wsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFFBQVEsRUFBRSxlQUFlO2FBQzFCLENBQUMsQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLENBQUM7S0FBQTtJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsWUFBWSxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDOzs7WUF4RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1Q0FBdUM7Z0JBQ2pELG1WQUF1RDtnQkFFdkQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7NENBZ0JJLFFBQVEsWUFBSSxNQUFNLFNBQUMscUJBQXFCO1lBekJwQyxjQUFjO1lBSmQsaUJBQWlCOzs7b0JBZ0J2QixLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElVc2VyRXZlbnRTZXJ2aWNlLCBVc2VyRXZlbnRTZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdCwgVXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdE9wdGlvbnMgfSBmcm9tICcuL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmxpc3QnO1xuaW1wb3J0IHsgSVVzZXJFdmVudCwgSVVzZXJFdmVudEZpbHRlciB9IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXNlci1ldmVudC1ub3RpZmljYXRpb24tY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24uY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnROb3RpZmljYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGVJMThuID0gJ1NPQ0lBTC5VU0VSX0VWRU5ULk5PVElGSUNBVElPTi5USVRMRSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgZ2V0IGNvdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlckV2ZW50U2VydmljZT8udXNlckV2ZW50Q291bnQucGlwZShtYXAodmFsdWUgPT4gdmFsdWUgPT09IDAgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LW5vdGlmaWNhdGlvbl0gJztcbiAgcHJpdmF0ZSBfcmVhZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJVXNlckV2ZW50PGFueT4+KCk7XG4gIHByaXZhdGUgX3JlYWRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPElVc2VyRXZlbnQ8YW55PltdPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVXNlckV2ZW50U2VydmljZVRva2VuKSBwdWJsaWMgdXNlckV2ZW50U2VydmljZTogSVVzZXJFdmVudFNlcnZpY2U8SVVzZXJFdmVudDxhbnk+LCBJVXNlckV2ZW50RmlsdGVyPGFueT4+LFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlclxuICApIHsgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuXG4gICAgaWYgKGlzTmlsKHRoaXMudXNlckV2ZW50U2VydmljZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9Tm8gc2VydmljZSBpbmplY3RlZGApO1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2FpdCBzZXJ2aWNlXG4gICAgYXdhaXQgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLnJlYWR5KCk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gcmVhZCBldmVudFxuICAgIHRoaXMuX3JlYWRFdmVudC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgLy8gZGVmYXVsdDogbWFyayBldmVudCBhcyByZWFkXG4gICAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UubWFya0FzUmVhZChbdmFsdWVdKTtcbiAgICB9KTtcbiAgICB0aGlzLl9yZWFkRXZlbnRzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UubWFya0FzUmVhZCh2YWx1ZSk7XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHNob3dMaXN0KGV2ZW50OiBVSUV2ZW50KSB7XG4gICAgLy8gUmVzZXQgY291bnRcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UucmVzZXRDb3VudCgpO1xuXG4gICAgY29uc3QgcG9wb3ZlciA9IGF3YWl0IHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogVXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiA8VXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdE9wdGlvbnM+e1xuICAgICAgICBkZWJ1ZzogdGhpcy5kZWJ1ZyxcbiAgICAgICAgdGl0bGVJMThuOiB0aGlzLnRpdGxlSTE4bixcbiAgICAgICAgcmVhZEV2ZW50OiB0aGlzLl9yZWFkRXZlbnQsXG4gICAgICAgIHJlYWRFdmVudHM6IHRoaXMuX3JlYWRFdmVudHNcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgICBrZXlib2FyZENsb3NlOiB0cnVlLFxuICAgICAgZXZlbnQsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZSdcbiAgICB9KTtcbiAgICBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXN0cm95aW5nYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, Optional, Output } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
3
|
+
import { PopoverController } from '@ionic/angular';
|
|
4
|
+
import { UserEventServiceToken } from '../user-event.service';
|
|
5
|
+
export class UserEventNotificationList {
|
|
6
|
+
constructor(cd, popoverController, userEventService) {
|
|
7
|
+
this.cd = cd;
|
|
8
|
+
this.popoverController = popoverController;
|
|
9
|
+
this.userEventService = userEventService;
|
|
10
|
+
this.debug = false;
|
|
11
|
+
this.userEvents = new BehaviorSubject(undefined);
|
|
12
|
+
this.subscriptions = new Subscription();
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
// Watch all user events
|
|
16
|
+
this.subscriptions.add(this.userEventService
|
|
17
|
+
.watchAll(0, 10, 'creationDate', "desc", undefined)
|
|
18
|
+
.subscribe(result => {
|
|
19
|
+
if (this.debug)
|
|
20
|
+
console.debug(`[user-event-notification-list] receiving ${result.total} user events`, result.data);
|
|
21
|
+
this.userEvents.next(result.data);
|
|
22
|
+
this.markForCheck();
|
|
23
|
+
}));
|
|
24
|
+
// Listen changes
|
|
25
|
+
this.subscriptions.add(this.userEventService.listenChanges(undefined)
|
|
26
|
+
.subscribe(data => {
|
|
27
|
+
if (this.debug)
|
|
28
|
+
console.debug(`[user-event-notification-list] receiving ${data.length} new user events`, data);
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this.subscriptions.unsubscribe();
|
|
33
|
+
}
|
|
34
|
+
read(event, userEvent) {
|
|
35
|
+
var _a;
|
|
36
|
+
if (userEvent === null || userEvent === void 0 ? void 0 : userEvent.readDate)
|
|
37
|
+
return;
|
|
38
|
+
(_a = this.readEvent) === null || _a === void 0 ? void 0 : _a.emit(userEvent);
|
|
39
|
+
}
|
|
40
|
+
readAll(event) {
|
|
41
|
+
var _a;
|
|
42
|
+
const unreadUserEvents = (this.userEvents.value || []).filter(value => !value.readDate);
|
|
43
|
+
if (!unreadUserEvents.length)
|
|
44
|
+
return;
|
|
45
|
+
(_a = this.readEvents) === null || _a === void 0 ? void 0 : _a.emit(unreadUserEvents);
|
|
46
|
+
}
|
|
47
|
+
executeAction(action, userEvent) {
|
|
48
|
+
// Execute then close popover
|
|
49
|
+
action.executeAction(userEvent);
|
|
50
|
+
this.dismiss();
|
|
51
|
+
}
|
|
52
|
+
dismiss() {
|
|
53
|
+
this.popoverController.dismiss();
|
|
54
|
+
}
|
|
55
|
+
markForCheck() {
|
|
56
|
+
this.cd.markForCheck();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
UserEventNotificationList.decorators = [
|
|
60
|
+
{ type: Component, args: [{
|
|
61
|
+
selector: 'app-user-event-notification-list',
|
|
62
|
+
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-col class=\"top-action\">\n <a (click)=\"readAll($event)\">{{'SOCIAL.USER_EVENT.NOTIFICATION.READ_ALL' | translate}}</a>\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 message\">\n <ion-row>\n <ion-col>\n <p [class.unread]=\"!userEvent.readDate\" [innerHTML]=\"userEvent.message\"></p>\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"userEvent.actions?.length\">\n <ion-col>\n <span *ngFor=\"let action of userEvent.actions\" class=\"action\">\n <a (click)=\"executeAction(action, userEvent)\">\n <app-icon *ngIf=\"action.iconRef\" slot=\"start\" height=\"20\" width=\"20\" [ref]=\"action.iconRef\"></app-icon>\n {{ action.name }}\n </a>\n </span>\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; margin-right: 3px\"\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-row class=\"ion-list-footer column\">\n </ion-row>\n\n</ion-list>\n",
|
|
63
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
64
|
+
styles: [":host(.popover-viewport){overflow-y:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none}.unread{font-weight:700}.message{font-size:.9em}.message p{margin-top:5px;margin-bottom:5px}.top-action{text-align:end;margin-right:8px}.top-action a{cursor:pointer;color:#f5f5f5;font-style:italic}.action a{margin-right:10px;cursor:pointer}.action app-icon{vertical-align:middle}"]
|
|
65
|
+
},] }
|
|
66
|
+
];
|
|
67
|
+
UserEventNotificationList.ctorParameters = () => [
|
|
68
|
+
{ type: ChangeDetectorRef },
|
|
69
|
+
{ type: PopoverController },
|
|
70
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [UserEventServiceToken,] }] }
|
|
71
|
+
];
|
|
72
|
+
UserEventNotificationList.propDecorators = {
|
|
73
|
+
debug: [{ type: Input }],
|
|
74
|
+
titleI18n: [{ type: Input }],
|
|
75
|
+
readEvent: [{ type: Output }],
|
|
76
|
+
readEvents: [{ type: Output }]
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFlakYsTUFBTSxPQUFPLHlCQUF5QjtJQVVwQyxZQUNZLEVBQXFCLEVBQ3JCLGlCQUFvQyxFQUNJLGdCQUEyRTtRQUZuSCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ0kscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyRDtRQVh0SCxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBS3ZCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsU0FBUyxDQUFDLENBQUM7UUFDckQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTzdDLENBQUM7SUFFRCxRQUFRO1FBRU4sd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDO2FBQ2xELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLE1BQU0sQ0FBQyxLQUFLLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBRUYsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQzthQUMzQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxJQUFJLENBQUMsTUFBTSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqSCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBYyxFQUFFLFNBQTBCOztRQUM3QyxJQUFJLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxRQUFRO1lBQUUsT0FBTztRQUNoQyxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDbEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFjOztRQUNwQixNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3JDLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO0lBQzFDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBdUIsRUFBRSxTQUEwQjtRQUMvRCw2QkFBNkI7UUFDN0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUF4RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQ0FBa0M7Z0JBQzVDLDh1RUFBa0Q7Z0JBRWxELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBbEJpQyxpQkFBaUI7WUFHMUMsaUJBQWlCOzRDQTZCckIsUUFBUSxZQUFJLE1BQU0sU0FBQyxxQkFBcUI7OztvQkFYMUMsS0FBSzt3QkFDTCxLQUFLO3dCQUNMLE1BQU07eUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVXNlckV2ZW50LCBJVXNlckV2ZW50RmlsdGVyLCBVc2VyRXZlbnRBY3Rpb24gfSBmcm9tICcuLi91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElVc2VyRXZlbnRTZXJ2aWNlLCBVc2VyRXZlbnRTZXJ2aWNlVG9rZW4gfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3RPcHRpb25zIHtcbiAgZGVidWc/OiBib29sZWFuO1xuICB0aXRsZUkxOG4/OiBzdHJpbmc7XG4gIHJlYWRFdmVudD86IEV2ZW50RW1pdHRlcjxJVXNlckV2ZW50PGFueT4+O1xuICByZWFkRXZlbnRzPzogRXZlbnRFbWl0dGVyPElVc2VyRXZlbnQ8YW55PltdPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItZXZlbnQtbm90aWZpY2F0aW9uLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudE5vdGlmaWNhdGlvbkxpc3QgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgVXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdE9wdGlvbnMge1xuXG4gIEBJbnB1dCgpIGRlYnVnID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlSTE4bjogc3RyaW5nO1xuICBAT3V0cHV0KCkgcmVhZEV2ZW50OiBFdmVudEVtaXR0ZXI8SVVzZXJFdmVudDxhbnk+PjtcbiAgQE91dHB1dCgpIHJlYWRFdmVudHM6IEV2ZW50RW1pdHRlcjxJVXNlckV2ZW50PGFueT5bXT47XG5cbiAgdXNlckV2ZW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVVzZXJFdmVudDxhbnk+W10+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlcixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFVzZXJFdmVudFNlcnZpY2VUb2tlbikgcHVibGljIHVzZXJFdmVudFNlcnZpY2U6IElVc2VyRXZlbnRTZXJ2aWNlPElVc2VyRXZlbnQ8YW55PiwgSVVzZXJFdmVudEZpbHRlcjxhbnk+PixcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIC8vIFdhdGNoIGFsbCB1c2VyIGV2ZW50c1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2VcbiAgICAgICAgLndhdGNoQWxsKDAsIDEwLCAnY3JlYXRpb25EYXRlJywgXCJkZXNjXCIsIHVuZGVmaW5lZClcbiAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGBbdXNlci1ldmVudC1ub3RpZmljYXRpb24tbGlzdF0gcmVjZWl2aW5nICR7cmVzdWx0LnRvdGFsfSB1c2VyIGV2ZW50c2AsIHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICB0aGlzLnVzZXJFdmVudHMubmV4dChyZXN1bHQuZGF0YSlcbiAgICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBMaXN0ZW4gY2hhbmdlc1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UubGlzdGVuQ2hhbmdlcyh1bmRlZmluZWQpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZGVidWcpIGNvbnNvbGUuZGVidWcoYFt1c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi1saXN0XSByZWNlaXZpbmcgJHtkYXRhLmxlbmd0aH0gbmV3IHVzZXIgZXZlbnRzYCwgZGF0YSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVhZChldmVudDogVUlFdmVudCwgdXNlckV2ZW50OiBJVXNlckV2ZW50PGFueT4pIHtcbiAgICBpZiAodXNlckV2ZW50Py5yZWFkRGF0ZSkgcmV0dXJuO1xuICAgIHRoaXMucmVhZEV2ZW50Py5lbWl0KHVzZXJFdmVudCk7XG4gIH1cblxuICByZWFkQWxsKGV2ZW50OiBVSUV2ZW50KSB7XG4gICAgY29uc3QgdW5yZWFkVXNlckV2ZW50cyA9ICh0aGlzLnVzZXJFdmVudHMudmFsdWUgfHwgW10pLmZpbHRlcih2YWx1ZSA9PiAhdmFsdWUucmVhZERhdGUpO1xuICAgIGlmICghdW5yZWFkVXNlckV2ZW50cy5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLnJlYWRFdmVudHM/LmVtaXQodW5yZWFkVXNlckV2ZW50cyk7XG4gIH1cblxuICBleGVjdXRlQWN0aW9uKGFjdGlvbjogVXNlckV2ZW50QWN0aW9uLCB1c2VyRXZlbnQ6IElVc2VyRXZlbnQ8YW55Pikge1xuICAgIC8vIEV4ZWN1dGUgdGhlbiBjbG9zZSBwb3BvdmVyXG4gICAgYWN0aW9uLmV4ZWN1dGVBY3Rpb24odXNlckV2ZW50KTtcbiAgICB0aGlzLmRpc21pc3MoKTtcbiAgfVxuXG4gIGRpc21pc3MoKSB7XG4gICAgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5kaXNtaXNzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
+
import { AbstractUserEventService } from '../user-event.service';
|
|
4
|
+
import { UserEvent } from '../user-event.model';
|
|
5
|
+
import { of } from 'rxjs';
|
|
6
|
+
import { GraphqlService } from '../../../core/graphql/graphql.service';
|
|
7
|
+
import { AccountService } from '../../../core/services/account.service';
|
|
8
|
+
import { NetworkService } from '../../../core/services/network.service';
|
|
9
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
10
|
+
import { Environment, ENVIRONMENT } from '../../../../environments/environment.class';
|
|
11
|
+
export class UserEventTestService extends AbstractUserEventService {
|
|
12
|
+
constructor(graphql, accountService, network, translate, environment) {
|
|
13
|
+
super(graphql, accountService, network, translate, undefined, undefined, undefined, environment);
|
|
14
|
+
this.graphql = graphql;
|
|
15
|
+
this.accountService = accountService;
|
|
16
|
+
this.network = network;
|
|
17
|
+
this.translate = translate;
|
|
18
|
+
this.environment = environment;
|
|
19
|
+
this.userEvents = [];
|
|
20
|
+
}
|
|
21
|
+
fromObject(source) {
|
|
22
|
+
return UserEvent.fromObject(source);
|
|
23
|
+
}
|
|
24
|
+
add(entity) {
|
|
25
|
+
entity = this.processUserEvent(entity);
|
|
26
|
+
entity.id = this.userEvents.length + 1;
|
|
27
|
+
this.userEvents.push(entity);
|
|
28
|
+
this.count$.next(this.userEvents.length);
|
|
29
|
+
}
|
|
30
|
+
asFilter(filter) {
|
|
31
|
+
return filter;
|
|
32
|
+
}
|
|
33
|
+
count(filter, options) {
|
|
34
|
+
return Promise.resolve(this.userEvents.length);
|
|
35
|
+
}
|
|
36
|
+
delete(entity) {
|
|
37
|
+
return Promise.resolve(undefined);
|
|
38
|
+
}
|
|
39
|
+
deleteAll(data, opts) {
|
|
40
|
+
return Promise.resolve(undefined);
|
|
41
|
+
}
|
|
42
|
+
listenChanges(filter, options) {
|
|
43
|
+
return of();
|
|
44
|
+
}
|
|
45
|
+
save(entity, options) {
|
|
46
|
+
var _a;
|
|
47
|
+
const toSave = (_a = this.userEvents) === null || _a === void 0 ? void 0 : _a.find(value => value.id == (entity === null || entity === void 0 ? void 0 : entity.id));
|
|
48
|
+
Object.assign(toSave, entity);
|
|
49
|
+
return entity;
|
|
50
|
+
}
|
|
51
|
+
saveAll(data, opts) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
for (const entity of (data || [])) {
|
|
54
|
+
yield this.save(entity);
|
|
55
|
+
}
|
|
56
|
+
return Promise.resolve(this.userEvents);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
watchAll(offset, size, sortBy, sortDirection, filter, options) {
|
|
60
|
+
return of({ data: this.userEvents });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
UserEventTestService.decorators = [
|
|
64
|
+
{ type: Injectable }
|
|
65
|
+
];
|
|
66
|
+
UserEventTestService.ctorParameters = () => [
|
|
67
|
+
{ type: GraphqlService },
|
|
68
|
+
{ type: AccountService },
|
|
69
|
+
{ type: NetworkService },
|
|
70
|
+
{ type: TranslateService },
|
|
71
|
+
{ type: Environment, decorators: [{ type: Optional }, { type: Inject, args: [ENVIRONMENT,] }] }
|
|
72
|
+
];
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQXlCLE1BQU0sdUJBQXVCLENBQUM7QUFDeEYsT0FBTyxFQUFjLFNBQVMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFNdEYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUFvRDtJQUk1RixZQUNZLE9BQXVCLEVBQ3ZCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQ00sV0FBd0I7UUFFbkUsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQU52RixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDTSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVA3RCxlQUFVLEdBQXNCLEVBQUUsQ0FBQztJQVUzQyxDQUFDO0lBR0QsVUFBVSxDQUFDLE1BQVc7UUFDcEIsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBdUI7UUFDekIsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBb0I7UUFDM0IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFXLEVBQUUsT0FBdUM7UUFDeEQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVcsRUFBRSxJQUFVO1FBQy9CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQVcsRUFBRSxPQUFrRjtRQUMzRyxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFXLEVBQUUsT0FBa0M7O1FBRWxELE1BQU0sTUFBTSxTQUFHLElBQUksQ0FBQyxVQUFVLDBDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEVBQUUsQ0FBQSxDQUFDLENBQUM7UUFDdEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVLLE9BQU8sQ0FBQyxJQUFXLEVBQUUsSUFBVTs7WUFFbkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDakMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3pCO1lBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO0tBQUE7SUFFRCxRQUFRLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxNQUFlLEVBQUUsYUFBNkIsRUFBRSxNQUFxQixFQUFFLE9BQStCO1FBQzNJLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OztZQWxFRixVQUFVOzs7WUFURixjQUFjO1lBQ2QsY0FBYztZQUNkLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsV0FBVyx1QkFlZixRQUFRLFlBQUksTUFBTSxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFVzZXJFdmVudFNlcnZpY2UsIFVzZXJFdmVudFdhdGNoT3B0aW9ucyB9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJVXNlckV2ZW50LCBVc2VyRXZlbnQsIFVzZXJFdmVudEZpbHRlciB9IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMsIExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXNlckV2ZW50VGVzdFNlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFVzZXJFdmVudFNlcnZpY2U8VXNlckV2ZW50LCBVc2VyRXZlbnRGaWx0ZXI+IHtcblxuICBwcml2YXRlIHVzZXJFdmVudHM6IElVc2VyRXZlbnQ8YW55PltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBhY2NvdW50U2VydmljZSwgbmV0d29yaywgdHJhbnNsYXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBlbnZpcm9ubWVudCk7XG4gIH1cblxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpOiBVc2VyRXZlbnQge1xuICAgIHJldHVybiBVc2VyRXZlbnQuZnJvbU9iamVjdChzb3VyY2UpO1xuICB9XG5cbiAgYWRkKGVudGl0eTogSVVzZXJFdmVudDxhbnk+KSB7XG4gICAgZW50aXR5ID0gdGhpcy5wcm9jZXNzVXNlckV2ZW50KGVudGl0eSk7XG4gICAgZW50aXR5LmlkID0gdGhpcy51c2VyRXZlbnRzLmxlbmd0aCArIDE7XG4gICAgdGhpcy51c2VyRXZlbnRzLnB1c2goZW50aXR5KTtcbiAgICB0aGlzLmNvdW50JC5uZXh0KHRoaXMudXNlckV2ZW50cy5sZW5ndGgpO1xuICB9XG5cbiAgYXNGaWx0ZXIoZmlsdGVyOiBQYXJ0aWFsPGFueT4pOiBhbnkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb3VudChmaWx0ZXI6IGFueSwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlckV2ZW50cy5sZW5ndGgpO1xuICB9XG5cbiAgZGVsZXRlKGVudGl0eTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBkZWxldGVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGxpc3RlbkNoYW5nZXMoZmlsdGVyOiBhbnksIG9wdGlvbnM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgcmV0dXJuIG9mKCk7XG4gIH1cblxuICBzYXZlKGVudGl0eTogYW55LCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIGNvbnN0IHRvU2F2ZSA9IHRoaXMudXNlckV2ZW50cz8uZmluZCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PSBlbnRpdHk/LmlkKTtcbiAgICBPYmplY3QuYXNzaWduKHRvU2F2ZSwgZW50aXR5KTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGRhdGE6IGFueVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgKGRhdGEgfHwgW10pKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmUoZW50aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlckV2ZW50cyk7XG4gIH1cblxuICB3YXRjaEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sIG9wdGlvbnM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8YW55Pj4ge1xuICAgIHJldHVybiBvZih7IGRhdGE6IHRoaXMudXNlckV2ZW50cyB9KTtcbiAgfVxuXG59XG4iXX0=
|