exceladdincbms-v2 5.10.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/esm2022/exceladdincbms-v1.mjs +5 -0
- package/esm2022/lib/auth.service.mjs +54 -0
- package/esm2022/lib/base-app.service.mjs +41 -0
- package/esm2022/lib/bulk-tool.component.mjs +22 -0
- package/esm2022/lib/bulk-tool.module.mjs +52 -0
- package/esm2022/lib/constant.enum.mjs +6 -0
- package/esm2022/lib/environmentsModel.info.mjs +2 -0
- package/esm2022/lib/http-interceptor.mjs +25 -0
- package/esm2022/lib/login/login.component.mjs +158 -0
- package/esm2022/lib/materils/materils.module.mjs +178 -0
- package/esm2022/lib/menu/menu.component.mjs +288 -0
- package/esm2022/public_api.mjs +10 -0
- package/fesm2022/exceladdincbms-v1.mjs +794 -0
- package/fesm2022/exceladdincbms-v1.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/auth.service.d.ts +18 -0
- package/lib/base-app.service.d.ts +16 -0
- package/lib/bulk-tool.component.d.ts +8 -0
- package/lib/bulk-tool.module.d.ts +17 -0
- package/lib/constant.enum.d.ts +5 -0
- package/lib/environmentsModel.info.d.ts +5 -0
- package/lib/http-interceptor.d.ts +8 -0
- package/lib/login/login.component.d.ts +32 -0
- package/lib/materils/materils.module.d.ts +46 -0
- package/lib/menu/menu.component.d.ts +49 -0
- package/package.json +25 -0
- package/public_api.d.ts +6 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWxhZGRpbmNibXMtdjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9idWxrLXRvb2wvc3JjL2V4Y2VsYWRkaW5jYm1zLXYxLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { map } from 'rxjs';
|
|
4
|
+
import { BaseAppService } from './base-app.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "./base-app.service";
|
|
8
|
+
export class AuthService {
|
|
9
|
+
http;
|
|
10
|
+
injector;
|
|
11
|
+
baseAppService;
|
|
12
|
+
API_ENDPOINT = this.injector.get("config").Url;
|
|
13
|
+
menuName = this.injector.get("config").MenuName;
|
|
14
|
+
//private RM_ENDPOINT = this.injector.get("config").apiBaseUrl;
|
|
15
|
+
//private headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
|
|
16
|
+
constructor(http, injector, baseAppService) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.injector = injector;
|
|
19
|
+
this.baseAppService = baseAppService;
|
|
20
|
+
}
|
|
21
|
+
//private postheaders = new Headers({'Content-Type': 'application/json'});
|
|
22
|
+
login(username, password) {
|
|
23
|
+
return this.http.post(this.API_ENDPOINT + "/Login", { username, password })
|
|
24
|
+
.pipe(map(user => {
|
|
25
|
+
if (user.status != "Invalid") {
|
|
26
|
+
console.log(user);
|
|
27
|
+
localStorage.clear();
|
|
28
|
+
localStorage.setItem('UserInfo', JSON.stringify(user));
|
|
29
|
+
this.baseAppService.setUserInfo(user);
|
|
30
|
+
}
|
|
31
|
+
return user;
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
logout() {
|
|
35
|
+
this.baseAppService.clearData();
|
|
36
|
+
localStorage.clear();
|
|
37
|
+
}
|
|
38
|
+
GetMenu(userId) {
|
|
39
|
+
return this.http.get(this.API_ENDPOINT + '/userMenus?userId=' + userId + '&menu=' + this.menuName)
|
|
40
|
+
.pipe(map(res => {
|
|
41
|
+
this.baseAppService.setUserMenus(res);
|
|
42
|
+
return res;
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
/** @nocollapse */ static ɵfac = function AuthService_Factory(t) { return new (t || AuthService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i2.BaseAppService)); };
|
|
46
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: AuthService, factory: AuthService.ɵfac, providedIn: 'root' });
|
|
47
|
+
}
|
|
48
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthService, [{
|
|
49
|
+
type: Injectable,
|
|
50
|
+
args: [{
|
|
51
|
+
providedIn: 'root'
|
|
52
|
+
}]
|
|
53
|
+
}], function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: i2.BaseAppService }]; }, null); })();
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVsay10b29sL3NyYy9saWIvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTs7OztBQU1uRCxNQUFNLE9BQU8sV0FBVztJQUtBO0lBQXlCO0lBQTRCO0lBSmpFLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDL0MsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN4RCwrREFBK0Q7SUFDL0QseUZBQXlGO0lBQ3pGLFlBQW9CLElBQWdCLEVBQVMsUUFBa0IsRUFBVSxjQUE4QjtRQUFuRixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFJLENBQUM7SUFFNUcsMEVBQTBFO0lBQzFFLEtBQUssQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN6QztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxPQUFPLENBQUMsTUFBTTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsb0JBQW9CLEdBQUcsTUFBTSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzdGLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO3dGQWhDUSxXQUFXOytGQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZSLE1BQU07O3VGQUVULFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJhc2VBcHBTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWFwcC5zZXJ2aWNlJ1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBBUElfRU5EUE9JTlQgPSB0aGlzLmluamVjdG9yLmdldChcImNvbmZpZ1wiKS5Vcmw7XHJcbiAgICBwcml2YXRlIG1lbnVOYW1lID0gdGhpcy5pbmplY3Rvci5nZXQoXCJjb25maWdcIikuTWVudU5hbWU7XHJcbiAgICAvL3ByaXZhdGUgUk1fRU5EUE9JTlQgPSB0aGlzLmluamVjdG9yLmdldChcImNvbmZpZ1wiKS5hcGlCYXNlVXJsO1xyXG4gICAgLy9wcml2YXRlIGhlYWRlcnMgPSBuZXcgSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9KTtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHVibGljIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBiYXNlQXBwU2VydmljZTogQmFzZUFwcFNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8vcHJpdmF0ZSBwb3N0aGVhZGVycyA9IG5ldyBIZWFkZXJzKHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XHJcbiAgICBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLkFQSV9FTkRQT0lOVCArIFwiL0xvZ2luXCIsIHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0pXHJcbiAgICAgICAgICAgIC5waXBlKG1hcCh1c2VyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh1c2VyLnN0YXR1cyAhPSBcIkludmFsaWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHVzZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdVc2VySW5mbycsIEpTT04uc3RyaW5naWZ5KHVzZXIpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2VBcHBTZXJ2aWNlLnNldFVzZXJJbmZvKHVzZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXI7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgdGhpcy5iYXNlQXBwU2VydmljZS5jbGVhckRhdGEoKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgR2V0TWVudSh1c2VySWQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQVBJX0VORFBPSU5UICsgJy91c2VyTWVudXM/dXNlcklkPScgKyB1c2VySWQgKyAnJm1lbnU9JyArIHRoaXMubWVudU5hbWUpXHJcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlQXBwU2VydmljZS5zZXRVc2VyTWVudXMocmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class BaseAppService {
|
|
4
|
+
userInfo;
|
|
5
|
+
userMenus;
|
|
6
|
+
menuName;
|
|
7
|
+
getUserInfo() {
|
|
8
|
+
return this.userInfo;
|
|
9
|
+
}
|
|
10
|
+
setUserInfo(value) {
|
|
11
|
+
this.userInfo = value;
|
|
12
|
+
}
|
|
13
|
+
removeUserInfo() {
|
|
14
|
+
this.userInfo = null;
|
|
15
|
+
}
|
|
16
|
+
setUserMenus(data) {
|
|
17
|
+
this.userMenus = data;
|
|
18
|
+
}
|
|
19
|
+
getUserMenus() {
|
|
20
|
+
return this.userMenus;
|
|
21
|
+
}
|
|
22
|
+
clearData() {
|
|
23
|
+
this.userInfo = undefined;
|
|
24
|
+
this.userMenus = undefined;
|
|
25
|
+
}
|
|
26
|
+
setmenuNameFromBudget(name) {
|
|
27
|
+
this.menuName = name;
|
|
28
|
+
}
|
|
29
|
+
getmenuNameFromBudget() {
|
|
30
|
+
return this.menuName;
|
|
31
|
+
}
|
|
32
|
+
/** @nocollapse */ static ɵfac = function BaseAppService_Factory(t) { return new (t || BaseAppService)(); };
|
|
33
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: BaseAppService, factory: BaseAppService.ɵfac, providedIn: 'root' });
|
|
34
|
+
}
|
|
35
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseAppService, [{
|
|
36
|
+
type: Injectable,
|
|
37
|
+
args: [{
|
|
38
|
+
providedIn: 'root'
|
|
39
|
+
}]
|
|
40
|
+
}], null, null); })();
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J1bGstdG9vbC9zcmMvbGliL2Jhc2UtYXBwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGNBQWM7SUFFakIsUUFBUSxDQUFNO0lBQ2QsU0FBUyxDQUFNO0lBQ2YsUUFBUSxDQUFLO0lBQ3JCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ0QsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxJQUFJO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7MkZBN0JVLGNBQWM7K0ZBQWQsY0FBYyxXQUFkLGNBQWMsbUJBRmIsTUFBTTs7dUZBRVAsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlQXBwU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgdXNlckluZm86IGFueTtcclxuICBwcml2YXRlIHVzZXJNZW51czogYW55O1xyXG4gIHByaXZhdGUgbWVudU5hbWU6IGFueVxyXG4gIGdldFVzZXJJbmZvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckluZm87XHJcbiAgfVxyXG4gIHNldFVzZXJJbmZvKHZhbHVlKSB7XHJcbiAgICB0aGlzLnVzZXJJbmZvID0gdmFsdWU7XHJcbiAgfVxyXG4gIHJlbW92ZVVzZXJJbmZvKCkge1xyXG4gICAgdGhpcy51c2VySW5mbyA9IG51bGw7XHJcbiAgfVxyXG4gIHNldFVzZXJNZW51cyhkYXRhKSB7XHJcbiAgICB0aGlzLnVzZXJNZW51cyA9IGRhdGE7XHJcbiAgfVxyXG4gIGdldFVzZXJNZW51cygpIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJNZW51cztcclxuICB9XHJcbiAgY2xlYXJEYXRhKCkge1xyXG4gICAgdGhpcy51c2VySW5mbyA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudXNlck1lbnVzID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBzZXRtZW51TmFtZUZyb21CdWRnZXQobmFtZSkge1xyXG4gICAgdGhpcy5tZW51TmFtZSA9IG5hbWVcclxuICB9XHJcbiAgZ2V0bWVudU5hbWVGcm9tQnVkZ2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWVudU5hbWVcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class BulkToolComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() {
|
|
6
|
+
}
|
|
7
|
+
/** @nocollapse */ static ɵfac = function BulkToolComponent_Factory(t) { return new (t || BulkToolComponent)(); };
|
|
8
|
+
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: BulkToolComponent, selectors: [["lib-BulkTool"]], decls: 2, vars: 0, template: function BulkToolComponent_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
i0.ɵɵelementStart(0, "p");
|
|
10
|
+
i0.ɵɵtext(1, " bulk-tool works! ");
|
|
11
|
+
i0.ɵɵelementEnd();
|
|
12
|
+
} }, encapsulation: 2 });
|
|
13
|
+
}
|
|
14
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BulkToolComponent, [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'lib-BulkTool', template: `
|
|
17
|
+
<p>
|
|
18
|
+
bulk-tool works!
|
|
19
|
+
</p>
|
|
20
|
+
` }]
|
|
21
|
+
}], function () { return []; }, null); })();
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J1bGstdG9vbC9zcmMvbGliL2J1bGstdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFXbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs4RkFMVSxpQkFBaUI7NEZBQWpCLGlCQUFpQjtZQU4xQix5QkFBRztZQUNELGtDQUNGO1lBQUEsaUJBQUk7Ozt1RkFJSyxpQkFBaUI7Y0FUN0IsU0FBUzsyQkFDRSxjQUFjLFlBQ2Q7Ozs7R0FJVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1CdWxrVG9vbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxwPlxyXG4gICAgICBidWxrLXRvb2wgd29ya3MhXHJcbiAgICA8L3A+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdWxrVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { BulkToolComponent } from './bulk-tool.component';
|
|
3
|
+
import { LoginComponent } from './login/login.component';
|
|
4
|
+
import { MaterilsModule } from './materils/materils.module';
|
|
5
|
+
import { MenuComponent } from './menu/menu.component';
|
|
6
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
+
import { CommonModule } from '@angular/common';
|
|
8
|
+
import { RouterModule } from '@angular/router';
|
|
9
|
+
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
10
|
+
import { HttpLibInterceptor } from './http-interceptor';
|
|
11
|
+
import { AuthService } from './auth.service';
|
|
12
|
+
import { BaseAppService } from './base-app.service';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export class BulkToolModule {
|
|
15
|
+
static forRoot(config) {
|
|
16
|
+
return {
|
|
17
|
+
ngModule: BulkToolModule,
|
|
18
|
+
providers: [{ provide: 'config', useValue: config }, BaseAppService]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** @nocollapse */ static ɵfac = function BulkToolModule_Factory(t) { return new (t || BulkToolModule)(); };
|
|
22
|
+
/** @nocollapse */ static ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: BulkToolModule });
|
|
23
|
+
/** @nocollapse */ static ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [{ provide: HTTP_INTERCEPTORS, useClass: HttpLibInterceptor, multi: true }, AuthService, BaseAppService], imports: [MaterilsModule,
|
|
24
|
+
FormsModule,
|
|
25
|
+
CommonModule,
|
|
26
|
+
RouterModule,
|
|
27
|
+
ReactiveFormsModule,
|
|
28
|
+
HttpClientModule] });
|
|
29
|
+
}
|
|
30
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BulkToolModule, [{
|
|
31
|
+
type: NgModule,
|
|
32
|
+
args: [{
|
|
33
|
+
imports: [
|
|
34
|
+
MaterilsModule,
|
|
35
|
+
FormsModule,
|
|
36
|
+
CommonModule,
|
|
37
|
+
RouterModule,
|
|
38
|
+
ReactiveFormsModule,
|
|
39
|
+
HttpClientModule,
|
|
40
|
+
],
|
|
41
|
+
declarations: [BulkToolComponent, LoginComponent, MenuComponent],
|
|
42
|
+
exports: [BulkToolComponent, LoginComponent, MenuComponent],
|
|
43
|
+
providers: [{ provide: HTTP_INTERCEPTORS, useClass: HttpLibInterceptor, multi: true }, AuthService, BaseAppService]
|
|
44
|
+
}]
|
|
45
|
+
}], null, null); })();
|
|
46
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(BulkToolModule, { declarations: [BulkToolComponent, LoginComponent, MenuComponent], imports: [MaterilsModule,
|
|
47
|
+
FormsModule,
|
|
48
|
+
CommonModule,
|
|
49
|
+
RouterModule,
|
|
50
|
+
ReactiveFormsModule,
|
|
51
|
+
HttpClientModule], exports: [BulkToolComponent, LoginComponent, MenuComponent] }); })();
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay10b29sLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J1bGstdG9vbC9zcmMvbGliL2J1bGstdG9vbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFrQnBELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBeUI7UUFDdEMsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsY0FBYyxDQUFDO1NBQ3JFLENBQUM7SUFDSixDQUFDOzJGQU5VLGNBQWM7MkZBQWQsY0FBYztnR0FGZCxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxZQVRqSCxjQUFjO1lBQ2QsV0FBVztZQUNYLFlBQVk7WUFDWixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGdCQUFnQjs7dUZBTVAsY0FBYztjQWIxQixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLGNBQWM7b0JBQ2QsV0FBVztvQkFDWCxZQUFZO29CQUNaLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixnQkFBZ0I7aUJBQ2pCO2dCQUNELFlBQVksRUFBRSxDQUFDLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUM7Z0JBQ2hFLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUM7Z0JBQzNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQzthQUNwSDs7d0ZBQ1ksY0FBYyxtQkFKVixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxhQVA3RCxjQUFjO1FBQ2QsV0FBVztRQUNYLFlBQVk7UUFDWixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGdCQUFnQixhQUdSLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnVsa1Rvb2xDb21wb25lbnQgfSBmcm9tICcuL2J1bGstdG9vbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vbG9naW4vbG9naW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0ZXJpbHNNb2R1bGUgfSBmcm9tICcuL21hdGVyaWxzL21hdGVyaWxzLm1vZHVsZSc7XHJcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIdHRwTGliSW50ZXJjZXB0b3IgfSBmcm9tICcuL2h0dHAtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFwcFNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRW52aXJvbm1lbnRzSW5mbyB9IGZyb20gJy4uL2xpYi9lbnZpcm9ubWVudHNNb2RlbC5pbmZvJztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRlcmlsc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtCdWxrVG9vbENvbXBvbmVudCwgTG9naW5Db21wb25lbnQsIE1lbnVDb21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtCdWxrVG9vbENvbXBvbmVudCwgTG9naW5Db21wb25lbnQsIE1lbnVDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBIdHRwTGliSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sIEF1dGhTZXJ2aWNlLCBCYXNlQXBwU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1bGtUb29sTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IElFbnZpcm9ubWVudHNJbmZvKTogTW9kdWxlV2l0aFByb3ZpZGVyczxCdWxrVG9vbE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEJ1bGtUb29sTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdjb25maWcnLCB1c2VWYWx1ZTogY29uZmlnIH0sIEJhc2VBcHBTZXJ2aWNlXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const Constant = {
|
|
2
|
+
APPSERVICEURL: 'https://localhost:44348/api',
|
|
3
|
+
APPSERVICEPRODURL: 'https://tk4addin.dev.summitenergy.com/appservices/api',
|
|
4
|
+
INVALID: "Invalid Username or Password"
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J1bGstdG9vbC9zcmMvbGliL2NvbnN0YW50LmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3BCLGFBQWEsRUFBRSw2QkFBNkI7SUFDNUMsaUJBQWlCLEVBQUUsdURBQXVEO0lBRTFFLE9BQU8sRUFBRSw4QkFBOEI7Q0FDMUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDb25zdGFudCA9IHtcclxuICAgIEFQUFNFUlZJQ0VVUkw6ICdodHRwczovL2xvY2FsaG9zdDo0NDM0OC9hcGknLFxyXG4gICAgQVBQU0VSVklDRVBST0RVUkw6ICdodHRwczovL3RrNGFkZGluLmRldi5zdW1taXRlbmVyZ3kuY29tL2FwcHNlcnZpY2VzL2FwaScsXHJcblxyXG4gICAgSU5WQUxJRDogXCJJbnZhbGlkIFVzZXJuYW1lIG9yIFBhc3N3b3JkXCJcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnRzTW9kZWwuaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J1bGstdG9vbC9zcmMvbGliL2Vudmlyb25tZW50c01vZGVsLmluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUVudmlyb25tZW50c0luZm8ge1xyXG4gICAgVXJsOiBzdHJpbmcsXHJcbiAgICBSb290VXJsOiBzdHJpbmcsXHJcbiAgICBNZW51TmFtZTogc3RyaW5nXHJcbn0iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class HttpLibInterceptor {
|
|
4
|
+
intercept(request, newRequest) {
|
|
5
|
+
// add authorization header to request
|
|
6
|
+
//Get Token data from local storage
|
|
7
|
+
//let tokenInfo = JSON.parse(localStorage.getItem('TokenInfo'));
|
|
8
|
+
// if (tokenInfo && tokenInfo.token) {
|
|
9
|
+
// request = request.clone({
|
|
10
|
+
// setHeaders: {
|
|
11
|
+
// Authorization: `Bearer ${tokenInfo.token}`,
|
|
12
|
+
// "Content-Type": 'application/json'
|
|
13
|
+
// }
|
|
14
|
+
// });
|
|
15
|
+
// }
|
|
16
|
+
console.log(request);
|
|
17
|
+
return newRequest.handle(request);
|
|
18
|
+
}
|
|
19
|
+
/** @nocollapse */ static ɵfac = function HttpLibInterceptor_Factory(t) { return new (t || HttpLibInterceptor)(); };
|
|
20
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: HttpLibInterceptor, factory: HttpLibInterceptor.ɵfac });
|
|
21
|
+
}
|
|
22
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpLibInterceptor, [{
|
|
23
|
+
type: Injectable
|
|
24
|
+
}], null, null); })();
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J1bGstdG9vbC9zcmMvbGliL2h0dHAtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixTQUFTLENBQUMsT0FBeUIsRUFBRSxVQUF1QjtRQUN4RCxzQ0FBc0M7UUFDdEMsbUNBQW1DO1FBQ25DLGdFQUFnRTtRQUVoRSxzQ0FBc0M7UUFDdEMsOEJBQThCO1FBQzlCLG9CQUFvQjtRQUNwQixvREFBb0Q7UUFDcEQsMkNBQTJDO1FBQzNDLFFBQVE7UUFDUixRQUFRO1FBQ1IsSUFBSTtRQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0ZBaEJRLGtCQUFrQjsrRkFBbEIsa0JBQWtCLFdBQWxCLGtCQUFrQjs7dUZBQWxCLGtCQUFrQjtjQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEh0dHBMaWJJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV3UmVxdWVzdDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAgICAgLy8gYWRkIGF1dGhvcml6YXRpb24gaGVhZGVyIHRvIHJlcXVlc3RcclxuICAgICAgICAvL0dldCBUb2tlbiBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgIC8vbGV0IHRva2VuSW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1Rva2VuSW5mbycpKTtcclxuXHJcbiAgICAgICAgLy8gaWYgKHRva2VuSW5mbyAmJiB0b2tlbkluZm8udG9rZW4pIHtcclxuICAgICAgICAvLyAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcclxuICAgICAgICAvLyAgICAgc2V0SGVhZGVyczoge1xyXG4gICAgICAgIC8vICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbkluZm8udG9rZW59YCxcclxuICAgICAgICAvLyAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcXVlc3QpO1xyXG4gICAgICAgIHJldHVybiBuZXdSZXF1ZXN0LmhhbmRsZShyZXF1ZXN0KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Location } from "@angular/common";
|
|
3
|
+
import { Router, ActivatedRoute } from '@angular/router';
|
|
4
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
5
|
+
import { first } from 'rxjs/operators';
|
|
6
|
+
import { Constant } from '../constant.enum';
|
|
7
|
+
import { AuthService } from '../auth.service';
|
|
8
|
+
import { BaseAppService } from '../base-app.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/forms";
|
|
11
|
+
import * as i2 from "@angular/router";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
import * as i4 from "../auth.service";
|
|
14
|
+
import * as i5 from "../base-app.service";
|
|
15
|
+
import * as i6 from "@angular/material/button";
|
|
16
|
+
import * as i7 from "@angular/material/icon";
|
|
17
|
+
import * as i8 from "@angular/material/form-field";
|
|
18
|
+
import * as i9 from "@angular/material/input";
|
|
19
|
+
import * as i10 from "@angular/material/progress-spinner";
|
|
20
|
+
function LoginComponent_div_20_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
22
|
+
i0.ɵɵtext(1);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} if (rf & 2) {
|
|
25
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
26
|
+
i0.ɵɵadvance(1);
|
|
27
|
+
i0.ɵɵtextInterpolate(ctx_r0.error);
|
|
28
|
+
} }
|
|
29
|
+
function LoginComponent_section_21_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelementStart(0, "section", 14);
|
|
31
|
+
i0.ɵɵelement(1, "mat-spinner", 15);
|
|
32
|
+
i0.ɵɵelementStart(2, "span");
|
|
33
|
+
i0.ɵɵtext(3, " Logging... ");
|
|
34
|
+
i0.ɵɵelementEnd()();
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
i0.ɵɵadvance(1);
|
|
37
|
+
i0.ɵɵproperty("diameter", 60);
|
|
38
|
+
} }
|
|
39
|
+
export class LoginComponent {
|
|
40
|
+
formBuilder;
|
|
41
|
+
route;
|
|
42
|
+
router;
|
|
43
|
+
location;
|
|
44
|
+
authenticationService;
|
|
45
|
+
baseAppService;
|
|
46
|
+
isLoading = false;
|
|
47
|
+
routeUrl;
|
|
48
|
+
loginForm;
|
|
49
|
+
submitted = false;
|
|
50
|
+
returnUrl;
|
|
51
|
+
error = '';
|
|
52
|
+
userInfo;
|
|
53
|
+
constructor(formBuilder, route, router, location, authenticationService, baseAppService) {
|
|
54
|
+
this.formBuilder = formBuilder;
|
|
55
|
+
this.route = route;
|
|
56
|
+
this.router = router;
|
|
57
|
+
this.location = location;
|
|
58
|
+
this.authenticationService = authenticationService;
|
|
59
|
+
this.baseAppService = baseAppService;
|
|
60
|
+
let userObject = localStorage.getItem("UserInfo");
|
|
61
|
+
this.userInfo = JSON.parse(userObject);
|
|
62
|
+
this.baseAppService.setUserInfo(this.userInfo);
|
|
63
|
+
}
|
|
64
|
+
isvalidUser = true;
|
|
65
|
+
ngOnInit() {
|
|
66
|
+
this.loginForm = this.formBuilder.group({
|
|
67
|
+
username: ['', Validators.required],
|
|
68
|
+
password: ['', Validators.required]
|
|
69
|
+
});
|
|
70
|
+
this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || this.routeUrl;
|
|
71
|
+
//Checking User already logged in or not
|
|
72
|
+
let isNavigate = localStorage.getItem("IsNavigate");
|
|
73
|
+
if (this.location.path() !== '' && this.location.path().indexOf('UserId') !== -1) {
|
|
74
|
+
let userId = this.location.path().split('?')[1].split('UserId=')[1];
|
|
75
|
+
if (userId == this.userInfo.userInfoId) {
|
|
76
|
+
this.router.navigate([this.returnUrl]);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else if (JSON.parse(isNavigate) == true) {
|
|
81
|
+
if (this.userInfo) {
|
|
82
|
+
console.log("Login After naviagtion-", this.returnUrl);
|
|
83
|
+
localStorage.removeItem("IsNavigate");
|
|
84
|
+
this.router.navigate([this.returnUrl]);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
get formsData() { return this.loginForm.controls; }
|
|
90
|
+
onLogin() {
|
|
91
|
+
this.submitted = true;
|
|
92
|
+
this.isLoading = true;
|
|
93
|
+
// stop here if form is invalid
|
|
94
|
+
if (this.loginForm.invalid) {
|
|
95
|
+
this.isLoading = false;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
//this.submitClick = true;
|
|
99
|
+
this.authenticationService.login(this.formsData.username.value, this.formsData.password.value)
|
|
100
|
+
.pipe(first())
|
|
101
|
+
.subscribe(data => {
|
|
102
|
+
console.log(data.status);
|
|
103
|
+
if (data.status === "InValid") {
|
|
104
|
+
this.isLoading = false;
|
|
105
|
+
this.isvalidUser = false;
|
|
106
|
+
this.error = Constant.INVALID;
|
|
107
|
+
this.router.navigate(["/login"]);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log("Login Success-", this.returnUrl);
|
|
111
|
+
this.isLoading = false;
|
|
112
|
+
this.router.navigate([this.returnUrl]);
|
|
113
|
+
}
|
|
114
|
+
}, error => {
|
|
115
|
+
this.isLoading = false;
|
|
116
|
+
this.error = Constant.INVALID;
|
|
117
|
+
this.router.navigate(["/login"]);
|
|
118
|
+
//this.submitClick = true;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/** @nocollapse */ static ɵfac = function LoginComponent_Factory(t) { return new (t || LoginComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.Location), i0.ɵɵdirectiveInject(i4.AuthService), i0.ɵɵdirectiveInject(i5.BaseAppService)); };
|
|
122
|
+
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: LoginComponent, selectors: [["lib-login"]], inputs: { routeUrl: "routeUrl" }, decls: 22, vars: 3, consts: [[1, "container"], [1, "loginForm"], [1, "example-sidenav-content"], [1, "loginWidget"], [3, "formGroup"], [1, "form-group"], ["color", "primary", 1, "example-full-width"], ["formControlName", "username", "type", "text", "matInput", "", "placeholder", "Enter Username ", 1, "toolbar-search"], ["matSuffix", "", 2, "font-size", "1.2em"], ["formControlName", "password", "type", "password", "matInput", "", "placeholder", "Enter Password ", 1, "toolbar-search"], ["mat-button", "", 1, "!loginForm.valid", "btn", "btn-primary", 2, "background-color", "#0888CA", "color", "#fff", 3, "click"], ["class", "alert alert-danger", 4, "ngIf"], ["class", "loade", 4, "ngIf"], [1, "alert", "alert-danger"], [1, "loade"], ["color", "black", 3, "diameter"]], template: function LoginComponent_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "form", 4)(5, "h2");
|
|
124
|
+
i0.ɵɵtext(6, "Login");
|
|
125
|
+
i0.ɵɵelementEnd();
|
|
126
|
+
i0.ɵɵelementStart(7, "div");
|
|
127
|
+
i0.ɵɵtext(8, "\u00A0");
|
|
128
|
+
i0.ɵɵelementEnd();
|
|
129
|
+
i0.ɵɵelementStart(9, "div", 5)(10, "mat-form-field", 6);
|
|
130
|
+
i0.ɵɵelement(11, "input", 7)(12, "mat-icon", 8);
|
|
131
|
+
i0.ɵɵelementEnd()();
|
|
132
|
+
i0.ɵɵelementStart(13, "div", 5)(14, "mat-form-field", 6);
|
|
133
|
+
i0.ɵɵelement(15, "input", 9)(16, "mat-icon", 8);
|
|
134
|
+
i0.ɵɵelementEnd()();
|
|
135
|
+
i0.ɵɵelementStart(17, "div", 5)(18, "button", 10);
|
|
136
|
+
i0.ɵɵlistener("click", function LoginComponent_Template_button_click_18_listener() { return ctx.onLogin(); });
|
|
137
|
+
i0.ɵɵtext(19, "Login");
|
|
138
|
+
i0.ɵɵelementEnd()();
|
|
139
|
+
i0.ɵɵtemplate(20, LoginComponent_div_20_Template, 2, 1, "div", 11);
|
|
140
|
+
i0.ɵɵelementEnd()();
|
|
141
|
+
i0.ɵɵtemplate(21, LoginComponent_section_21_Template, 4, 1, "section", 12);
|
|
142
|
+
i0.ɵɵelementEnd()()();
|
|
143
|
+
} if (rf & 2) {
|
|
144
|
+
i0.ɵɵadvance(4);
|
|
145
|
+
i0.ɵɵproperty("formGroup", ctx.loginForm);
|
|
146
|
+
i0.ɵɵadvance(16);
|
|
147
|
+
i0.ɵɵproperty("ngIf", !ctx.isvalidUser);
|
|
148
|
+
i0.ɵɵadvance(1);
|
|
149
|
+
i0.ɵɵproperty("ngIf", ctx.isLoading);
|
|
150
|
+
} }, dependencies: [i6.MatButton, i7.MatIcon, i8.MatFormField, i8.MatSuffix, i9.MatInput, i10.MatSpinner, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i3.NgIf, i1.FormGroupDirective, i1.FormControlName], styles: ["body[_ngcontent-%COMP%]{background:#f4fafd}.loginForm[_ngcontent-%COMP%]{border-radius:0;background:#fff;width:90%;max-width:450px;padding:15px;text-align:left;margin:60px auto;border:#f4f4f4 solid 1px;box-shadow:4px 2px 5px -2px #c2b3c2} .mat-button, .mat-flat-button[_ngcontent-%COMP%], .mat-icon-button[_ngcontent-%COMP%], .mat-stroked-button[_ngcontent-%COMP%]{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:28px!important;padding:0 16px;border-radius:4px;overflow:visible}.nb-spinner[_ngcontent-%COMP%]{width:75pxx;height:75px;margin:0;background:transparent;border-top:4px solid #03A9F4;border-right:4px solid transparent;border-radius:50%;animation:1s spin linear infinite}.loade[_ngcontent-%COMP%]{background:rgba(255,255,255,.5);width:100%;height:100%;overflow:hidden;padding-left:67px;position:absolute;z-index:1;opacity:50;top:0;padding-top:135px}.square-spinner[_ngcontent-%COMP%]{width:55px;display:block;background-color:#03a9f4;height:55px;animation:3s flip ease-in-out infinite} .mat-spinner circle{stroke:green;stroke-width:10%}mat-form-field[_ngcontent-%COMP%]{width:100%}"] });
|
|
151
|
+
}
|
|
152
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoginComponent, [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{ selector: 'lib-login', template: "\r\n<div class=\"container\">\r\n <div class=\"loginForm\">\r\n <div class=\"example-sidenav-content\">\r\n <div class=\"loginWidget\">\r\n <form [formGroup]=\"loginForm\" >\r\n <h2>Login</h2>\r\n <div> </div>\r\n <div class=\"form-group\">\r\n <!-- <label for=\"username\">Username</label> -->\r\n <!-- <input type=\"text\" formControlName=\"username\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && formsData.username.errors }\" /> -->\r\n <mat-form-field class=\"example-full-width\"\r\n color=\"primary\">\r\n <input class=\"toolbar-search\" formControlName=\"username\" type=\"text\" matInput placeholder=\"Enter Username \">\r\n <mat-icon matSuffix style=\"font-size: 1.2em\"></mat-icon>\r\n </mat-form-field>\r\n <!-- <div *ngIf=\"submitted && formsData.username.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"formsData.username.errors.required\">Username is required</div>\r\n </div> -->\r\n </div>\r\n <div class=\"form-group\">\r\n <!-- <label for=\"password\">Password</label> -->\r\n <!-- <input type=\"password\" formControlName=\"password\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': submitted && formsData.password.errors }\" /> -->\r\n <mat-form-field class=\"example-full-width\"\r\n color=\"primary\">\r\n <input class=\"toolbar-search\" formControlName=\"password\" type=\"password\" matInput placeholder=\"Enter Password \">\r\n <mat-icon matSuffix style=\"font-size: 1.2em\"></mat-icon>\r\n </mat-form-field>\r\n <!-- <div *ngIf=\"submitted && formsData.password.errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"formsData.password.errors.required\">Password is required</div>\r\n </div> -->\r\n </div>\r\n <div class=\"form-group\">\r\n <!-- <button [disabled]=\"submitClick\" class=\"btn btn-primary\">Login</button> -->\r\n <button style=\"background-color: #0888CA;color: #fff;\" mat-button class=\"!loginForm.valid btn btn-primary\" (click)=\"onLogin()\">Login</button>\r\n </div>\r\n <div *ngIf =\"!isvalidUser\" class=\"alert alert-danger\">{{error}}</div>\r\n </form>\r\n </div>\r\n\r\n <section class=\"loade\" *ngIf=\"isLoading\">\r\n <mat-spinner color=\"black\" [diameter]=60 ></mat-spinner>\r\n <span>\r\n Logging...\r\n </span>\r\n </section>\r\n\r\n \r\n <!-- <button type=\"button\" mat-button (click)=\"drawer.toggle()\">\r\n Toggle sidenav\r\n</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n", styles: ["body{background:#f4fafd}.loginForm{border-radius:0;background:#fff;width:90%;max-width:450px;padding:15px;text-align:left;margin:60px auto;border:#f4f4f4 solid 1px;box-shadow:4px 2px 5px -2px #c2b3c2}::ng-deep .mat-button,.mat-flat-button,.mat-icon-button,.mat-stroked-button{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:28px!important;padding:0 16px;border-radius:4px;overflow:visible}.nb-spinner{width:75pxx;height:75px;margin:0;background:transparent;border-top:4px solid #03A9F4;border-right:4px solid transparent;border-radius:50%;animation:1s spin linear infinite}.loade{background:rgba(255,255,255,.5);width:100%;height:100%;overflow:hidden;padding-left:67px;position:absolute;z-index:1;opacity:50;top:0;padding-top:135px}.square-spinner{width:55px;display:block;background-color:#03a9f4;height:55px;animation:3s flip ease-in-out infinite}::ng-deep .mat-spinner circle{stroke:green;stroke-width:10%}mat-form-field{width:100%}\n"] }]
|
|
155
|
+
}], function () { return [{ type: i1.FormBuilder }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.Location }, { type: i4.AuthService }, { type: i5.BaseAppService }]; }, { routeUrl: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}] }); })();
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVsay10b29sL3NyYy9saWIvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnVsay10b29sL3NyYy9saWIvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFnQixNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7Ozs7Ozs7OztJQzhCMUMsK0JBQXNEO0lBQUEsWUFBUztJQUFBLGlCQUFNOzs7SUFBZixlQUFTO0lBQVQsa0NBQVM7OztJQUluRSxtQ0FBeUM7SUFDdkMsa0NBQXdEO0lBQ3hELDRCQUFNO0lBQ1IsNEJBQ0E7SUFBQSxpQkFBTyxFQUFBOztJQUhzQixlQUFhO0lBQWIsNkJBQWE7O0FEdEI5QyxNQUFNLE9BQU8sY0FBYztJQVNmO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWJILFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDekIsUUFBUSxDQUFTO0lBQzFCLFNBQVMsQ0FBWTtJQUNyQixTQUFTLEdBQUcsS0FBSyxDQUFD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VSxjQUFjOzRGQUFkLGNBQWM7WUNwQjNCLDhCQUF1QixhQUFBLGFBQUEsYUFBQSxjQUFBLFNBQUE7WUFLWCxxQkFBSztZQUFBLGlCQUFLO1lBQ2QsMkJBQUs7WUFBQSxzQkFBTTtZQUFBLGlCQUFNO1lBQ2pCLDhCQUF3Qix5QkFBQTtZQU1kLDRCQUE0RyxtQkFBQTtZQUVqSCxpQkFBaUIsRUFBQTtZQUt0QiwrQkFBd0IseUJBQUE7WUFNZCw0QkFBZ0gsbUJBQUE7WUFFeEgsaUJBQWlCLEVBQUE7WUFLbkIsK0JBQXdCLGtCQUFBO1lBRXVGLDRGQUFTLGFBQVMsSUFBQztZQUFDLHNCQUFLO1lBQUEsaUJBQVMsRUFBQTtZQUVqSixrRUFBcUU7WUFDdkUsaUJBQU8sRUFBQTtZQUdULDBFQUtVO1lBTVosaUJBQU0sRUFBQSxFQUFBOztZQWhESSxlQUF1QjtZQUF2Qix5Q0FBdUI7WUFpQ3JCLGdCQUFtQjtZQUFuQix1Q0FBbUI7WUFJTCxlQUFlO1lBQWYsb0NBQWU7Ozt1RkRyQjlCLGNBQWM7Y0FOMUIsU0FBUzsyQkFDRSxXQUFXOzhMQU9aLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25zdGFudCB9IGZyb20gJy4uL2NvbnN0YW50LmVudW0nO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZUFwcFNlcnZpY2V9IGZyb20gJy4uL2Jhc2UtYXBwLnNlcnZpY2UnXHJcbi8vaW1wb3J0IHsgdXJsIH0gZnJvbSAnaW5zcGVjdG9yJztcclxuZXhwb3J0IGludGVyZmFjZSBMb2dpblxyXG57XHJcbiAgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJ2xvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJvdXRlVXJsOiBzdHJpbmc7XHJcbiAgbG9naW5Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgZXJyb3IgPSAnJztcclxuICB1c2VySW5mbzphbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYXNlQXBwU2VydmljZTpCYXNlQXBwU2VydmljZSkgeyAgXHJcbiAgICBsZXQgdXNlck9iamVjdD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJJbmZvXCIpXHJcbiAgICB0aGlzLnVzZXJJbmZvPUpTT04ucGFyc2UodXNlck9iamVjdCk7XHJcbiAgICB0aGlzLmJhc2VBcHBTZXJ2aWNlLnNldFVzZXJJbmZvKHRoaXMudXNlckluZm8pO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGlzdmFsaWRVc2VyOmJvb2xlYW4gPSB0cnVlO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5sb2dpbkZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgdXNlcm5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHBhc3N3b3JkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmV0dXJuVXJsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncmV0dXJuVXJsJ10gfHwgdGhpcy5yb3V0ZVVybDtcclxuICAgIC8vQ2hlY2tpbmcgVXNlciBhbHJlYWR5IGxvZ2dlZCBpbiBvciBub3RcclxuICAgIGxldCBpc05hdmlnYXRlPWxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiSXNOYXZpZ2F0ZVwiKTtcclxuICAgIGlmICh0aGlzLmxvY2F0aW9uLnBhdGgoKSAhPT0gJycgJiYgdGhpcy5sb2NhdGlvbi5wYXRoKCkuaW5kZXhPZignVXNlcklkJykgIT09IC0xKSB7XHJcbiAgICAgIGxldCB1c2VySWQ9dGhpcy5sb2NhdGlvbi5wYXRoKCkuc3BsaXQoJz8nKVsxXS5zcGxpdCgnVXNlcklkPScpWzFdXHJcbiAgICAgIGlmKHVzZXJJZD09dGhpcy51c2VySW5mby51c2VySW5mb0lkKXtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yZXR1cm5VcmxdKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYoSlNPTi5wYXJzZShpc05hdmlnYXRlKT09dHJ1ZSl7XHJcbiAgICAgICAgaWYodGhpcy51c2VySW5mbyl7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJMb2dpbiBBZnRlciBuYXZpYWd0aW9uLVwiLHRoaXMucmV0dXJuVXJsKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcIklzTmF2aWdhdGVcIik7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmV0dXJuVXJsXSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIGdldCBmb3Jtc0RhdGEoKTpMb2dpbiB7IHJldHVybiB0aGlzLmxvZ2luRm9ybS5jb250cm9sczsgfVxyXG5cclxuICBvbkxvZ2luKCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgLy8gc3RvcCBoZXJlIGlmIGZvcm0gaXMgaW52YWxpZFxyXG4gICAgaWYgKHRoaXMubG9naW5Gb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy90aGlzLnN1Ym1pdENsaWNrID0gdHJ1ZTtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ2luKHRoaXMuZm9ybXNEYXRhLnVzZXJuYW1lLnZhbHVlLCB0aGlzLmZvcm1zRGF0YS5wYXNzd29yZC52YWx1ZSlcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuc3RhdHVzKTtcclxuICAgICAgICAgIGlmKGRhdGEuc3RhdHVzPT09XCJJblZhbGlkXCIpXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgdGhpcy5pc3ZhbGlkVXNlcj1mYWxzZTtcclxuICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBDb25zdGFudC5JTlZBTElEO1xyXG4gICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2xvZ2luXCJdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJMb2dpbiBTdWNjZXNzLVwiLHRoaXMucmV0dXJuVXJsKTtcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmV0dXJuVXJsXSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZXJyb3IgPSBDb25zdGFudC5JTlZBTElEO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL2xvZ2luXCJdKTtcclxuICAgICAgICAgIC8vdGhpcy5zdWJtaXRDbGljayA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImxvZ2luRm9ybVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNpZGVuYXYtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxvZ2luV2lkZ2V0XCI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgPlxyXG4gICAgICAgIDxoMj5Mb2dpbjwvaDI+XHJcbiAgICAgICAgPGRpdj4mbmJzcDs8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPCEtLSA8bGFiZWwgZm9yPVwidXNlcm5hbWVcIj5Vc2VybmFtZTwvbGFiZWw+IC0tPlxyXG4gICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmb3Jtc0RhdGEudXNlcm5hbWUuZXJyb3JzIH1cIiAvPiAtLT5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCJcclxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRvb2xiYXItc2VhcmNoXCIgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiRW50ZXIgVXNlcm5hbWUgXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4IHN0eWxlPVwiZm9udC1zaXplOiAxLjJlbVwiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm1zRGF0YS51c2VybmFtZS5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1zRGF0YS51c2VybmFtZS5lcnJvcnMucmVxdWlyZWRcIj5Vc2VybmFtZSBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8IS0tIDxsYWJlbCBmb3I9XCJwYXNzd29yZFwiPlBhc3N3b3JkPC9sYWJlbD4gLS0+XHJcbiAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmb3Jtc0RhdGEucGFzc3dvcmQuZXJyb3JzIH1cIiAvPiAtLT5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCJcclxuICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidG9vbGJhci1zZWFyY2hcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiRW50ZXIgUGFzc3dvcmQgXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4IHN0eWxlPVwiZm9udC1zaXplOiAxLjJlbVwiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm1zRGF0YS5wYXNzd29yZC5lcnJvcnNcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1zRGF0YS5wYXNzd29yZC5lcnJvcnMucmVxdWlyZWRcIj5QYXNzd29yZCBpcyByZXF1aXJlZDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8IS0tIDxidXR0b24gW2Rpc2FibGVkXT1cInN1Ym1pdENsaWNrXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5Mb2dpbjwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgIDxidXR0b24gIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzA4ODhDQTtjb2xvcjogI2ZmZjtcIiBtYXQtYnV0dG9uICBjbGFzcz1cIiFsb2dpbkZvcm0udmFsaWQgYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uTG9naW4oKVwiPkxvZ2luPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZiA9XCIhaXN2YWxpZFVzZXJcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPnt7ZXJyb3J9fTwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImxvYWRlXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cclxuICAgICAgPG1hdC1zcGlubmVyIGNvbG9yPVwiYmxhY2tcIiBbZGlhbWV0ZXJdPTYwID48L21hdC1zcGlubmVyPlxyXG4gICAgICA8c3Bhbj5cclxuICAgIExvZ2dpbmcuLi5cclxuICAgIDwvc3Bhbj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICBcclxuICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZHJhd2VyLnRvZ2dsZSgpXCI+XHJcbiAgVG9nZ2xlIHNpZGVuYXZcclxuPC9idXR0b24+IC0tPlxyXG4gIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG4iXX0=
|