@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47
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/README.md +24 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -380
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -311
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -75
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -842
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +2 -2
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
/* eslint-disable no-case-declarations */
|
|
2
|
-
/* eslint-disable no-param-reassign */
|
|
3
|
-
/* eslint-disable no-await-in-loop */
|
|
4
|
-
import { Injectable } from "@angular/core";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./filter.service";
|
|
7
|
-
import * as i2 from "./models/equipment.service";
|
|
8
|
-
export var SearchObjectType;
|
|
9
|
-
(function (SearchObjectType) {
|
|
10
|
-
SearchObjectType["USER"] = "USER";
|
|
11
|
-
SearchObjectType["EQUIPMENT"] = "EQUIPMENT";
|
|
12
|
-
SearchObjectType["TICKET"] = "TICKET";
|
|
13
|
-
SearchObjectType["LOCATION"] = "LOCATION";
|
|
14
|
-
SearchObjectType["FEATURE"] = "FEATURE";
|
|
15
|
-
SearchObjectType["TEMPLATE"] = "TEMPLATE";
|
|
16
|
-
})(SearchObjectType || (SearchObjectType = {}));
|
|
17
|
-
export class SearchService {
|
|
18
|
-
constructor(filterService, equipmentService) {
|
|
19
|
-
this.filterService = filterService;
|
|
20
|
-
this.equipmentService = equipmentService;
|
|
21
|
-
}
|
|
22
|
-
async searchForTermForTypeInMap(term, objectType, searchable) {
|
|
23
|
-
let results;
|
|
24
|
-
switch (objectType) {
|
|
25
|
-
case SearchObjectType.EQUIPMENT:
|
|
26
|
-
results = new Map();
|
|
27
|
-
for (const [space, equips] of searchable.entries()) {
|
|
28
|
-
const filteredEquips = this.filterService.filterEquipmentsForTerm(equips, term);
|
|
29
|
-
results.set(space, filteredEquips);
|
|
30
|
-
}
|
|
31
|
-
break;
|
|
32
|
-
case SearchObjectType.TICKET:
|
|
33
|
-
results = new Map();
|
|
34
|
-
for (const [space, tickets] of searchable.entries()) {
|
|
35
|
-
await Promise.all(tickets.map(async (ticket) => {
|
|
36
|
-
const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
|
|
37
|
-
if (equips.length > 0) {
|
|
38
|
-
ticket.equipments = equips;
|
|
39
|
-
}
|
|
40
|
-
}));
|
|
41
|
-
const filteredTickets = this.filterService.filterTicketsForTerm(tickets, term);
|
|
42
|
-
results.set(space, filteredTickets);
|
|
43
|
-
}
|
|
44
|
-
break;
|
|
45
|
-
case SearchObjectType.LOCATION:
|
|
46
|
-
results = this.filterService.filterLocationsForTerm(searchable, term);
|
|
47
|
-
break;
|
|
48
|
-
case SearchObjectType.USER:
|
|
49
|
-
results = [];
|
|
50
|
-
for (const orgObject of searchable) {
|
|
51
|
-
const orgResults = this.filterService.filterOrganisationsForTerm([orgObject.org], term);
|
|
52
|
-
if (orgResults.length === 0) {
|
|
53
|
-
const profiles = orgObject.users.map((object) => object.user);
|
|
54
|
-
const userResults = this.filterService.filterUsersForTerm(profiles, term);
|
|
55
|
-
const filteredUserMissions = orgObject.users.filter((object) => userResults.includes(object.user));
|
|
56
|
-
if (userResults.length > 0) {
|
|
57
|
-
results.push({
|
|
58
|
-
org: orgObject.org,
|
|
59
|
-
users: filteredUserMissions,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
results.push(orgObject);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
break;
|
|
68
|
-
case SearchObjectType.FEATURE:
|
|
69
|
-
results = new Map();
|
|
70
|
-
for (const [space, features] of searchable.entries()) {
|
|
71
|
-
const filteredFeatures = await this.filterService.filterFeaturesForTerm(features, term);
|
|
72
|
-
results.set(space, filteredFeatures);
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
case SearchObjectType.TEMPLATE:
|
|
76
|
-
results = new Map();
|
|
77
|
-
for (const [zone, templates] of searchable) {
|
|
78
|
-
const templateResults = this.filterService.filterTemplatesForTerm(templates, term);
|
|
79
|
-
if (templateResults.length > 0) {
|
|
80
|
-
results.set(zone, templateResults);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
84
|
-
default:
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
return results;
|
|
88
|
-
}
|
|
89
|
-
async searchForTermForTypeInList(term, objectType, searchable) {
|
|
90
|
-
let results;
|
|
91
|
-
switch (objectType) {
|
|
92
|
-
case SearchObjectType.EQUIPMENT:
|
|
93
|
-
results = this.filterService.filterEquipmentsForTerm(searchable, term);
|
|
94
|
-
break;
|
|
95
|
-
case SearchObjectType.TICKET:
|
|
96
|
-
await Promise.all(searchable.map(async (ticket) => {
|
|
97
|
-
const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
|
|
98
|
-
if (equips.length > 0) {
|
|
99
|
-
ticket.equipements = equips;
|
|
100
|
-
}
|
|
101
|
-
}));
|
|
102
|
-
results = this.filterService.filterTicketsForTerm(searchable, term);
|
|
103
|
-
break;
|
|
104
|
-
case SearchObjectType.LOCATION:
|
|
105
|
-
results = this.filterService.filterLocationsForTerm(searchable, term);
|
|
106
|
-
break;
|
|
107
|
-
case SearchObjectType.FEATURE:
|
|
108
|
-
results = this.filterService.filterFeaturesForTerm(searchable, term);
|
|
109
|
-
break;
|
|
110
|
-
default:
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
return results;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
SearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, deps: [{ token: i1.FilterService }, { token: i2.EquipmentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
-
SearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, providedIn: "root" });
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, decorators: [{
|
|
119
|
-
type: Injectable,
|
|
120
|
-
args: [{
|
|
121
|
-
providedIn: "root",
|
|
122
|
-
}]
|
|
123
|
-
}], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.EquipmentService }]; } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRTtZQUNoQixLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzNCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNoRCxNQUFNLGNBQWMsR0FDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FDdEMsTUFBTSxFQUNOLElBQUksQ0FDUCxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFH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QUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQy9DLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FDOUMsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzswR0EvSlEsYUFBYTs4R0FBYixhQUFhLGNBRlYsTUFBTTsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNaXNzaW9uIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi9maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gXCIuL21vZGVscy9lcXVpcG1lbnQuc2VydmljZVwiO1xuXG5leHBvcnQgZW51bSBTZWFyY2hPYmplY3RUeXBlIHtcbiAgICBVU0VSID0gXCJVU0VSXCIsXG4gICAgRVFVSVBNRU5UID0gXCJFUVVJUE1FTlRcIixcbiAgICBUSUNLRVQgPSBcIlRJQ0tFVFwiLFxuICAgIExPQ0FUSU9OID0gXCJMT0NBVElPTlwiLFxuICAgIEZFQVRVUkUgPSBcIkZFQVRVUkVcIixcbiAgICBURU1QTEFURSA9IFwiVEVNUExBVEVcIixcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVxdWlwbWVudFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UsXG4gICAgKSB7IH1cblxuICAgIGFzeW5jIHNlYXJjaEZvclRlcm1Gb3JUeXBlSW5NYXAoXG4gICAgICAgIHRlcm06IHN0cmluZyxcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcbiAgICAgICAgc2VhcmNoYWJsZTogYW55LFxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGxldCByZXN1bHRzO1xuICAgICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgZXF1aXBzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRFcXVpcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5USUNLRVQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgdGlja2V0c10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLm1hcChhc3luYyAodGlja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JUaWNrZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWlwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcG1lbnRzID0gZXF1aXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRpY2tldHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZFRpY2tldHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5VU0VSOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ09iamVjdCBvZiBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZ1Jlc3VsdHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9yZ2FuaXNhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmdPYmplY3Qub3JnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZ1Jlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9maWxlcyA9IG9yZ09iamVjdC51c2Vycy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gb2JqZWN0LnVzZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclJlc3VsdHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJVc2Vyc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFVzZXJNaXNzaW9ucyA9IG9yZ09iamVjdC51c2Vycy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gdXNlclJlc3VsdHMuaW5jbHVkZXMob2JqZWN0LnVzZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VyUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnOiBvcmdPYmplY3Qub3JnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyczogZmlsdGVyZWRVc2VyTWlzc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gob3JnT2JqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGZlYXR1cmVzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZlYXR1cmVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEZlYXR1cmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVEVNUExBVEU6XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFt6b25lLCB0ZW1wbGF0ZXNdIG9mIHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUZW1wbGF0ZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlcyBhcyBNaXNzaW9uW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wbGF0ZVJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoem9uZSwgdGVtcGxhdGVSZXN1bHRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbkxpc3QoXG4gICAgICAgIHRlcm06IHN0cmluZyxcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcbiAgICAgICAgc2VhcmNoYWJsZTogYW55W10sXG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICBsZXQgcmVzdWx0cztcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5USUNLRVQ6XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUubWFwKGFzeW5jICh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JUaWNrZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWlwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LmVxdWlwZW1lbnRzID0gZXF1aXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbn1cbiJdfQ==
|
|
1
|
+
/* eslint-disable no-case-declarations */
|
|
2
|
+
/* eslint-disable no-param-reassign */
|
|
3
|
+
/* eslint-disable no-await-in-loop */
|
|
4
|
+
import { Injectable } from "@angular/core";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./filter.service";
|
|
7
|
+
import * as i2 from "./models/equipment.service";
|
|
8
|
+
export var SearchObjectType;
|
|
9
|
+
(function (SearchObjectType) {
|
|
10
|
+
SearchObjectType["USER"] = "USER";
|
|
11
|
+
SearchObjectType["EQUIPMENT"] = "EQUIPMENT";
|
|
12
|
+
SearchObjectType["TICKET"] = "TICKET";
|
|
13
|
+
SearchObjectType["LOCATION"] = "LOCATION";
|
|
14
|
+
SearchObjectType["FEATURE"] = "FEATURE";
|
|
15
|
+
SearchObjectType["TEMPLATE"] = "TEMPLATE";
|
|
16
|
+
})(SearchObjectType || (SearchObjectType = {}));
|
|
17
|
+
export class SearchService {
|
|
18
|
+
constructor(filterService, equipmentService) {
|
|
19
|
+
this.filterService = filterService;
|
|
20
|
+
this.equipmentService = equipmentService;
|
|
21
|
+
}
|
|
22
|
+
async searchForTermForTypeInMap(term, objectType, searchable) {
|
|
23
|
+
let results;
|
|
24
|
+
switch (objectType) {
|
|
25
|
+
case SearchObjectType.EQUIPMENT:
|
|
26
|
+
results = new Map();
|
|
27
|
+
for (const [space, equips] of searchable.entries()) {
|
|
28
|
+
const filteredEquips = this.filterService.filterEquipmentsForTerm(equips, term);
|
|
29
|
+
results.set(space, filteredEquips);
|
|
30
|
+
}
|
|
31
|
+
break;
|
|
32
|
+
case SearchObjectType.TICKET:
|
|
33
|
+
results = new Map();
|
|
34
|
+
for (const [space, tickets] of searchable.entries()) {
|
|
35
|
+
await Promise.all(tickets.map(async (ticket) => {
|
|
36
|
+
const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
|
|
37
|
+
if (equips.length > 0) {
|
|
38
|
+
ticket.equipments = equips;
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
const filteredTickets = this.filterService.filterTicketsForTerm(tickets, term);
|
|
42
|
+
results.set(space, filteredTickets);
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
case SearchObjectType.LOCATION:
|
|
46
|
+
results = this.filterService.filterLocationsForTerm(searchable, term);
|
|
47
|
+
break;
|
|
48
|
+
case SearchObjectType.USER:
|
|
49
|
+
results = [];
|
|
50
|
+
for (const orgObject of searchable) {
|
|
51
|
+
const orgResults = this.filterService.filterOrganisationsForTerm([orgObject.org], term);
|
|
52
|
+
if (orgResults.length === 0) {
|
|
53
|
+
const profiles = orgObject.users.map((object) => object.user);
|
|
54
|
+
const userResults = this.filterService.filterUsersForTerm(profiles, term);
|
|
55
|
+
const filteredUserMissions = orgObject.users.filter((object) => userResults.includes(object.user));
|
|
56
|
+
if (userResults.length > 0) {
|
|
57
|
+
results.push({
|
|
58
|
+
org: orgObject.org,
|
|
59
|
+
users: filteredUserMissions,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
results.push(orgObject);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
case SearchObjectType.FEATURE:
|
|
69
|
+
results = new Map();
|
|
70
|
+
for (const [space, features] of searchable.entries()) {
|
|
71
|
+
const filteredFeatures = await this.filterService.filterFeaturesForTerm(features, term);
|
|
72
|
+
results.set(space, filteredFeatures);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
case SearchObjectType.TEMPLATE:
|
|
76
|
+
results = new Map();
|
|
77
|
+
for (const [zone, templates] of searchable) {
|
|
78
|
+
const templateResults = this.filterService.filterTemplatesForTerm(templates, term);
|
|
79
|
+
if (templateResults.length > 0) {
|
|
80
|
+
results.set(zone, templateResults);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
async searchForTermForTypeInList(term, objectType, searchable) {
|
|
90
|
+
let results;
|
|
91
|
+
switch (objectType) {
|
|
92
|
+
case SearchObjectType.EQUIPMENT:
|
|
93
|
+
results = this.filterService.filterEquipmentsForTerm(searchable, term);
|
|
94
|
+
break;
|
|
95
|
+
case SearchObjectType.TICKET:
|
|
96
|
+
await Promise.all(searchable.map(async (ticket) => {
|
|
97
|
+
const equips = await this.equipmentService.getEquipmentsForTicket(ticket);
|
|
98
|
+
if (equips.length > 0) {
|
|
99
|
+
ticket.equipements = equips;
|
|
100
|
+
}
|
|
101
|
+
}));
|
|
102
|
+
results = this.filterService.filterTicketsForTerm(searchable, term);
|
|
103
|
+
break;
|
|
104
|
+
case SearchObjectType.LOCATION:
|
|
105
|
+
results = this.filterService.filterLocationsForTerm(searchable, term);
|
|
106
|
+
break;
|
|
107
|
+
case SearchObjectType.FEATURE:
|
|
108
|
+
results = this.filterService.filterFeaturesForTerm(searchable, term);
|
|
109
|
+
break;
|
|
110
|
+
default:
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
return results;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
SearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, deps: [{ token: i1.FilterService }, { token: i2.EquipmentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
SearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, providedIn: "root" });
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SearchService, decorators: [{
|
|
119
|
+
type: Injectable,
|
|
120
|
+
args: [{
|
|
121
|
+
providedIn: "root",
|
|
122
|
+
}]
|
|
123
|
+
}], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.EquipmentService }]; } });
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRTtZQUNoQixLQUFLLGdCQUFnQixDQUFDLFNBQVM7Z0JBQzNCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNoRCxNQUFNLGNBQWMsR0FDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FDdEMsTUFBTSxFQUNOLElBQUksQ0FDUCxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFH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QUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQy9DLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FDOUMsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzswR0EvSlEsYUFBYTs4R0FBYixhQUFhLGNBRlYsTUFBTTsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1pc3Npb24gfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gXCIuL21vZGVscy9lcXVpcG1lbnQuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2VhcmNoT2JqZWN0VHlwZSB7XHJcbiAgICBVU0VSID0gXCJVU0VSXCIsXHJcbiAgICBFUVVJUE1FTlQgPSBcIkVRVUlQTUVOVFwiLFxyXG4gICAgVElDS0VUID0gXCJUSUNLRVRcIixcclxuICAgIExPQ0FUSU9OID0gXCJMT0NBVElPTlwiLFxyXG4gICAgRkVBVFVSRSA9IFwiRkVBVFVSRVwiLFxyXG4gICAgVEVNUExBVEUgPSBcIlRFTVBMQVRFXCIsXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTWFwKFxyXG4gICAgICAgIHRlcm06IHN0cmluZyxcclxuICAgICAgICBvYmplY3RUeXBlOiBTZWFyY2hPYmplY3RUeXBlLFxyXG4gICAgICAgIHNlYXJjaGFibGU6IGFueSxcclxuICAgICk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdHM7XHJcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGVxdWlwc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEVxdWlwcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoc3BhY2UsIGZpbHRlcmVkRXF1aXBzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCB0aWNrZXRzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLm1hcChhc3luYyAodGlja2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcG1lbnRzID0gZXF1aXBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkVGlja2V0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZFRpY2tldHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTG9jYXRpb25zRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5VU0VSOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcmdPYmplY3Qgb2Ygc2VhcmNoYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZ1Jlc3VsdHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT3JnYW5pc2F0aW9uc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JnT2JqZWN0Lm9yZ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmdSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9maWxlcyA9IG9yZ09iamVjdC51c2Vycy5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqZWN0KSA9PiBvYmplY3QudXNlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXNlclJlc3VsdHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclVzZXJzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRVc2VyTWlzc2lvbnMgPSBvcmdPYmplY3QudXNlcnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gdXNlclJlc3VsdHMuaW5jbHVkZXMob2JqZWN0LnVzZXIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlclJlc3VsdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmc6IG9yZ09iamVjdC5vcmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnM6IGZpbHRlcmVkVXNlck1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gob3JnT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkZFQVRVUkU6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGZlYXR1cmVzXSBvZiBzZWFyY2hhYmxlLmVudHJpZXMoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRmVhdHVyZXMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVEVNUExBVEU6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbem9uZSwgdGVtcGxhdGVzXSBvZiBzZWFyY2hhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRlbXBsYXRlc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXMgYXMgTWlzc2lvbltdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGVSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoem9uZSwgdGVtcGxhdGVSZXN1bHRzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTGlzdChcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcclxuICAgICAgICBzZWFyY2hhYmxlOiBhbnlbXSxcclxuICAgICk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICBsZXQgcmVzdWx0cztcclxuICAgICAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkVRVUlQTUVOVDpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZS5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmdldEVxdWlwbWVudHNGb3JUaWNrZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVxdWlwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBlbWVudHMgPSBlcXVpcHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkxPQ0FUSU9OOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkZFQVRVUkU6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { API } from "aws-amplify";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
5
|
-
export class SupportService {
|
|
6
|
-
constructor(modalService) {
|
|
7
|
-
this.modalService = modalService;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Open the support form
|
|
11
|
-
*/
|
|
12
|
-
openSupportForm(formComponent) {
|
|
13
|
-
this.modalReference = this.modalService.open(formComponent, {
|
|
14
|
-
modalDialogClass: 'modal-padding',
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Send support request to jira
|
|
19
|
-
*/
|
|
20
|
-
async sendSupport(data) {
|
|
21
|
-
return new Promise(async (resolve) => {
|
|
22
|
-
const response = await API.post("helpEmail", "/jira-email/new", {
|
|
23
|
-
body: data,
|
|
24
|
-
});
|
|
25
|
-
if (response.err) {
|
|
26
|
-
resolve('error');
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
resolve('send');
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
SupportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, deps: [{ token: i1.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
-
SupportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, providedIn: 'root' });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, decorators: [{
|
|
37
|
-
type: Injectable,
|
|
38
|
-
args: [{
|
|
39
|
-
providedIn: 'root'
|
|
40
|
-
}]
|
|
41
|
-
}], ctorParameters: function () { return [{ type: i1.NgbModal }]; } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { API } from "aws-amplify";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
5
|
+
export class SupportService {
|
|
6
|
+
constructor(modalService) {
|
|
7
|
+
this.modalService = modalService;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Open the support form
|
|
11
|
+
*/
|
|
12
|
+
openSupportForm(formComponent) {
|
|
13
|
+
this.modalReference = this.modalService.open(formComponent, {
|
|
14
|
+
modalDialogClass: 'modal-padding',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Send support request to jira
|
|
19
|
+
*/
|
|
20
|
+
async sendSupport(data) {
|
|
21
|
+
return new Promise(async (resolve) => {
|
|
22
|
+
const response = await API.post("helpEmail", "/jira-email/new", {
|
|
23
|
+
body: data,
|
|
24
|
+
});
|
|
25
|
+
if (response.err) {
|
|
26
|
+
resolve('error');
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resolve('send');
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
SupportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, deps: [{ token: i1.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
SupportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, providedIn: 'root' });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SupportService, decorators: [{
|
|
37
|
+
type: Injectable,
|
|
38
|
+
args: [{
|
|
39
|
+
providedIn: 'root'
|
|
40
|
+
}]
|
|
41
|
+
}], ctorParameters: function () { return [{ type: i1.NgbModal }]; } });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBbUIsWUFBc0I7UUFBdEIsaUJBQVksR0FBWixZQUFZLENBQVU7SUFBSSxDQUFDO0lBRTlDOztPQUVHO0lBQ0gsZUFBZSxDQUFDLGFBQWE7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDMUQsZ0JBQWdCLEVBQUUsZUFBZTtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVE7UUFDeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLEVBQUU7WUFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtnQkFDOUQsSUFBSSxFQUFHLElBQUk7YUFDWixDQUFDLENBQUM7WUFDSCxJQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUM7Z0JBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ2pCO2lCQUFJO2dCQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7MkdBNUJVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7ICBBUEkgfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnRTZXJ2aWNlIHtcclxuICBtb2RhbFJlZmVyZW5jZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIHRoZSBzdXBwb3J0IGZvcm1cclxuICAgKi9cclxuICBvcGVuU3VwcG9ydEZvcm0oZm9ybUNvbXBvbmVudCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZmVyZW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZm9ybUNvbXBvbmVudCwge1xyXG4gICAgICBtb2RhbERpYWxvZ0NsYXNzOiAnbW9kYWwtcGFkZGluZycsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgc3VwcG9ydCByZXF1ZXN0IHRvIGppcmFcclxuICAgKi9cclxuICBhc3luYyBzZW5kU3VwcG9ydChkYXRhOmFueSk6UHJvbWlzZTxzdHJpbmc+e1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKT0+e1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEFQSS5wb3N0KFwiaGVscEVtYWlsXCIsIFwiL2ppcmEtZW1haWwvbmV3XCIsIHtcclxuICAgICAgICBib2R5IDogZGF0YSxcclxuICAgICAgfSk7XHJcbiAgICAgIGlmKHJlc3BvbnNlLmVycil7XHJcbiAgICAgICAgcmVzb2x2ZSgnZXJyb3InKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZXNvbHZlKCdzZW5kJylcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl19
|