tin-spa 2.0.0 → 2.1.0
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 +2 -2
- package/{esm2015/lib/classes/Classes.js → esm2020/lib/classes/Classes.mjs} +15 -55
- package/esm2020/lib/classes/TinCore.mjs +148 -0
- package/esm2020/lib/components/activity/activity.component.mjs +24 -0
- package/esm2020/lib/components/attach/attach.component.mjs +105 -0
- package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
- package/esm2020/lib/components/check/check.component.mjs +56 -0
- package/esm2020/lib/components/chips/chips.component.mjs +58 -0
- package/esm2020/lib/components/create-account/create-account.component.mjs +72 -0
- package/esm2020/lib/components/date/date.component.mjs +64 -0
- package/esm2020/lib/components/datetime/datetime.component.mjs +39 -0
- package/esm2020/lib/components/filter/filter.component.mjs +46 -0
- package/esm2020/lib/components/form/form.component.mjs +63 -0
- package/esm2020/lib/components/label/label.component.mjs +25 -0
- package/esm2020/lib/components/loader/loader.component.mjs +24 -0
- package/esm2020/lib/components/login/login.component.mjs +113 -0
- package/esm2020/lib/components/logs/logs.component.mjs +37 -0
- package/esm2020/lib/components/message/messageDialog.component.mjs +32 -0
- package/esm2020/lib/components/money/currency-input-mask.directive.mjs +185 -0
- package/esm2020/lib/components/money/currency-input-mask.module.mjs +28 -0
- package/esm2020/lib/components/money/money.component.mjs +64 -0
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +49 -0
- package/esm2020/lib/components/number/number.component.mjs +86 -0
- package/esm2020/lib/components/option/option.component.mjs +59 -0
- package/esm2020/lib/components/profile/profile.component.mjs +93 -0
- package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
- package/esm2020/lib/components/roles/addRoleDialog.component.mjs +61 -0
- package/esm2020/lib/components/roles/roles.component.mjs +91 -0
- package/esm2020/lib/components/select/select.component.mjs +71 -0
- package/esm2020/lib/components/settings/settings.component.mjs +63 -0
- package/esm2020/lib/components/signup/signup.component.mjs +50 -0
- package/esm2020/lib/components/steps/steps.component.mjs +90 -0
- package/esm2020/lib/components/table/detailsDialog.component.mjs +149 -0
- package/esm2020/lib/components/table/table.component.mjs +341 -0
- package/esm2020/lib/components/text/text.component.mjs +166 -0
- package/esm2020/lib/components/tiles/tiles.component.mjs +41 -0
- package/esm2020/lib/components/tin-spa.component.mjs +19 -0
- package/esm2020/lib/components/users/users.component.mjs +119 -0
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +29 -0
- package/esm2020/lib/modules/admin/admin.module.mjs +26 -0
- package/esm2020/lib/modules/index/index-routing.module.mjs +27 -0
- package/esm2020/lib/modules/index/index.module.mjs +26 -0
- package/esm2020/lib/modules/spa-admin.module.mjs +73 -0
- package/esm2020/lib/modules/spa-index.module.mjs +52 -0
- package/esm2020/lib/modules/spa-mat.module.mjs +67 -0
- package/esm2020/lib/modules/spa-user.module.mjs +49 -0
- package/esm2020/lib/modules/user/user-routing.module.mjs +23 -0
- package/esm2020/lib/modules/user/user.module.mjs +26 -0
- package/esm2020/lib/pipes/camelToWords.pipe.mjs +23 -0
- package/esm2020/lib/services/auth.service.mjs +142 -0
- package/esm2020/lib/services/data.service.mjs +125 -0
- package/esm2020/lib/services/export.service.mjs +16 -0
- package/esm2020/lib/services/http.service.mjs +79 -0
- package/esm2020/lib/services/loader-interceptor.service.mjs +77 -0
- package/esm2020/lib/services/loader.service.mjs +17 -0
- package/esm2020/lib/services/log.service.mjs +77 -0
- package/esm2020/lib/services/message.service.mjs +52 -0
- package/esm2020/lib/services/storage.service.mjs +34 -0
- package/esm2020/lib/services/tin-spa.service.mjs +14 -0
- package/esm2020/lib/tin-spa.module.mjs +114 -0
- package/esm2020/public-api.mjs +62 -0
- package/esm2020/tin-spa.mjs +5 -0
- package/fesm2015/tin-spa.mjs +3846 -0
- package/fesm2015/tin-spa.mjs.map +1 -0
- package/fesm2020/tin-spa.mjs +3829 -0
- package/fesm2020/tin-spa.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/classes/Classes.d.ts +58 -63
- package/lib/classes/TinCore.d.ts +1 -0
- package/lib/components/activity/activity.component.d.ts +3 -0
- package/lib/components/attach/attach.component.d.ts +4 -1
- package/lib/components/change-password/change-password.component.d.ts +3 -0
- package/lib/components/check/check.component.d.ts +3 -0
- package/lib/components/chips/chips.component.d.ts +3 -0
- package/lib/components/create-account/create-account.component.d.ts +3 -0
- package/lib/components/date/date.component.d.ts +14 -6
- package/lib/components/datetime/datetime.component.d.ts +3 -0
- package/lib/components/filter/filter.component.d.ts +4 -0
- package/lib/components/form/form.component.d.ts +16 -0
- package/lib/components/label/label.component.d.ts +3 -0
- package/lib/components/loader/loader.component.d.ts +3 -0
- package/lib/components/login/login.component.d.ts +6 -0
- package/lib/components/logs/logs.component.d.ts +3 -0
- package/lib/components/message/messageDialog.component.d.ts +3 -0
- package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
- package/lib/components/money/currency-input-mask.module.d.ts +9 -0
- package/lib/components/money/money.component.d.ts +9 -1
- package/lib/components/nav-menu/nav-menu.component.d.ts +3 -0
- package/lib/components/number/number.component.d.ts +29 -0
- package/lib/components/option/option.component.d.ts +3 -0
- package/lib/components/profile/profile.component.d.ts +6 -2
- package/lib/components/recover-account/recover-account.component.d.ts +3 -0
- package/lib/components/roles/addRoleDialog.component.d.ts +3 -0
- package/lib/components/roles/roles.component.d.ts +3 -0
- package/lib/components/select/select.component.d.ts +5 -1
- package/lib/components/settings/settings.component.d.ts +3 -0
- package/lib/components/signup/signup.component.d.ts +3 -0
- package/lib/components/steps/steps.component.d.ts +3 -0
- package/lib/components/table/detailsDialog.component.d.ts +28 -0
- package/lib/components/table/table.component.d.ts +57 -17
- package/lib/components/text/text.component.d.ts +13 -9
- package/lib/components/tiles/tiles.component.d.ts +3 -0
- package/lib/components/tin-spa.component.d.ts +4 -4
- package/lib/components/users/users.component.d.ts +4 -0
- package/lib/modules/admin/admin-routing.module.d.ts +7 -0
- package/lib/modules/admin/admin.module.d.ts +9 -0
- package/lib/modules/index/index-routing.module.d.ts +7 -0
- package/lib/modules/index/index.module.d.ts +9 -0
- package/lib/modules/spa-admin.module.d.ts +13 -0
- package/lib/modules/spa-index.module.d.ts +10 -0
- package/lib/modules/spa-mat.module.d.ts +31 -0
- package/lib/modules/spa-user.module.d.ts +9 -0
- package/lib/modules/user/user-routing.module.d.ts +7 -0
- package/lib/modules/user/user.module.d.ts +9 -0
- package/lib/pipes/camelToWords.pipe.d.ts +7 -0
- package/lib/services/auth.service.d.ts +3 -0
- package/lib/services/data.service.d.ts +5 -1
- package/lib/services/export.service.d.ts +3 -4
- package/lib/services/http.service.d.ts +3 -0
- package/lib/services/loader-interceptor.service.d.ts +3 -0
- package/lib/services/loader.service.d.ts +3 -0
- package/lib/services/log.service.d.ts +3 -0
- package/lib/services/message.service.d.ts +3 -0
- package/lib/services/storage.service.d.ts +3 -0
- package/lib/services/tin-spa.service.d.ts +3 -0
- package/lib/tin-spa.module.d.ts +30 -0
- package/package.json +24 -23
- package/public-api.d.ts +7 -2
- package/bundles/tin-spa.umd.js +0 -3672
- package/bundles/tin-spa.umd.js.map +0 -1
- package/bundles/tin-spa.umd.min.js +0 -16
- package/bundles/tin-spa.umd.min.js.map +0 -1
- package/esm2015/lib/classes/TinCore.js +0 -139
- package/esm2015/lib/components/activity/activity.component.js +0 -26
- package/esm2015/lib/components/attach/attach.component.js +0 -107
- package/esm2015/lib/components/change-password/change-password.component.js +0 -102
- package/esm2015/lib/components/check/check.component.js +0 -63
- package/esm2015/lib/components/chips/chips.component.js +0 -66
- package/esm2015/lib/components/create-account/create-account.component.js +0 -78
- package/esm2015/lib/components/date/date.component.js +0 -45
- package/esm2015/lib/components/datetime/datetime.component.js +0 -44
- package/esm2015/lib/components/filter/filter.component.js +0 -40
- package/esm2015/lib/components/label/label.component.js +0 -29
- package/esm2015/lib/components/loader/loader.component.js +0 -29
- package/esm2015/lib/components/login/login.component.js +0 -114
- package/esm2015/lib/components/logs/logs.component.js +0 -39
- package/esm2015/lib/components/message/messageDialog.component.js +0 -31
- package/esm2015/lib/components/money/money.component.js +0 -52
- package/esm2015/lib/components/nav-menu/nav-menu.component.js +0 -51
- package/esm2015/lib/components/option/option.component.js +0 -63
- package/esm2015/lib/components/profile/profile.component.js +0 -98
- package/esm2015/lib/components/recover-account/recover-account.component.js +0 -53
- package/esm2015/lib/components/roles/addRoleDialog.component.js +0 -61
- package/esm2015/lib/components/roles/roles.component.js +0 -94
- package/esm2015/lib/components/select/select.component.js +0 -77
- package/esm2015/lib/components/settings/settings.component.js +0 -63
- package/esm2015/lib/components/signup/signup.component.js +0 -57
- package/esm2015/lib/components/steps/steps.component.js +0 -93
- package/esm2015/lib/components/table/table.component.js +0 -107
- package/esm2015/lib/components/text/text.component.js +0 -165
- package/esm2015/lib/components/tiles/tiles.component.js +0 -41
- package/esm2015/lib/components/timeout/timeout.component.js +0 -90
- package/esm2015/lib/components/tin-spa.component.js +0 -19
- package/esm2015/lib/components/users/users.component.js +0 -120
- package/esm2015/lib/dnd.directive.js +0 -51
- package/esm2015/lib/modules/spa-admin.module.js +0 -50
- package/esm2015/lib/modules/spa-index.module.js +0 -35
- package/esm2015/lib/modules/spa-mat.module.js +0 -53
- package/esm2015/lib/modules/spa-user.module.js +0 -33
- package/esm2015/lib/services/auth.service.js +0 -155
- package/esm2015/lib/services/data.service.js +0 -115
- package/esm2015/lib/services/export.service.js +0 -29
- package/esm2015/lib/services/http.service.js +0 -84
- package/esm2015/lib/services/loader-interceptor.service.js +0 -83
- package/esm2015/lib/services/loader.service.js +0 -17
- package/esm2015/lib/services/log.service.js +0 -76
- package/esm2015/lib/services/message.service.js +0 -58
- package/esm2015/lib/services/storage.service.js +0 -42
- package/esm2015/lib/services/tin-spa.service.js +0 -14
- package/esm2015/lib/tin-spa.module.js +0 -91
- package/esm2015/public-api.js +0 -56
- package/esm2015/tin-spa.js +0 -8
- package/esm5/lib/classes/Classes.js +0 -313
- package/esm5/lib/classes/TinCore.js +0 -166
- package/esm5/lib/components/activity/activity.component.js +0 -27
- package/esm5/lib/components/attach/attach.component.js +0 -119
- package/esm5/lib/components/change-password/change-password.component.js +0 -104
- package/esm5/lib/components/check/check.component.js +0 -64
- package/esm5/lib/components/chips/chips.component.js +0 -68
- package/esm5/lib/components/create-account/create-account.component.js +0 -80
- package/esm5/lib/components/date/date.component.js +0 -46
- package/esm5/lib/components/datetime/datetime.component.js +0 -45
- package/esm5/lib/components/filter/filter.component.js +0 -41
- package/esm5/lib/components/label/label.component.js +0 -30
- package/esm5/lib/components/loader/loader.component.js +0 -31
- package/esm5/lib/components/login/login.component.js +0 -117
- package/esm5/lib/components/logs/logs.component.js +0 -41
- package/esm5/lib/components/message/messageDialog.component.js +0 -32
- package/esm5/lib/components/money/money.component.js +0 -53
- package/esm5/lib/components/nav-menu/nav-menu.component.js +0 -53
- package/esm5/lib/components/option/option.component.js +0 -64
- package/esm5/lib/components/profile/profile.component.js +0 -102
- package/esm5/lib/components/recover-account/recover-account.component.js +0 -55
- package/esm5/lib/components/roles/addRoleDialog.component.js +0 -63
- package/esm5/lib/components/roles/roles.component.js +0 -100
- package/esm5/lib/components/select/select.component.js +0 -79
- package/esm5/lib/components/settings/settings.component.js +0 -66
- package/esm5/lib/components/signup/signup.component.js +0 -59
- package/esm5/lib/components/steps/steps.component.js +0 -105
- package/esm5/lib/components/table/table.component.js +0 -109
- package/esm5/lib/components/text/text.component.js +0 -168
- package/esm5/lib/components/tiles/tiles.component.js +0 -42
- package/esm5/lib/components/timeout/timeout.component.js +0 -92
- package/esm5/lib/components/tin-spa.component.js +0 -17
- package/esm5/lib/components/users/users.component.js +0 -126
- package/esm5/lib/dnd.directive.js +0 -52
- package/esm5/lib/modules/spa-admin.module.js +0 -53
- package/esm5/lib/modules/spa-index.module.js +0 -38
- package/esm5/lib/modules/spa-mat.module.js +0 -56
- package/esm5/lib/modules/spa-user.module.js +0 -36
- package/esm5/lib/services/auth.service.js +0 -157
- package/esm5/lib/services/data.service.js +0 -116
- package/esm5/lib/services/export.service.js +0 -30
- package/esm5/lib/services/http.service.js +0 -85
- package/esm5/lib/services/loader-interceptor.service.js +0 -85
- package/esm5/lib/services/loader.service.js +0 -18
- package/esm5/lib/services/log.service.js +0 -112
- package/esm5/lib/services/message.service.js +0 -59
- package/esm5/lib/services/storage.service.js +0 -74
- package/esm5/lib/services/tin-spa.service.js +0 -16
- package/esm5/lib/tin-spa.module.js +0 -94
- package/esm5/public-api.js +0 -56
- package/esm5/tin-spa.js +0 -8
- package/fesm2015/tin-spa.js +0 -3184
- package/fesm2015/tin-spa.js.map +0 -1
- package/fesm5/tin-spa.js +0 -3422
- package/fesm5/tin-spa.js.map +0 -1
- package/lib/components/timeout/timeout.component.d.ts +0 -21
- package/lib/dnd.directive.d.ts +0 -8
- package/tin-spa.d.ts +0 -7
- package/tin-spa.metadata.json +0 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { AppConfig, CapItem } from '../classes/Classes';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./http.service";
|
|
6
|
+
export class DataServiceLib {
|
|
7
|
+
constructor(httpService) {
|
|
8
|
+
this.httpService = httpService;
|
|
9
|
+
this.appConfig = new AppConfig();
|
|
10
|
+
this.appConfigSource = new BehaviorSubject(this.appConfig);
|
|
11
|
+
this.appConfigObserv = this.appConfigSource.asObservable();
|
|
12
|
+
// caps: CapItem[];
|
|
13
|
+
this.capHome = new CapItem;
|
|
14
|
+
this.capAdmin = new CapItem;
|
|
15
|
+
this.capUsers = new CapItem;
|
|
16
|
+
this.capRoles = new CapItem;
|
|
17
|
+
this.capLogs = new CapItem;
|
|
18
|
+
this.capSettings = new CapItem;
|
|
19
|
+
this.tmpProfileuserName = "";
|
|
20
|
+
this.appConfig.appName = "App-Name";
|
|
21
|
+
this.appConfig.logo = "./assets/logo.png";
|
|
22
|
+
this.appConfig.ADAuth = true;
|
|
23
|
+
this.appConfig.capItems = [this.capAdmin, this.capHome];
|
|
24
|
+
this.capHome.name = "cap1";
|
|
25
|
+
this.capHome.display = "Home";
|
|
26
|
+
this.capHome.link = "home";
|
|
27
|
+
this.capAdmin.name = "cap2";
|
|
28
|
+
this.capAdmin.display = "Admin";
|
|
29
|
+
this.capAdmin.capSubItems = [this.capUsers, this.capRoles, this.capLogs, this.capSettings];
|
|
30
|
+
this.capUsers.name = "cap3";
|
|
31
|
+
this.capUsers.display = "Users";
|
|
32
|
+
this.capUsers.link = "home/admin/users";
|
|
33
|
+
this.capRoles.name = "cap4";
|
|
34
|
+
this.capRoles.display = "Roles";
|
|
35
|
+
this.capRoles.link = "home/admin/roles";
|
|
36
|
+
this.capLogs.name = "cap5";
|
|
37
|
+
this.capLogs.display = "Logs";
|
|
38
|
+
this.capLogs.link = "home/admin/logs";
|
|
39
|
+
this.capSettings.name = "cap6";
|
|
40
|
+
this.capSettings.display = "Settings";
|
|
41
|
+
this.capSettings.link = "home/admin/settings";
|
|
42
|
+
}
|
|
43
|
+
UpdateAppConfig(config) {
|
|
44
|
+
this.appConfigSource.next(config);
|
|
45
|
+
this.appConfig = config;
|
|
46
|
+
}
|
|
47
|
+
CallApi(action, data) {
|
|
48
|
+
if (!action.method) {
|
|
49
|
+
return this.httpService.Get(action.url);
|
|
50
|
+
}
|
|
51
|
+
if (action.method == 'get') {
|
|
52
|
+
return this.httpService.Get(action.url);
|
|
53
|
+
}
|
|
54
|
+
else if (action.method == 'post') {
|
|
55
|
+
return this.httpService.Post(action.url, data);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return this.httpService.Post(action.url, data);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//Users
|
|
62
|
+
GetUser() {
|
|
63
|
+
return this.httpService.Get("User/all/x");
|
|
64
|
+
}
|
|
65
|
+
RegisterAccount(u) {
|
|
66
|
+
return this.httpService.Post("User/register", u);
|
|
67
|
+
}
|
|
68
|
+
GetUserByID(val) {
|
|
69
|
+
return this.httpService.Get(`User/id/${val}`);
|
|
70
|
+
}
|
|
71
|
+
UpdateUser(profile) {
|
|
72
|
+
return this.httpService.Post("User/edit", profile);
|
|
73
|
+
}
|
|
74
|
+
UnlockUser(user) {
|
|
75
|
+
return this.httpService.Post("User/unlock", user);
|
|
76
|
+
}
|
|
77
|
+
LockUser(user) {
|
|
78
|
+
return this.httpService.Post("User/lock", user);
|
|
79
|
+
}
|
|
80
|
+
DeleteUser(user) {
|
|
81
|
+
return this.httpService.Post("User/delete", user);
|
|
82
|
+
}
|
|
83
|
+
Login(u) {
|
|
84
|
+
return this.httpService.Post("User/login", u);
|
|
85
|
+
}
|
|
86
|
+
ChangePassword(u) {
|
|
87
|
+
return this.httpService.Post("User/changepassword-self", u);
|
|
88
|
+
}
|
|
89
|
+
ChangePasswordAdmin(u) {
|
|
90
|
+
return this.httpService.Post("User/changepassword-admin", u);
|
|
91
|
+
}
|
|
92
|
+
SelfReset(u) {
|
|
93
|
+
return this.httpService.Post("Basic/SelfReset", u);
|
|
94
|
+
}
|
|
95
|
+
//Roles
|
|
96
|
+
PostRole(role, action) {
|
|
97
|
+
return this.httpService.Post(`Role?action=${action}`, role);
|
|
98
|
+
}
|
|
99
|
+
PutRole(role) {
|
|
100
|
+
return this.httpService.Put("Role", role);
|
|
101
|
+
}
|
|
102
|
+
GetRole(by, val) {
|
|
103
|
+
return this.httpService.Get("Role/all/x");
|
|
104
|
+
}
|
|
105
|
+
//Logs
|
|
106
|
+
GetLog(by, val) {
|
|
107
|
+
return this.httpService.Get("Log/all/x");
|
|
108
|
+
}
|
|
109
|
+
//Settings
|
|
110
|
+
GetSetting(by, val) {
|
|
111
|
+
return this.httpService.Get("Setting/all/x");
|
|
112
|
+
}
|
|
113
|
+
UpdateSetting(setting, action) {
|
|
114
|
+
return this.httpService.Post(`Setting?action=${action}`, setting);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
DataServiceLib.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataServiceLib, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
118
|
+
DataServiceLib.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataServiceLib, providedIn: 'root' });
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DataServiceLib, decorators: [{
|
|
120
|
+
type: Injectable,
|
|
121
|
+
args: [{
|
|
122
|
+
providedIn: 'root'
|
|
123
|
+
}]
|
|
124
|
+
}], ctorParameters: function () { return [{ type: i1.HttpService }]; } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVSxTQUFTLEVBQUUsT0FBTyxFQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7O0FBTW5ELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBa0M1QyxjQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNwQixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFNN0QsbUJBQW1CO1FBQ25CLFlBQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN0QixhQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdkIsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDO1FBQ3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUN2QixZQUFPLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDdEIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUduQix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFqRDdCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQTtRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxR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QVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQUk7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxFQUFVLEVBQUUsR0FBVztRQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFJRCxNQUFNO0lBQ0MsTUFBTSxDQUFDLEVBQVUsRUFBRSxHQUFXO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUdELFVBQVU7SUFDSCxVQUFVLENBQUMsRUFBVSxFQUFFLEdBQVc7UUFDdkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFjO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OzJHQXZKVSxjQUFjOytHQUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aW9uLCBBcHBDb25maWcsIENhcEl0ZW0sIFVzZXIgfSBmcm9tICcuLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhU2VydmljZUxpYiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlKSB7XHJcblxyXG4gICAgdGhpcy5hcHBDb25maWcuYXBwTmFtZSA9IFwiQXBwLU5hbWVcIjtcclxuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ28gPSBcIi4vYXNzZXRzL2xvZ28ucG5nXCJcclxuICAgIHRoaXMuYXBwQ29uZmlnLkFEQXV0aCA9IHRydWU7XHJcbiAgICB0aGlzLmFwcENvbmZpZy5jYXBJdGVtcyA9IFt0aGlzLmNhcEFkbWluLCB0aGlzLmNhcEhvbWVdO1xyXG5cclxuXHJcbiAgICB0aGlzLmNhcEhvbWUubmFtZSA9IFwiY2FwMVwiO1xyXG4gICAgdGhpcy5jYXBIb21lLmRpc3BsYXkgPSBcIkhvbWVcIjtcclxuICAgIHRoaXMuY2FwSG9tZS5saW5rID0gXCJob21lXCI7XHJcblxyXG4gICAgdGhpcy5jYXBBZG1pbi5uYW1lID0gXCJjYXAyXCI7XHJcbiAgICB0aGlzLmNhcEFkbWluLmRpc3BsYXkgPSBcIkFkbWluXCI7XHJcbiAgICB0aGlzLmNhcEFkbWluLmNhcFN1Ykl0ZW1zID0gW3RoaXMuY2FwVXNlcnMsIHRoaXMuY2FwUm9sZXMsIHRoaXMuY2FwTG9ncywgdGhpcy5jYXBTZXR0aW5nc107XHJcblxyXG4gICAgdGhpcy5jYXBVc2Vycy5uYW1lID0gXCJjYXAzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmRpc3BsYXkgPSBcIlVzZXJzXCI7XHJcbiAgICB0aGlzLmNhcFVzZXJzLmxpbmsgPSBcImhvbWUvYWRtaW4vdXNlcnNcIjtcclxuXHJcbiAgICB0aGlzLmNhcFJvbGVzLm5hbWUgPSBcImNhcDRcIlxyXG4gICAgdGhpcy5jYXBSb2xlcy5kaXNwbGF5ID0gXCJSb2xlc1wiO1xyXG4gICAgdGhpcy5jYXBSb2xlcy5saW5rID0gXCJob21lL2FkbWluL3JvbGVzXCI7XHJcblxyXG4gICAgdGhpcy5jYXBMb2dzLm5hbWUgPSBcImNhcDVcIlxyXG4gICAgdGhpcy5jYXBMb2dzLmRpc3BsYXkgPSBcIkxvZ3NcIjtcclxuICAgIHRoaXMuY2FwTG9ncy5saW5rID0gXCJob21lL2FkbWluL2xvZ3NcIjtcclxuXHJcbiAgICB0aGlzLmNhcFNldHRpbmdzLm5hbWUgPSBcImNhcDZcIlxyXG4gICAgdGhpcy5jYXBTZXR0aW5ncy5kaXNwbGF5ID0gXCJTZXR0aW5nc1wiO1xyXG4gICAgdGhpcy5jYXBTZXR0aW5ncy5saW5rID0gXCJob21lL2FkbWluL3NldHRpbmdzXCI7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG4gIHByaXZhdGUgYXBwQ29uZmlnU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmFwcENvbmZpZyk7XHJcbiAgcHVibGljIGFwcENvbmZpZ09ic2VydiA9IHRoaXMuYXBwQ29uZmlnU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIFVwZGF0ZUFwcENvbmZpZyhjb25maWc6IEFwcENvbmZpZykge1xyXG4gICAgdGhpcy5hcHBDb25maWdTb3VyY2UubmV4dChjb25maWcpO1xyXG4gICAgdGhpcy5hcHBDb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICAvLyBjYXBzOiBDYXBJdGVtW107XHJcbiAgY2FwSG9tZSA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcEFkbWluID0gbmV3IENhcEl0ZW07XHJcbiAgY2FwVXNlcnMgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBSb2xlcyA9IG5ldyBDYXBJdGVtO1xyXG4gIGNhcExvZ3MgPSBuZXcgQ2FwSXRlbTtcclxuICBjYXBTZXR0aW5ncyA9IG5ldyBDYXBJdGVtO1xyXG5cclxuXHJcbiAgcHVibGljIHRtcFByb2ZpbGV1c2VyTmFtZSA9IFwiXCI7XHJcblxyXG5cclxuXHJcbiAgcHVibGljIENhbGxBcGkoYWN0aW9uOiBBY3Rpb24sIGRhdGE6IGFueSApIHtcclxuXHJcbiAgICBpZiAoIWFjdGlvbi5tZXRob2Qpe1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5HZXQoYWN0aW9uLnVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoYWN0aW9uLm1ldGhvZCA9PSdnZXQnKXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KGFjdGlvbi51cmwpO1xyXG4gICAgfSBlbHNlIGlmIChhY3Rpb24ubWV0aG9kID09ICdwb3N0Jyl7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoYWN0aW9uLnVybCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KGFjdGlvbi51cmwsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy9Vc2Vyc1xyXG4gIHB1YmxpYyBHZXRVc2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuR2V0KFwiVXNlci9hbGwveFwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWdpc3RlckFjY291bnQodSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvcmVnaXN0ZXJcIiwgdSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VXNlckJ5SUQodmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChgVXNlci9pZC8ke3ZhbH1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBVcGRhdGVVc2VyKHByb2ZpbGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2VkaXRcIiwgcHJvZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVW5sb2NrVXNlcih1c2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci91bmxvY2tcIiwgdXNlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9ja1VzZXIodXNlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvbG9ja1wiLCB1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEZWxldGVVc2VyKHVzZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLlBvc3QoXCJVc2VyL2RlbGV0ZVwiLCB1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2dpbih1OiBVc2VyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9sb2dpblwiLCB1KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDaGFuZ2VQYXNzd29yZCh1KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5Qb3N0KFwiVXNlci9jaGFuZ2VwYXNzd29yZC1zZWxmXCIsIHUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENoYW5nZVBhc3N3b3JkQWRtaW4odSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIlVzZXIvY2hhbmdlcGFzc3dvcmQtYWRtaW5cIiwgdSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZlJlc2V0KHU6IFVzZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChcIkJhc2ljL1NlbGZSZXNldFwiLCB1KTtcclxuICB9XHJcblxyXG5cclxuICAvL1JvbGVzXHJcblxyXG4gIHB1YmxpYyBQb3N0Um9sZShyb2xlLCBhY3Rpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChgUm9sZT9hY3Rpb249JHthY3Rpb259YCwgcm9sZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUHV0Um9sZShyb2xlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5QdXQoXCJSb2xlXCIsIHJvbGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFJvbGUoYnk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIlJvbGUvYWxsL3hcIik7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vTG9nc1xyXG4gIHB1YmxpYyBHZXRMb2coYnk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIkxvZy9hbGwveFwiKTtcclxuICB9XHJcblxyXG5cclxuICAvL1NldHRpbmdzXHJcbiAgcHVibGljIEdldFNldHRpbmcoYnk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLkdldChcIlNldHRpbmcvYWxsL3hcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlU2V0dGluZyhzZXR0aW5nLCBhY3Rpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuUG9zdChgU2V0dGluZz9hY3Rpb249JHthY3Rpb259YCwgc2V0dGluZyk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
// import * as FileSaver from 'file-saver';
|
|
4
|
+
// import * as XLSX from 'xlsx';
|
|
5
|
+
export class ExportService {
|
|
6
|
+
constructor() { }
|
|
7
|
+
}
|
|
8
|
+
ExportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9
|
+
ExportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportService, providedIn: 'root' });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExportService, decorators: [{
|
|
11
|
+
type: Injectable,
|
|
12
|
+
args: [{
|
|
13
|
+
providedIn: 'root'
|
|
14
|
+
}]
|
|
15
|
+
}], ctorParameters: function () { return []; } });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFDM0MsMkNBQTJDO0FBQzNDLGdDQUFnQztBQUtoQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixnQkFBZ0IsQ0FBQzs7MEdBRk4sYUFBYTs4R0FBYixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLy8gaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG4vLyBpbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwb3J0U2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8vIGZpbGVUeXBlID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnO1xyXG4gIC8vIGZpbGVFeHRlbnNpb24gPSAnLnhsc3gnO1xyXG5cclxuICAvLyBwdWJsaWMgZXhwb3J0RXhjZWwoanNvbkRhdGE6IGFueVtdLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gIC8vICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGpzb25EYXRhKTtcclxuICAvLyAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0geyBTaGVldHM6IHsgJ2RhdGEnOiB3cyB9LCBTaGVldE5hbWVzOiBbJ2RhdGEnXSB9O1xyXG4gIC8vICAgY29uc3QgZXhjZWxCdWZmZXI6IGFueSA9IFhMU1gud3JpdGUod2IsIHsgYm9va1R5cGU6ICd4bHN4JywgdHlwZTogJ2FycmF5JyB9KTtcclxuICAvLyAgIHRoaXMuc2F2ZUV4Y2VsRmlsZShleGNlbEJ1ZmZlciwgZmlsZU5hbWUpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBzYXZlRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogdGhpcy5maWxlVHlwZSB9KTtcclxuICAvLyAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyB0aGlzLmZpbGVFeHRlbnNpb24pO1xyXG4gIC8vIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { HttpHeaders, } from "@angular/common/http";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
import * as i2 from "@angular/router";
|
|
6
|
+
export class HttpService {
|
|
7
|
+
constructor(httpClient, router) {
|
|
8
|
+
this.httpClient = httpClient;
|
|
9
|
+
this.router = router;
|
|
10
|
+
//----Set apiUrl from the data service of the project---//
|
|
11
|
+
this.apiUrl = "https://api.solinc.co.zw/"; //default
|
|
12
|
+
this.httpOptions_Legacy = {
|
|
13
|
+
headers: new HttpHeaders({
|
|
14
|
+
Accept: "application/json",
|
|
15
|
+
"Content-Type": "application/json",
|
|
16
|
+
Authorization: "Basic " + btoa("emptyUser:emptyToken"),
|
|
17
|
+
}),
|
|
18
|
+
resposeType: "json",
|
|
19
|
+
};
|
|
20
|
+
this.httpOptions_Files = {
|
|
21
|
+
headers: new HttpHeaders({
|
|
22
|
+
Authorization: "Basic " + btoa("tnyagato:j5Toszfr@ys"),
|
|
23
|
+
}),
|
|
24
|
+
resposeType: "json",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//POST
|
|
28
|
+
Post(service, data) {
|
|
29
|
+
return this.httpClient.post(this.apiUrl + service, data, this.httpOptions_Legacy);
|
|
30
|
+
}
|
|
31
|
+
//PUT
|
|
32
|
+
Put(service, data) {
|
|
33
|
+
return this.httpClient.put(this.apiUrl + service, data, this.httpOptions_Legacy);
|
|
34
|
+
}
|
|
35
|
+
//POST RAW
|
|
36
|
+
Post_Raw(url, data) {
|
|
37
|
+
return this.httpClient.post(url, data, this.httpOptions_Legacy);
|
|
38
|
+
}
|
|
39
|
+
//POST with file
|
|
40
|
+
Post_WithFile(service, data, file) {
|
|
41
|
+
let formData = new FormData();
|
|
42
|
+
if (file) {
|
|
43
|
+
formData.append("uploadFile", file, file.name);
|
|
44
|
+
}
|
|
45
|
+
formData.append("data", JSON.stringify(data));
|
|
46
|
+
return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);
|
|
47
|
+
}
|
|
48
|
+
// //POST with files
|
|
49
|
+
Post_FormData(service, formData) {
|
|
50
|
+
return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);
|
|
51
|
+
}
|
|
52
|
+
//GET
|
|
53
|
+
Get(service) {
|
|
54
|
+
return this.httpClient.get(this.apiUrl + service, this.httpOptions_Legacy);
|
|
55
|
+
}
|
|
56
|
+
//Get RAW
|
|
57
|
+
Get_Raw(url) {
|
|
58
|
+
return this.httpClient.get(url, this.httpOptions_Legacy);
|
|
59
|
+
}
|
|
60
|
+
//ERROR
|
|
61
|
+
Error(error) {
|
|
62
|
+
if (error.statusText == "Unauthorized") {
|
|
63
|
+
this.router.navigate(["login"]);
|
|
64
|
+
return "Unauthorized";
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return "Connection failed";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
HttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
+
HttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpService, providedIn: "root" });
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HttpService, decorators: [{
|
|
74
|
+
type: Injectable,
|
|
75
|
+
args: [{
|
|
76
|
+
providedIn: "root",
|
|
77
|
+
}]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Router }]; } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBYyxXQUFXLEdBQXNCLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFNbkYsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsVUFBc0IsRUFBVSxNQUFjO1FBQTlDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBR2xFLDBEQUEwRDtRQUNuRCxXQUFNLEdBQUcsMkJBQTJCLENBQUMsQ0FBQyxTQUFTO1FBNkQ5Qyx1QkFBa0IsR0FBRztZQUMzQixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3ZCLE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLGFBQWEsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2FBQ3ZELENBQUM7WUFDRixXQUFXLEVBQUUsTUFBTTtTQUNwQixDQUFDO1FBRU0sc0JBQWlCLEdBQUc7WUFDMUIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUN2QixhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQzthQUN2RCxDQUFDO1lBQ0YsV0FBVyxFQUFFLE1BQU07U0FDcEIsQ0FBQztJQS9Fb0UsQ0FBQztJQVF2RSxNQUFNO0lBQ0MsSUFBSSxDQUFDLE9BQWUsRUFBRSxJQUFTO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxLQUFLO0lBQ0UsR0FBRyxDQUFDLE9BQWUsRUFBRSxJQUFTO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFHRCxVQUFVO0lBQ0gsUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFTO1FBRXBDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZ0JBQWdCO0lBQ1QsYUFBYSxDQUFDLE9BQWUsRUFBRSxJQUFTLEVBQUUsSUFBVTtRQUV6RCxJQUFJLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBRXhDLElBQUksSUFBSSxFQUFFO1lBQ1IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRDtRQUVELFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU5QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQscUJBQXFCO0lBQ2QsYUFBYSxDQUFDLE9BQWUsRUFBRSxRQUFrQjtRQUV0RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsS0FBSztJQUNFLEdBQUcsQ0FBQyxPQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELFNBQVM7SUFDRixPQUFPLENBQUMsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsT0FBTztJQUNBLEtBQUssQ0FBQyxLQUF3QjtRQUNuQyxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksY0FBYyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNoQyxPQUFPLGNBQWMsQ0FBQztTQUN2QjthQUFNO1lBQ0wsT0FBTyxtQkFBbUIsQ0FBQztTQUM1QjtJQUNILENBQUM7O3dHQWpFVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwRXJyb3JSZXNwb25zZSwgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxyXG5cclxuXHJcbiAgLy8tLS0tU2V0IGFwaVVybCBmcm9tIHRoZSBkYXRhIHNlcnZpY2Ugb2YgdGhlIHByb2plY3QtLS0vL1xyXG4gIHB1YmxpYyBhcGlVcmwgPSBcImh0dHBzOi8vYXBpLnNvbGluYy5jby56dy9cIjsgLy9kZWZhdWx0XHJcblxyXG5cclxuXHJcbiAgLy9QT1NUXHJcbiAgcHVibGljIFBvc3Qoc2VydmljZTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMuYXBpVXJsICsgc2VydmljZSwgZGF0YSwgdGhpcy5odHRwT3B0aW9uc19MZWdhY3kpO1xyXG4gIH1cclxuXHJcbiAgLy9QVVRcclxuICBwdWJsaWMgUHV0KHNlcnZpY2U6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucHV0KHRoaXMuYXBpVXJsICsgc2VydmljZSwgZGF0YSwgdGhpcy5odHRwT3B0aW9uc19MZWdhY3kpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vUE9TVCBSQVdcclxuICBwdWJsaWMgUG9zdF9SYXcodXJsOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgZGF0YSwgdGhpcy5odHRwT3B0aW9uc19MZWdhY3kpO1xyXG4gIH1cclxuXHJcbiAgLy9QT1NUIHdpdGggZmlsZVxyXG4gIHB1YmxpYyBQb3N0X1dpdGhGaWxlKHNlcnZpY2U6IHN0cmluZywgZGF0YTogYW55LCBmaWxlOiBGaWxlKSB7XHJcblxyXG4gICAgbGV0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcInVwbG9hZEZpbGVcIiwgZmlsZSwgZmlsZS5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJkYXRhXCIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5hcGlVcmwgKyBzZXJ2aWNlLCBmb3JtRGF0YSwgdGhpcy5odHRwT3B0aW9uc19GaWxlcyk7XHJcbiAgfVxyXG5cclxuICAvLyAgLy9QT1NUIHdpdGggZmlsZXNcclxuICBwdWJsaWMgUG9zdF9Gb3JtRGF0YShzZXJ2aWNlOiBzdHJpbmcsIGZvcm1EYXRhOiBGb3JtRGF0YSkge1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmFwaVVybCArIHNlcnZpY2UsIGZvcm1EYXRhLCB0aGlzLmh0dHBPcHRpb25zX0ZpbGVzKTtcclxuICB9XHJcblxyXG4gIC8vR0VUXHJcbiAgcHVibGljIEdldChzZXJ2aWNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5hcGlVcmwgKyBzZXJ2aWNlLCB0aGlzLmh0dHBPcHRpb25zX0xlZ2FjeSk7XHJcbiAgfVxyXG5cclxuICAvL0dldCBSQVdcclxuICBwdWJsaWMgR2V0X1Jhdyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwsIHRoaXMuaHR0cE9wdGlvbnNfTGVnYWN5KTtcclxuICB9XHJcblxyXG4gIC8vRVJST1JcclxuICBwdWJsaWMgRXJyb3IoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBpZiAoZXJyb3Iuc3RhdHVzVGV4dCA9PSBcIlVuYXV0aG9yaXplZFwiKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImxvZ2luXCJdKTtcclxuICAgICAgcmV0dXJuIFwiVW5hdXRob3JpemVkXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJDb25uZWN0aW9uIGZhaWxlZFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBodHRwT3B0aW9uc19MZWdhY3kgPSB7XHJcbiAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgQXV0aG9yaXphdGlvbjogXCJCYXNpYyBcIiArIGJ0b2EoXCJlbXB0eVVzZXI6ZW1wdHlUb2tlblwiKSxcclxuICAgIH0pLFxyXG4gICAgcmVzcG9zZVR5cGU6IFwianNvblwiLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaHR0cE9wdGlvbnNfRmlsZXMgPSB7XHJcbiAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBBdXRob3JpemF0aW9uOiBcIkJhc2ljIFwiICsgYnRvYShcInRueWFnYXRvOmo1VG9zemZyQHlzXCIpLFxyXG4gICAgfSksXHJcbiAgICByZXNwb3NlVHlwZTogXCJqc29uXCIsXHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpResponse } from '@angular/common/http';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./loader.service";
|
|
6
|
+
import * as i2 from "./message.service";
|
|
7
|
+
import * as i3 from "./auth.service";
|
|
8
|
+
import * as i4 from "@angular/router";
|
|
9
|
+
import * as i5 from "./log.service";
|
|
10
|
+
export class LoaderInterceptor {
|
|
11
|
+
constructor(loaderService, messageService, authService, router, logService) {
|
|
12
|
+
this.loaderService = loaderService;
|
|
13
|
+
this.messageService = messageService;
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.router = router;
|
|
16
|
+
this.logService = logService;
|
|
17
|
+
this.requests = [];
|
|
18
|
+
}
|
|
19
|
+
removeRequest(req) {
|
|
20
|
+
const i = this.requests.indexOf(req);
|
|
21
|
+
if (i >= 0) {
|
|
22
|
+
this.requests.splice(i, 1);
|
|
23
|
+
}
|
|
24
|
+
this.loaderService.isLoading.next(this.requests.length > 0);
|
|
25
|
+
}
|
|
26
|
+
intercept(request, next) {
|
|
27
|
+
let requestClone = request.clone({
|
|
28
|
+
setHeaders: {
|
|
29
|
+
Authorization: "Bearer " + this.authService.tokenSource.value
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
this.requests.push(requestClone);
|
|
33
|
+
if (this.requests.length > 1) {
|
|
34
|
+
this.logService.info("Multiple connections detected >= " + this.requests.length);
|
|
35
|
+
}
|
|
36
|
+
this.loaderService.isLoading.next(true);
|
|
37
|
+
return Observable.create(observer => {
|
|
38
|
+
const subscription = next.handle(requestClone).subscribe(event => {
|
|
39
|
+
if (event instanceof HttpResponse) {
|
|
40
|
+
this.removeRequest(requestClone);
|
|
41
|
+
observer.next(event);
|
|
42
|
+
}
|
|
43
|
+
}, (error) => {
|
|
44
|
+
this.removeRequest(requestClone);
|
|
45
|
+
observer.error(error);
|
|
46
|
+
if (error.status === 401) {
|
|
47
|
+
this.router.navigate(["login"]);
|
|
48
|
+
this.messageService.toast('Unauthorised: Please login again');
|
|
49
|
+
}
|
|
50
|
+
else if (error.status === 500) {
|
|
51
|
+
console.log(error.error);
|
|
52
|
+
this.messageService.toast('System Error');
|
|
53
|
+
}
|
|
54
|
+
else if (error.statusText == 'Unknown Error') {
|
|
55
|
+
this.messageService.toast('Connection Error');
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.messageService.toast('Error: ' + error.statusText);
|
|
59
|
+
}
|
|
60
|
+
}, () => {
|
|
61
|
+
this.removeRequest(requestClone);
|
|
62
|
+
observer.complete();
|
|
63
|
+
});
|
|
64
|
+
// remove request from queue when cancelled
|
|
65
|
+
return () => {
|
|
66
|
+
this.removeRequest(requestClone);
|
|
67
|
+
subscription.unsubscribe();
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
LoaderInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoaderInterceptor, deps: [{ token: i1.LoaderService }, { token: i2.MessageService }, { token: i3.AuthService }, { token: i4.Router }, { token: i5.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
73
|
+
LoaderInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoaderInterceptor });
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoaderInterceptor, decorators: [{
|
|
75
|
+
type: Injectable
|
|
76
|
+
}], ctorParameters: function () { return [{ type: i1.LoaderService }, { type: i2.MessageService }, { type: i3.AuthService }, { type: i4.Router }, { type: i5.LogService }]; } });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvbG9hZGVyLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUEyRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFLbEMsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixhQUE0QixFQUFVLGNBQThCLEVBQVUsV0FBd0IsRUFBVSxNQUFjLEVBQVUsVUFBc0I7UUFBOUosa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRjFLLGFBQVEsR0FBdUIsRUFBRSxDQUFDO0lBRTRJLENBQUM7SUFHdkwsYUFBYSxDQUFDLEdBQXFCO1FBRWpDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFHcEQsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMvQixVQUFVLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQzlEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNqRjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFFbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBRTNELElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtvQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDdEI7WUFJSCxDQUFDLEVBQ0QsQ0FBQyxLQUF3QixFQUFFLEVBQUU7Z0JBSTNCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2pDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXRCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtpQkFDOUQ7cUJBQ0ksSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFJLEdBQUcsRUFBQztvQkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2lCQUMxQztxQkFDSSxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksZUFBZSxFQUFDO29CQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO2lCQUM5QztxQkFDRztvQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO2lCQUN4RDtZQUVILENBQUMsRUFDRCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBR1AsMkNBQTJDO1lBQzNDLE9BQU8sR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2pDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUM7UUFFSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhHQW5GVSxpQkFBaUI7a0hBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSwgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4vbG9hZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi9sb2cuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMb2FkZXJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcblxyXG4gIHByaXZhdGUgcmVxdWVzdHM6IEh0dHBSZXF1ZXN0PGFueT5bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvYWRlclNlcnZpY2U6IExvYWRlclNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlKSB7IH1cclxuXHJcblxyXG4gIHJlbW92ZVJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSB7XHJcblxyXG4gICAgY29uc3QgaSA9IHRoaXMucmVxdWVzdHMuaW5kZXhPZihyZXEpO1xyXG5cclxuICAgIGlmIChpID49IDApIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0cy5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkZXJTZXJ2aWNlLmlzTG9hZGluZy5uZXh0KHRoaXMucmVxdWVzdHMubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcblxyXG5cclxuICAgIGxldCByZXF1ZXN0Q2xvbmUgPSByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgIEF1dGhvcml6YXRpb246IFwiQmVhcmVyIFwiICsgdGhpcy5hdXRoU2VydmljZS50b2tlblNvdXJjZS52YWx1ZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlcXVlc3RzLnB1c2gocmVxdWVzdENsb25lKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXF1ZXN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMubG9nU2VydmljZS5pbmZvKFwiTXVsdGlwbGUgY29ubmVjdGlvbnMgZGV0ZWN0ZWQgPj0gXCIgKyB0aGlzLnJlcXVlc3RzLmxlbmd0aClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlclNlcnZpY2UuaXNMb2FkaW5nLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG9ic2VydmVyID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5leHQuaGFuZGxlKHJlcXVlc3RDbG9uZSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWVzdChyZXF1ZXN0Q2xvbmUpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZXZlbnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVlc3QocmVxdWVzdENsb25lKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoJ1VuYXV0aG9yaXNlZDogUGxlYXNlIGxvZ2luIGFnYWluJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChlcnJvci5zdGF0dXMgPT09NTAwKXtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5lcnJvcilcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KCdTeXN0ZW0gRXJyb3InKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yLnN0YXR1c1RleHQgPT0gJ1Vua25vd24gRXJyb3InKXtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KCdDb25uZWN0aW9uIEVycm9yJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoJ0Vycm9yOiAnICsgZXJyb3Iuc3RhdHVzVGV4dClcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWVzdChyZXF1ZXN0Q2xvbmUpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgLy8gcmVtb3ZlIHJlcXVlc3QgZnJvbSBxdWV1ZSB3aGVuIGNhbmNlbGxlZFxyXG4gICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUmVxdWVzdChyZXF1ZXN0Q2xvbmUpO1xyXG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9O1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class LoaderService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.isLoading = new BehaviorSubject(false);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
LoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
LoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoaderService, providedIn: 'root' });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoaderService, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{
|
|
14
|
+
providedIn: 'root'
|
|
15
|
+
}]
|
|
16
|
+
}], ctorParameters: function () { return []; } });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt2QyxNQUFNLE9BQU8sYUFBYTtJQUd4QjtRQURPLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzswR0FITixhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRlclNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgaXNMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// import { Core } from 'tin-core';
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { LogLevel } from '../classes/Classes';
|
|
4
|
+
import { Core } from '../classes/TinCore';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LogService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.level = LogLevel.All;
|
|
9
|
+
this.logToConsole = true;
|
|
10
|
+
this.logToApi = false;
|
|
11
|
+
}
|
|
12
|
+
debug(msg, ...optionalParams) {
|
|
13
|
+
this.writeToLog(msg, LogLevel.Debug, optionalParams);
|
|
14
|
+
}
|
|
15
|
+
info(msg, ...optionalParams) {
|
|
16
|
+
this.writeToLog(msg, LogLevel.Info, optionalParams);
|
|
17
|
+
}
|
|
18
|
+
warn(msg, ...optionalParams) {
|
|
19
|
+
this.writeToLog(msg, LogLevel.Warn, optionalParams);
|
|
20
|
+
}
|
|
21
|
+
error(msg, ...optionalParams) {
|
|
22
|
+
this.writeToLog(msg, LogLevel.Error, optionalParams);
|
|
23
|
+
}
|
|
24
|
+
fatal(msg, ...optionalParams) {
|
|
25
|
+
this.writeToLog(msg, LogLevel.Fatal, optionalParams);
|
|
26
|
+
}
|
|
27
|
+
log(msg, ...optionalParams) {
|
|
28
|
+
this.writeToLog(msg, LogLevel.All, optionalParams);
|
|
29
|
+
}
|
|
30
|
+
writeToLog(msg, level, params) {
|
|
31
|
+
if (this.shouldLog(level)) {
|
|
32
|
+
// Build log string
|
|
33
|
+
let value = Core.getFormatedDate(Date(), false).replace("T", " ");
|
|
34
|
+
// value += " - Type: " + LogLevel[this.level];
|
|
35
|
+
value += " - Message: " + msg;
|
|
36
|
+
if (params.length) {
|
|
37
|
+
value += " - Extra Info: " + this.formatParams(params);
|
|
38
|
+
}
|
|
39
|
+
// Log the value
|
|
40
|
+
if (this.logToConsole) {
|
|
41
|
+
console.log(value);
|
|
42
|
+
}
|
|
43
|
+
if (this.logToApi) {
|
|
44
|
+
//Call API post
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
formatParams(params) {
|
|
49
|
+
let ret = params.join(",");
|
|
50
|
+
// Is there at least one object in the array?
|
|
51
|
+
if (params.some((p) => typeof p == "object")) {
|
|
52
|
+
ret = "";
|
|
53
|
+
// Build comma-delimited string
|
|
54
|
+
for (let item of params) {
|
|
55
|
+
ret += JSON.stringify(item) + ",";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return ret;
|
|
59
|
+
}
|
|
60
|
+
shouldLog(level) {
|
|
61
|
+
let ret = false;
|
|
62
|
+
if ((level >= this.level && level !== LogLevel.Off) ||
|
|
63
|
+
this.level === LogLevel.All) {
|
|
64
|
+
ret = true;
|
|
65
|
+
}
|
|
66
|
+
return ret;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
LogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
|
+
LogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogService, providedIn: "root" });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogService, decorators: [{
|
|
72
|
+
type: Injectable,
|
|
73
|
+
args: [{
|
|
74
|
+
providedIn: "root",
|
|
75
|
+
}]
|
|
76
|
+
}], ctorParameters: function () { return []; } });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQW1DO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLMUMsTUFBTSxPQUFPLFVBQVU7SUFDckI7UUFFQSxVQUFLLEdBQWEsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUUvQixpQkFBWSxHQUFZLElBQUksQ0FBQztRQUU3QixhQUFRLEdBQVksS0FBSyxDQUFDO0lBTlYsQ0FBQztJQVFqQixLQUFLLENBQUMsR0FBVyxFQUFFLEdBQUcsY0FBcUI7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQVcsRUFBRSxHQUFHLGNBQXFCO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsR0FBRyxjQUFxQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsR0FBVyxFQUFFLEdBQUcsY0FBcUI7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxHQUFHLGNBQXFCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBRyxjQUFxQjtRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXJELENBQUM7SUFFTyxVQUFVLENBQUMsR0FBVyxFQUFFLEtBQWUsRUFBRSxNQUFhO1FBRTVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUV6QixtQkFBbUI7WUFDbkIsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLCtDQUErQztZQUMvQyxLQUFLLElBQUksY0FBYyxHQUFHLEdBQUcsQ0FBQztZQUc5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLEtBQUssSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3hEO1lBRUQsZ0JBQWdCO1lBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQjtZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsZUFBZTthQUNoQjtTQUVGO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFhO1FBRWhDLElBQUksR0FBRyxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsNkNBQTZDO1FBQzdDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUU7WUFDNUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNULCtCQUErQjtZQUMvQixLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtnQkFDdkIsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQ25DO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBZTtRQUUvQixJQUFJLEdBQUcsR0FBWSxLQUFLLENBQUM7UUFFekIsSUFDRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQy9DLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEdBQUcsRUFDM0I7WUFDQSxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ1o7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O3VHQXRGVSxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgQ29yZSB9IGZyb20gJ3Rpbi1jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgQ29yZSB9IGZyb20gJy4uL2NsYXNzZXMvVGluQ29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBsZXZlbDogTG9nTGV2ZWwgPSBMb2dMZXZlbC5BbGw7XHJcblxyXG4gIGxvZ1RvQ29uc29sZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGxvZ1RvQXBpOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGRlYnVnKG1zZzogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgIHRoaXMud3JpdGVUb0xvZyhtc2csIExvZ0xldmVsLkRlYnVnLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBpbmZvKG1zZzogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgIHRoaXMud3JpdGVUb0xvZyhtc2csIExvZ0xldmVsLkluZm8sIG9wdGlvbmFsUGFyYW1zKTtcclxuICB9XHJcblxyXG4gIHdhcm4obXNnOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG4gICAgdGhpcy53cml0ZVRvTG9nKG1zZywgTG9nTGV2ZWwuV2Fybiwgb3B0aW9uYWxQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgZXJyb3IobXNnOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG4gICAgdGhpcy53cml0ZVRvTG9nKG1zZywgTG9nTGV2ZWwuRXJyb3IsIG9wdGlvbmFsUGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGZhdGFsKG1zZzogc3RyaW5nLCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgIHRoaXMud3JpdGVUb0xvZyhtc2csIExvZ0xldmVsLkZhdGFsLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBsb2cobXNnOiBzdHJpbmcsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG4gICAgdGhpcy53cml0ZVRvTG9nKG1zZywgTG9nTGV2ZWwuQWxsLCBvcHRpb25hbFBhcmFtcyk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3cml0ZVRvTG9nKG1zZzogc3RyaW5nLCBsZXZlbDogTG9nTGV2ZWwsIHBhcmFtczogYW55W10pIHtcclxuXHJcbiAgICBpZiAodGhpcy5zaG91bGRMb2cobGV2ZWwpKSB7XHJcblxyXG4gICAgICAvLyBCdWlsZCBsb2cgc3RyaW5nXHJcbiAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gQ29yZS5nZXRGb3JtYXRlZERhdGUoRGF0ZSgpLCBmYWxzZSkucmVwbGFjZShcIlRcIiwgXCIgXCIpO1xyXG4gICAgICAvLyB2YWx1ZSArPSBcIiAtIFR5cGU6IFwiICsgTG9nTGV2ZWxbdGhpcy5sZXZlbF07XHJcbiAgICAgIHZhbHVlICs9IFwiIC0gTWVzc2FnZTogXCIgKyBtc2c7XHJcblxyXG5cclxuICAgICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcclxuICAgICAgICB2YWx1ZSArPSBcIiAtIEV4dHJhIEluZm86IFwiICsgdGhpcy5mb3JtYXRQYXJhbXMocGFyYW1zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTG9nIHRoZSB2YWx1ZVxyXG4gICAgICBpZiAodGhpcy5sb2dUb0NvbnNvbGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmxvZ1RvQXBpKSB7XHJcbiAgICAgICAgLy9DYWxsIEFQSSBwb3N0XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFBhcmFtcyhwYXJhbXM6IGFueVtdKTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgcmV0OiBzdHJpbmcgPSBwYXJhbXMuam9pbihcIixcIik7XHJcbiAgICAvLyBJcyB0aGVyZSBhdCBsZWFzdCBvbmUgb2JqZWN0IGluIHRoZSBhcnJheT9cclxuICAgIGlmIChwYXJhbXMuc29tZSgocCkgPT4gdHlwZW9mIHAgPT0gXCJvYmplY3RcIikpIHtcclxuICAgICAgcmV0ID0gXCJcIjtcclxuICAgICAgLy8gQnVpbGQgY29tbWEtZGVsaW1pdGVkIHN0cmluZ1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHBhcmFtcykge1xyXG4gICAgICAgIHJldCArPSBKU09OLnN0cmluZ2lmeShpdGVtKSArIFwiLFwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG91bGRMb2cobGV2ZWw6IExvZ0xldmVsKTogYm9vbGVhbiB7XHJcblxyXG4gICAgbGV0IHJldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgKGxldmVsID49IHRoaXMubGV2ZWwgJiYgbGV2ZWwgIT09IExvZ0xldmVsLk9mZikgfHxcclxuICAgICAgdGhpcy5sZXZlbCA9PT0gTG9nTGV2ZWwuQWxsXHJcbiAgICApIHtcclxuICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxufVxyXG5cclxuXHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { messageDialog } from "../components/message/messageDialog.component";
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { mergeMap } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/snack-bar";
|
|
7
|
+
import * as i2 from "@angular/material/dialog";
|
|
8
|
+
export class MessageService {
|
|
9
|
+
constructor(snackBar, dialog) {
|
|
10
|
+
this.snackBar = snackBar;
|
|
11
|
+
this.dialog = dialog;
|
|
12
|
+
}
|
|
13
|
+
toast(msg) {
|
|
14
|
+
this.snackBar.open(msg, "OK", { duration: 5000 });
|
|
15
|
+
}
|
|
16
|
+
info(subject, details) {
|
|
17
|
+
let type = "info";
|
|
18
|
+
const dialogRef = this.dialog.open(messageDialog, {
|
|
19
|
+
width: "600px",
|
|
20
|
+
data: { type, subject, details },
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
error(details) {
|
|
24
|
+
let type = "error";
|
|
25
|
+
let subject;
|
|
26
|
+
const dialogRef = this.dialog.open(messageDialog, {
|
|
27
|
+
width: "600px",
|
|
28
|
+
data: { type, subject, details },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
confirm(msg) {
|
|
32
|
+
let type = "confirm";
|
|
33
|
+
let subject = "";
|
|
34
|
+
let details = msg;
|
|
35
|
+
const dialogRef = this.dialog.open(messageDialog, {
|
|
36
|
+
width: "400px",
|
|
37
|
+
data: { type, subject, details },
|
|
38
|
+
});
|
|
39
|
+
return dialogRef.afterClosed().pipe(mergeMap((result) => {
|
|
40
|
+
return of(result);
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MessageService, deps: [{ token: i1.MatSnackBar }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
+
MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MessageService, providedIn: "root" });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MessageService, decorators: [{
|
|
47
|
+
type: Injectable,
|
|
48
|
+
args: [{
|
|
49
|
+
providedIn: "root",
|
|
50
|
+
}]
|
|
51
|
+
}], ctorParameters: function () { return [{ type: i1.MatSnackBar }, { type: i2.MatDialog }]; } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUsxQyxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUFvQixRQUFxQixFQUFTLE1BQWlCO1FBQS9DLGFBQVEsR0FBUixRQUFRLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUksQ0FBQztJQUVqRSxLQUFLLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUUxQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUM7UUFFbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7U0FDakMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlO1FBRTFCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNuQixJQUFJLE9BQVcsQ0FBQztRQUVoQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEQsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtTQUNqQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVc7UUFFeEIsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUE7UUFFakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7U0FDakMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRXRELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLENBQUMsQ0FFQSxDQUFDLENBQUM7SUFFTCxDQUFDOzsyR0FqRFUsY0FBYzsrR0FBZCxjQUFjLGNBRmIsTUFBTTsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlRGlhbG9nIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbWVzc2FnZS9tZXNzYWdlRGlhbG9nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhciwgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nKSB7IH1cclxuXHJcbiAgcHVibGljIHRvYXN0KG1zZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obXNnLCBcIk9LXCIsIHsgZHVyYXRpb246IDUwMDAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5mbyhzdWJqZWN0OiBzdHJpbmcsIGRldGFpbHM6IHN0cmluZykge1xyXG5cclxuICAgIGxldCB0eXBlID0gXCJpbmZvXCI7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihtZXNzYWdlRGlhbG9nLCB7XHJcbiAgICAgIHdpZHRoOiBcIjYwMHB4XCIsXHJcbiAgICAgIGRhdGE6IHsgdHlwZSwgc3ViamVjdCwgZGV0YWlscyB9LFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGVycm9yKGRldGFpbHM6IHN0cmluZykge1xyXG5cclxuICAgIGxldCB0eXBlID0gXCJlcnJvclwiO1xyXG4gICAgbGV0IHN1YmplY3Q6IFwiXCI7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihtZXNzYWdlRGlhbG9nLCB7XHJcbiAgICAgIHdpZHRoOiBcIjYwMHB4XCIsXHJcbiAgICAgIGRhdGE6IHsgdHlwZSwgc3ViamVjdCwgZGV0YWlscyB9LFxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbmZpcm0obXNnOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGxldCB0eXBlID0gXCJjb25maXJtXCI7XHJcbiAgICBsZXQgc3ViamVjdCA9IFwiXCI7XHJcbiAgICBsZXQgZGV0YWlscyA9IG1zZ1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4obWVzc2FnZURpYWxvZywge1xyXG4gICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICBkYXRhOiB7IHR5cGUsIHN1YmplY3QsIGRldGFpbHMgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5waXBlKG1lcmdlTWFwKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIHJldHVybiBvZihyZXN1bHQpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICApKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class StorageService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
// Store the value
|
|
6
|
+
async store(storageKey, value) {
|
|
7
|
+
const encryptedValue = btoa(escape(JSON.stringify(value)));
|
|
8
|
+
// const encryptedValue = JSON.stringify(value);
|
|
9
|
+
await localStorage.setItem(storageKey, encryptedValue);
|
|
10
|
+
}
|
|
11
|
+
// Get the value
|
|
12
|
+
async get(storageKey) {
|
|
13
|
+
const ret = await localStorage.getItem(storageKey);
|
|
14
|
+
return JSON.parse(unescape(atob(ret)));
|
|
15
|
+
// return JSON.parse(ret);
|
|
16
|
+
}
|
|
17
|
+
// Remove
|
|
18
|
+
async removeStorageItem(storageKey) {
|
|
19
|
+
await localStorage.removeItem(storageKey);
|
|
20
|
+
}
|
|
21
|
+
// Clear storage
|
|
22
|
+
async clear() {
|
|
23
|
+
await localStorage.clear();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
StorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
27
|
+
StorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StorageService, providedIn: 'root' });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StorageService, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: 'root'
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: function () { return []; } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sY0FBYztJQUV6QixnQkFBZ0IsQ0FBQztJQUVqQixrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFrQixFQUFFLEtBQVU7UUFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxnREFBZ0Q7UUFDaEQsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBa0I7UUFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QywwQkFBMEI7SUFDNUIsQ0FBQztJQUVELFNBQVM7SUFDVCxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBa0I7UUFDeEMsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDOzsyR0ExQlUsY0FBYzsrR0FBZCxjQUFjLGNBRmIsTUFBTTsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gU3RvcmUgdGhlIHZhbHVlXHJcbiAgYXN5bmMgc3RvcmUoc3RvcmFnZUtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWRWYWx1ZSA9IGJ0b2EoZXNjYXBlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpO1xyXG4gICAgLy8gY29uc3QgZW5jcnlwdGVkVmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XHJcbiAgICBhd2FpdCBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBlbmNyeXB0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIHZhbHVlXHJcbiAgYXN5bmMgZ2V0KHN0b3JhZ2VLZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgcmV0ID0gYXdhaXQgbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleSk7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh1bmVzY2FwZShhdG9iKHJldCkpKTtcclxuICAgIC8vIHJldHVybiBKU09OLnBhcnNlKHJldCk7XHJcbiAgfVxyXG5cclxuICAvLyBSZW1vdmVcclxuICBhc3luYyByZW1vdmVTdG9yYWdlSXRlbShzdG9yYWdlS2V5OiBzdHJpbmcpIHtcclxuICAgIGF3YWl0IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHN0b3JhZ2VLZXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2xlYXIgc3RvcmFnZVxyXG4gIGFzeW5jIGNsZWFyKCkge1xyXG4gICAgYXdhaXQgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TinSpaService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
}
|
|
6
|
+
TinSpaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TinSpaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7
|
+
TinSpaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TinSpaService, providedIn: 'root' });
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TinSpaService, decorators: [{
|
|
9
|
+
type: Injectable,
|
|
10
|
+
args: [{
|
|
11
|
+
providedIn: 'root'
|
|
12
|
+
}]
|
|
13
|
+
}], ctorParameters: function () { return []; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGluLXNwYS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL3Rpbi1zcGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixnQkFBZ0IsQ0FBQzs7MEdBRk4sYUFBYTs4R0FBYixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpblNwYVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ==
|