tnx-shared 5.0.17 → 5.0.21
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/assets/gulpfile.js +10 -4
- package/bundles/tnx-shared.umd.js +1170 -528
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts.map +1 -1
- package/components/common-app-component/app-topbar-v2/app-topbar-v2.component.d.ts +78 -0
- package/components/common-app-component/app-topbar-v2/app-topbar-v2.component.d.ts.map +1 -0
- package/components/common-app-component/app-topbar-v2/app-topbar-v2.component.ngfactory.d.ts.map +1 -0
- package/components/common-app-component/app-topbar-v2/app-topbar-v2.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/common-app-component/app.topbar.component.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/components/splash-component/splash-component-v1/splash-component-v1.component.d.ts.map +1 -1
- package/components/splash-component/splash-component-v2/splash-component-v2.component.d.ts +41 -0
- package/components/splash-component/splash-component-v2/splash-component-v2.component.d.ts.map +1 -0
- package/components/splash-component/splash-component-v2/splash-component-v2.component.ngfactory.d.ts.map +1 -0
- package/components/splash-component/splash-component-v2/splash-component-v2.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/splash-component/splash-component.component.d.ts +2 -1
- package/components/splash-component/splash-component.component.d.ts.map +1 -1
- package/esm2015/components/common-app-component/app-topbar-v1/app-topbar-v1.component.js +6 -4
- package/esm2015/components/common-app-component/app-topbar-v2/app-topbar-v2.component.js +412 -0
- package/esm2015/components/common-app-component/app.topbar.component.js +5 -3
- package/esm2015/components/crud/advance-search/advance-search.component.js +1 -1
- package/esm2015/components/query-builders/query-builder/query-builder.component.js +1 -1
- package/esm2015/components/splash-component/splash-component-v1/splash-component-v1.component.js +4 -4
- package/esm2015/components/splash-component/splash-component-v2/splash-component-v2.component.js +194 -0
- package/esm2015/components/splash-component/splash-component.component.js +4 -3
- package/esm2015/components/tn-tabview/tn-tabview.component.js +1 -1
- package/esm2015/components/user-picker/user-picker-box/user-picker-box.component.js +1 -1
- package/esm2015/components/workflow/workflow-picker/workflow-picker.component.js +1 -1
- package/esm2015/components/workflow/workflow-setting-new/workflow-setting-new.component.js +1 -1
- package/esm2015/tnx-shared.js +93 -91
- package/esm2015/tnx-shared.module.js +7 -3
- package/fesm2015/tnx-shared.js +997 -410
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.d.ts +92 -90
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +5 -3
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -8253,6 +8253,7 @@ var EnumTypeSplash;
|
|
|
8253
8253
|
(function (EnumTypeSplash) {
|
|
8254
8254
|
EnumTypeSplash["DEFAULT"] = "Default";
|
|
8255
8255
|
EnumTypeSplash["NEW_V1"] = "v1";
|
|
8256
|
+
EnumTypeSplash["NEW_V2"] = "v2";
|
|
8256
8257
|
})(EnumTypeSplash || (EnumTypeSplash = {}));
|
|
8257
8258
|
class SplashComponentComponent extends ComponentBase {
|
|
8258
8259
|
constructor(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
@@ -8427,9 +8428,9 @@ class SplashComponentComponent extends ComponentBase {
|
|
|
8427
8428
|
SplashComponentComponent.decorators = [
|
|
8428
8429
|
{ type: Component, args: [{
|
|
8429
8430
|
selector: 'splash-component',
|
|
8430
|
-
template: "<ng-container
|
|
8431
|
+
template: "<ng-container [ngSwitch]=\"uiSplash\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"defaultSplash\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\r\n <splash-component-v1></splash-component-v1>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V2\">\r\n <splash-component-v2></splash-component-v2>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #defaultSplash>\r\n <div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n </div>\r\n <div *ngIf=\"loaded\" class=\"modules\">\r\n <div class=\"welcome-user\">\r\n <img class=\"profile-image custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n <h2>Xin ch\u00E0o\r\n <span *ngIf=\"currentUser\">{{currentUser.fullName}}</span>\r\n <span *ngIf=\"!currentUser\">kh\u00E1ch</span>!\r\n </h2>\r\n <ng-container *ngIf=\"currentUser\">\r\n <a (click)=\"goToPersonal()\"><i class=\"fas fa-user\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <ng-container>|</ng-container>\r\n <a style=\"background: #f7e08b;\" (click)=\"logout()\">\r\n <i class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng xu\u1EA5t\r\n </a>\r\n </ng-container>\r\n <a *ngIf=\"!currentUser\" style=\"background: #f7e08b;\" (click)=\"login()\">\r\n <i class=\"fas fa-sign-in-alt\"></i>\u0110\u0103ng nh\u1EADp\r\n </a>\r\n </div>\r\n <div class=\"module-icons\">\r\n <h1>{{environment.appMetadata.main.title}}</h1>\r\n <h2>{{environment.appMetadata.main.owner}}</h2>\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a [style.background]=\"item.background\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\" [style.color]=\"item.colorIcon\"></i>\r\n <span [style.color]=\"item.colorTitle\">{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n</ng-template>",
|
|
8431
8432
|
providers: [ComponentContextService],
|
|
8432
|
-
styles: [".modules{align-items:center;background:url(/assets/images/splash-bg.png);background-color:#fff;background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:column;font-family:monospace;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules div>span{box-shadow:1px 2px 9px 1px #bbb;height:100px;margin:10px;min-width:100px;white-space:normal;width:100px}.modules div>span,.modules div>span>a{border-radius:5px;display:inline-block}.modules div>span>a{color:#fff;cursor:pointer;font-weight:700;height:100%;position:relative;text-align:center;text-decoration:unset;text-shadow:2px 3px 3px hsla(0,0%,42.7%,.4392156862745098);width:100%}.modules div>span>a i{-webkit-animation:in 1s;animation:in 1s}.modules div>span>a:hover i{-webkit-animation:out 1s;animation:out 1s}@-webkit-keyframes in{0%{-webkit-transform:rotateY(0deg)}to{-webkit-transform:rotateY(1turn)}}@-webkit-keyframes out{0%{-webkit-transform:rotateY(1turn)}to{-webkit-transform:rotateY(0deg)}}@media (max-width:1370px){.modules{justify-content:flex-start;overflow:auto}.module-icons.module-icons{margin-bottom:20px}.welcome-user.welcome-user{margin-bottom:30px;margin-top:30px}.welcome-user.welcome-user img{height:100px;width:100px}.clock{font-size:1.5em;margin:0 20px}.data-time{font-size:1em;margin:10px 0 20px}}.modules div>span>a>span{bottom:10px;color:#fff;display:inline-block;left:0;position:absolute;text-align:center;text-decoration:unset;width:100%}.modules div>span.implementing{background-color:#fff;box-shadow:none}.modules div>span>a>i{font-size:3em;left:0;position:absolute;top:10px;width:100%}.div22{width:240px}.div33{width:360px}.div44{width:480px}.div55{width:600px}.div88{width:960px}::ng-deep .flexcolumn{max-width:calc(100vh - 20px)}.div1111-wrapper{overflow:auto;width:100%}.div1111{white-space:nowrap}.module-icons{color:#666;width:100%}.module-icons,.welcome-user{margin-bottom:80px;text-align:center}.welcome-user a{background:#c2f3c3;border-radius:3px;cursor:pointer;padding:6px}.welcome-user a i{margin-right:6px}.welcome-user img{-o-object-fit:contain;border:2px dashed rgba(0,144,162,.5019607843137255);border-radius:50%;height:200px;object-fit:contain;width:200px}.welcome-user h2{color:#0090a2}.clock-wrapper{color:rgba(0,144,162,.6666666666666666);font-size:2em;text-align:center}.loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border-radius:50%;color:#607d8b;font-size:
|
|
8433
|
+
styles: [".modules{align-items:center;background:url(/assets/images/splash-bg.png);background-color:#fff;background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:column;font-family:monospace;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules div>span{box-shadow:1px 2px 9px 1px #bbb;height:100px;margin:10px;min-width:100px;white-space:normal;width:100px}.modules div>span,.modules div>span>a{border-radius:5px;display:inline-block}.modules div>span>a{color:#fff;cursor:pointer;font-weight:700;height:100%;position:relative;text-align:center;text-decoration:unset;text-shadow:2px 3px 3px hsla(0,0%,42.7%,.4392156862745098);width:100%}.modules div>span>a i{-webkit-animation:in 1s;animation:in 1s}.modules div>span>a:hover i{-webkit-animation:out 1s;animation:out 1s}@-webkit-keyframes in{0%{-webkit-transform:rotateY(0deg)}to{-webkit-transform:rotateY(1turn)}}@-webkit-keyframes out{0%{-webkit-transform:rotateY(1turn)}to{-webkit-transform:rotateY(0deg)}}@media (max-width:1370px){.modules{justify-content:flex-start;overflow:auto}.module-icons.module-icons{margin-bottom:20px}.welcome-user.welcome-user{margin-bottom:30px;margin-top:30px}.welcome-user.welcome-user img{height:100px;width:100px}.clock{font-size:1.5em;margin:0 20px}.data-time{font-size:1em;margin:10px 0 20px}}.modules div>span>a>span{bottom:10px;color:#fff;display:inline-block;left:0;position:absolute;text-align:center;text-decoration:unset;width:100%}.modules div>span.implementing{background-color:#fff;box-shadow:none}.modules div>span>a>i{font-size:3em;left:0;position:absolute;top:10px;width:100%}.div22{width:240px}.div33{width:360px}.div44{width:480px}.div55{width:600px}.div88{width:960px}::ng-deep .flexcolumn{max-width:calc(100vh - 20px)}.div1111-wrapper{overflow:auto;width:100%}.div1111{white-space:nowrap}.module-icons{color:#666;width:100%}.module-icons,.welcome-user{margin-bottom:80px;text-align:center}.welcome-user a{background:#c2f3c3;border-radius:3px;cursor:pointer;padding:6px}.welcome-user a i{margin-right:6px}.welcome-user img{-o-object-fit:contain;border:2px dashed rgba(0,144,162,.5019607843137255);border-radius:50%;height:200px;object-fit:contain;width:200px}.welcome-user h2{color:#0090a2}.clock-wrapper{color:rgba(0,144,162,.6666666666666666);font-size:2em;text-align:center}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
8433
8434
|
},] }
|
|
8434
8435
|
];
|
|
8435
8436
|
SplashComponentComponent.ctorParameters = () => [
|
|
@@ -21268,402 +21269,6 @@ AppRootMenuComponent.ctorParameters = () => [
|
|
|
21268
21269
|
{ type: Injector }
|
|
21269
21270
|
];
|
|
21270
21271
|
|
|
21271
|
-
class AppTopBarV1Component extends ComponentBase {
|
|
21272
|
-
constructor(
|
|
21273
|
-
// public app: AppComponent,
|
|
21274
|
-
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
21275
|
-
super(_injector);
|
|
21276
|
-
this._customRouteService = _customRouteService;
|
|
21277
|
-
this._router = _router;
|
|
21278
|
-
this._commonService = _commonService;
|
|
21279
|
-
this._authenService = _authenService;
|
|
21280
|
-
this._cd = _cd;
|
|
21281
|
-
this._permissionService = _permissionService;
|
|
21282
|
-
this._moduleConfigService = _moduleConfigService;
|
|
21283
|
-
this._userService = _userService;
|
|
21284
|
-
this._notifierService = _notifierService;
|
|
21285
|
-
this._translateService = _translateService;
|
|
21286
|
-
this.defaultAvatar = '';
|
|
21287
|
-
this.key = '';
|
|
21288
|
-
this.currentRoute = '';
|
|
21289
|
-
this.fileApi = '';
|
|
21290
|
-
this.currentUser = null;
|
|
21291
|
-
this.appSwitcherItems = [];
|
|
21292
|
-
this.isFirstTime = false;
|
|
21293
|
-
this.showSettings = false;
|
|
21294
|
-
this.allSubscriptions = [];
|
|
21295
|
-
this.message = '';
|
|
21296
|
-
this.environment = this._moduleConfigService.getConfig().environment;
|
|
21297
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
21298
|
-
this.fileApi = this.environment.apiDomain.fileEndpoint;
|
|
21299
|
-
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
21300
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
21301
|
-
}
|
|
21302
|
-
else {
|
|
21303
|
-
if (this.environment.appMetadata.main.showDefaultSetting != null && this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
21304
|
-
this.showDefaultSetting = this.environment.appMetadata.main.showDefaultSetting;
|
|
21305
|
-
}
|
|
21306
|
-
else {
|
|
21307
|
-
this.showDefaultSetting = false;
|
|
21308
|
-
}
|
|
21309
|
-
}
|
|
21310
|
-
if (!this.rootContext.data.currentUser) {
|
|
21311
|
-
this.rootContext.data.currentUser = {};
|
|
21312
|
-
}
|
|
21313
|
-
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
21314
|
-
// this._cd.detectChanges();
|
|
21315
|
-
// }));
|
|
21316
|
-
this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
|
|
21317
|
-
this.currentUser = this._userService.getCurrentUser();
|
|
21318
|
-
this.loadMenuMetadata();
|
|
21319
|
-
});
|
|
21320
|
-
if (this.rootModel.allowAnonymous) {
|
|
21321
|
-
this.loadMenuMetadata();
|
|
21322
|
-
}
|
|
21323
|
-
}
|
|
21324
|
-
loadMenuMetadata() {
|
|
21325
|
-
const prmsAppSwicherItem = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
21326
|
-
const arr = [];
|
|
21327
|
-
for (const ind in this.environment.appMetadata.appSwitcher) {
|
|
21328
|
-
const element = this.environment.appMetadata.appSwitcher[ind];
|
|
21329
|
-
const clientId = this.environment.authenticationSettings.clientId;
|
|
21330
|
-
if (this.rootContext.data.allowAnonymous && element.allowAnonymous) {
|
|
21331
|
-
arr.push(element);
|
|
21332
|
-
}
|
|
21333
|
-
else {
|
|
21334
|
-
if (this.currentUser) {
|
|
21335
|
-
const isAuthorized = yield this._permissionService.isAuthorized(element.code, `${element.code}.MODULE.${element.code}`.toUpperCase(), true);
|
|
21336
|
-
if (isAuthorized) {
|
|
21337
|
-
arr.push(element);
|
|
21338
|
-
}
|
|
21339
|
-
}
|
|
21340
|
-
}
|
|
21341
|
-
}
|
|
21342
|
-
resolve(arr);
|
|
21343
|
-
}));
|
|
21344
|
-
prmsAppSwicherItem.then(rs => {
|
|
21345
|
-
if (rs) {
|
|
21346
|
-
const currentUser = this._userService.getCurrentUser();
|
|
21347
|
-
this.appSwitcherItems.length = 0;
|
|
21348
|
-
rs.forEach(element => {
|
|
21349
|
-
if (element.visible) {
|
|
21350
|
-
if (element.allowAnonymous) {
|
|
21351
|
-
this.appSwitcherItems.push(element);
|
|
21352
|
-
}
|
|
21353
|
-
else {
|
|
21354
|
-
if (currentUser.maNguoiHoc && currentUser.issuperuser && currentUser.issuperuser.toLowerCase() != 'true') {
|
|
21355
|
-
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
21356
|
-
this.appSwitcherItems.push(element);
|
|
21357
|
-
}
|
|
21358
|
-
}
|
|
21359
|
-
else {
|
|
21360
|
-
this.appSwitcherItems.push(element);
|
|
21361
|
-
}
|
|
21362
|
-
}
|
|
21363
|
-
}
|
|
21364
|
-
});
|
|
21365
|
-
}
|
|
21366
|
-
});
|
|
21367
|
-
}
|
|
21368
|
-
ngOnInit() {
|
|
21369
|
-
if (this.rootContext.data.currentUser) {
|
|
21370
|
-
if (this.rootContext.data.currentUser.gender == 0) {
|
|
21371
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
21372
|
-
}
|
|
21373
|
-
else {
|
|
21374
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
21375
|
-
}
|
|
21376
|
-
this.userProfile = this._userService.getProfileInfo();
|
|
21377
|
-
}
|
|
21378
|
-
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, (e) => {
|
|
21379
|
-
setTimeout(() => { this.hideAdvanceSearch(e); });
|
|
21380
|
-
});
|
|
21381
|
-
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, (e) => {
|
|
21382
|
-
this.focusToSearchBox();
|
|
21383
|
-
});
|
|
21384
|
-
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, (e) => {
|
|
21385
|
-
this.showNotificationReload();
|
|
21386
|
-
});
|
|
21387
|
-
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, (e) => {
|
|
21388
|
-
this.setNotify(e.message);
|
|
21389
|
-
});
|
|
21390
|
-
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, e => {
|
|
21391
|
-
this.model.dataModelSetting.showSettings = true;
|
|
21392
|
-
}));
|
|
21393
|
-
this.model.dataModelSetting = {
|
|
21394
|
-
data: {},
|
|
21395
|
-
showSettings: false
|
|
21396
|
-
};
|
|
21397
|
-
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, data => {
|
|
21398
|
-
this.formatDefaultDataSetting(data);
|
|
21399
|
-
this.reloadWindow();
|
|
21400
|
-
});
|
|
21401
|
-
const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
21402
|
-
if (stringDataDefault) {
|
|
21403
|
-
const dataCacheDefault = JSON.parse(stringDataDefault);
|
|
21404
|
-
this.formatDefaultDataSetting(dataCacheDefault);
|
|
21405
|
-
}
|
|
21406
|
-
else {
|
|
21407
|
-
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
21408
|
-
}
|
|
21409
|
-
}
|
|
21410
|
-
ngOnDestroy() {
|
|
21411
|
-
this.allSubscriptions.forEach(element => {
|
|
21412
|
-
element.unsubscribe();
|
|
21413
|
-
});
|
|
21414
|
-
if (this.intervalCountdown) {
|
|
21415
|
-
clearInterval(this.intervalCountdown);
|
|
21416
|
-
}
|
|
21417
|
-
super.ngOnDestroy();
|
|
21418
|
-
}
|
|
21419
|
-
formatDefaultDataSetting(data) {
|
|
21420
|
-
let dataSetting = '';
|
|
21421
|
-
const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
21422
|
-
const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
21423
|
-
fields.forEach((field, index) => {
|
|
21424
|
-
if (!this.checkHidden(field)) {
|
|
21425
|
-
const _f = `${field}${fieldPluses[index]}`;
|
|
21426
|
-
if (data[_f]) {
|
|
21427
|
-
dataSetting += data[_f] + '/';
|
|
21428
|
-
}
|
|
21429
|
-
}
|
|
21430
|
-
});
|
|
21431
|
-
if (dataSetting.length > 0) {
|
|
21432
|
-
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
21433
|
-
}
|
|
21434
|
-
this.defaultDataSetting = dataSetting;
|
|
21435
|
-
}
|
|
21436
|
-
checkHidden(field) {
|
|
21437
|
-
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
|
|
21438
|
-
}
|
|
21439
|
-
getCurrentUserFullName() {
|
|
21440
|
-
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
21441
|
-
}
|
|
21442
|
-
getCurrentUserPosition() {
|
|
21443
|
-
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
21444
|
-
}
|
|
21445
|
-
getCurrentUserAvatar() {
|
|
21446
|
-
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
21447
|
-
return `${this.fileApi}/file/public/${this.rootContext.data.currentUser.avatar}/Download`;
|
|
21448
|
-
}
|
|
21449
|
-
else {
|
|
21450
|
-
return this.defaultAvatar;
|
|
21451
|
-
}
|
|
21452
|
-
}
|
|
21453
|
-
clearFilter(input) {
|
|
21454
|
-
setTimeout(() => {
|
|
21455
|
-
this.model.searchModel[this.model.fieldKey] = '';
|
|
21456
|
-
this._customRouteService.updateFragment(this.model.fieldKey, null);
|
|
21457
|
-
this._customRouteService.updateWithoutFireEvent();
|
|
21458
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
21459
|
-
input.value = '';
|
|
21460
|
-
input.focus();
|
|
21461
|
-
this._cd.detectChanges();
|
|
21462
|
-
});
|
|
21463
|
-
}
|
|
21464
|
-
toggleAdvanceSearch(evt) {
|
|
21465
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
21466
|
-
evt.preventDefault();
|
|
21467
|
-
evt.cancelBubble = true;
|
|
21468
|
-
}
|
|
21469
|
-
hideAdvanceSearch(evt) {
|
|
21470
|
-
if (document.getElementById('advance-search-box')) {
|
|
21471
|
-
const mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
21472
|
-
if (!mask.length) {
|
|
21473
|
-
const closestDropdown = evt.target.closest('.dropdown-advs');
|
|
21474
|
-
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
21475
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
21476
|
-
}
|
|
21477
|
-
}
|
|
21478
|
-
}
|
|
21479
|
-
}
|
|
21480
|
-
focusToSearchBox() {
|
|
21481
|
-
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
21482
|
-
this.input.nativeElement.focus();
|
|
21483
|
-
}
|
|
21484
|
-
}
|
|
21485
|
-
onTopbarSearchClick(event, input) {
|
|
21486
|
-
if (!this.model.fieldKey) {
|
|
21487
|
-
return;
|
|
21488
|
-
}
|
|
21489
|
-
setTimeout(() => {
|
|
21490
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
21491
|
-
this._customRouteService.updateFragment(this.model.fieldKey, input.value);
|
|
21492
|
-
this._customRouteService.updateWithoutFireEvent();
|
|
21493
|
-
input.focus();
|
|
21494
|
-
});
|
|
21495
|
-
}
|
|
21496
|
-
onEsc(event, input) {
|
|
21497
|
-
this.clearFilter(input);
|
|
21498
|
-
}
|
|
21499
|
-
onEnter(event, input) {
|
|
21500
|
-
this.onTopbarSearchClick(event, input);
|
|
21501
|
-
}
|
|
21502
|
-
switchApp(item, openNewTab = false) {
|
|
21503
|
-
if (item.target == '_blank') {
|
|
21504
|
-
if (!item.defaultRedirect) {
|
|
21505
|
-
item.defaultRedirect = '';
|
|
21506
|
-
}
|
|
21507
|
-
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
21508
|
-
if (item.url == item.defaultRedirect) {
|
|
21509
|
-
item.url = '/' + item.code.toLowerCase();
|
|
21510
|
-
}
|
|
21511
|
-
if (!openNewTab) {
|
|
21512
|
-
top.location.href = `${item.url}/${item.defaultRedirect}`;
|
|
21513
|
-
}
|
|
21514
|
-
else {
|
|
21515
|
-
window.open(`${item.url}/${item.defaultRedirect}`, '_blank');
|
|
21516
|
-
}
|
|
21517
|
-
}
|
|
21518
|
-
else {
|
|
21519
|
-
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
21520
|
-
this._router.navigateByUrl(item.defaultRedirect);
|
|
21521
|
-
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code == item.code);
|
|
21522
|
-
if (this.rootContext.data.currentAppMetadata
|
|
21523
|
-
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
21524
|
-
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
21525
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
21526
|
-
}
|
|
21527
|
-
}
|
|
21528
|
-
}
|
|
21529
|
-
}
|
|
21530
|
-
hasAdvanceSearchBox() {
|
|
21531
|
-
return this.model.searchModel.hasAdvanceSearch;
|
|
21532
|
-
}
|
|
21533
|
-
isAdvanceSearching() {
|
|
21534
|
-
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
21535
|
-
}
|
|
21536
|
-
hasAdvanceSearchValue(obj) {
|
|
21537
|
-
for (const key in obj) {
|
|
21538
|
-
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
21539
|
-
continue;
|
|
21540
|
-
}
|
|
21541
|
-
if (obj[key] != null && obj[key] != '') {
|
|
21542
|
-
return false;
|
|
21543
|
-
}
|
|
21544
|
-
}
|
|
21545
|
-
return true;
|
|
21546
|
-
}
|
|
21547
|
-
getComponentId() {
|
|
21548
|
-
return 'TOPBAR';
|
|
21549
|
-
}
|
|
21550
|
-
goToHome() {
|
|
21551
|
-
this.rootContext.fireEvent('GO_HOME');
|
|
21552
|
-
}
|
|
21553
|
-
onEditInfo(event) {
|
|
21554
|
-
event.preventDefault();
|
|
21555
|
-
const currentAppSetting = this.environment.appMetadata.appSwitcher.find(x => x.code == 'USER');
|
|
21556
|
-
if (currentAppSetting) {
|
|
21557
|
-
this.switchApp(currentAppSetting);
|
|
21558
|
-
}
|
|
21559
|
-
else {
|
|
21560
|
-
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
21561
|
-
}
|
|
21562
|
-
}
|
|
21563
|
-
onChangePassword(event) {
|
|
21564
|
-
event.preventDefault();
|
|
21565
|
-
// this.changePassword.showPopup(this._userService.getId());
|
|
21566
|
-
}
|
|
21567
|
-
onTopbarLogout() {
|
|
21568
|
-
if (!localStorage.getItem('currentUrl')) {
|
|
21569
|
-
localStorage.setItem('currentUrl', top.location.href);
|
|
21570
|
-
}
|
|
21571
|
-
this._authenService.logout();
|
|
21572
|
-
}
|
|
21573
|
-
settingDefault() {
|
|
21574
|
-
this.model.dataModelSetting = {
|
|
21575
|
-
data: {},
|
|
21576
|
-
showSettings: true
|
|
21577
|
-
};
|
|
21578
|
-
}
|
|
21579
|
-
onShowSettings(ev) {
|
|
21580
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
21581
|
-
}
|
|
21582
|
-
onCloseSettings(ev) {
|
|
21583
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
21584
|
-
}
|
|
21585
|
-
showProfilePage() {
|
|
21586
|
-
if (this._userService.isSinhVienAccount()) {
|
|
21587
|
-
return false;
|
|
21588
|
-
}
|
|
21589
|
-
return true;
|
|
21590
|
-
}
|
|
21591
|
-
login() {
|
|
21592
|
-
this.rootContext.fireEvent('LOGIN');
|
|
21593
|
-
}
|
|
21594
|
-
setNotify(message) {
|
|
21595
|
-
this.message = message;
|
|
21596
|
-
}
|
|
21597
|
-
handleMouseOver(evt) {
|
|
21598
|
-
evt.target.stop();
|
|
21599
|
-
}
|
|
21600
|
-
handleMouseOut(evt) {
|
|
21601
|
-
evt.target.start();
|
|
21602
|
-
}
|
|
21603
|
-
showNotificationReload() {
|
|
21604
|
-
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
21605
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
21606
|
-
this._notifierService.showConfirm(this.message).then(res => {
|
|
21607
|
-
this.reloadWindow();
|
|
21608
|
-
});
|
|
21609
|
-
// if (this.intervalCountdown) {
|
|
21610
|
-
// clearInterval(this.intervalCountdown);
|
|
21611
|
-
// }
|
|
21612
|
-
// const date = new Date();
|
|
21613
|
-
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
21614
|
-
// this.intervalCountdown = setInterval(f => {
|
|
21615
|
-
// const now = new Date().getTime();
|
|
21616
|
-
// const distance = goalDate - now;
|
|
21617
|
-
// var seconds = Math.floor(distance / 1000);
|
|
21618
|
-
// // If the count down is finished, write some text
|
|
21619
|
-
// if (distance < 0) {
|
|
21620
|
-
// clearInterval(this.intervalCountdown);
|
|
21621
|
-
// this.reloadWindow();
|
|
21622
|
-
// return;
|
|
21623
|
-
// }
|
|
21624
|
-
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
21625
|
-
// if (seconds < 1) {
|
|
21626
|
-
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
21627
|
-
// }
|
|
21628
|
-
// this._notifierService.showConfirm(
|
|
21629
|
-
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
21630
|
-
// 'pi pi-check'
|
|
21631
|
-
// ).then(res => {
|
|
21632
|
-
// clearInterval(this.intervalCountdown);
|
|
21633
|
-
// this.reloadWindow();
|
|
21634
|
-
// });
|
|
21635
|
-
// }, 1000);
|
|
21636
|
-
}
|
|
21637
|
-
reloadWindow() {
|
|
21638
|
-
top.location.reload();
|
|
21639
|
-
}
|
|
21640
|
-
}
|
|
21641
|
-
AppTopBarV1Component.decorators = [
|
|
21642
|
-
{ type: Component, args: [{
|
|
21643
|
-
selector: 'app-topbar-v1',
|
|
21644
|
-
template: "<div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\r\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-inbox\"></i>\r\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-user-edit\"></i>\r\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-book\"></i>\r\n <span>Ghi ch\u00FA</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\r\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>",
|
|
21645
|
-
providers: [ComponentContextService],
|
|
21646
|
-
styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item-inner{padding-top:4px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{align-items:center;background:#fff;display:inline-flex;justify-content:center}.tn-l-switcher-item-label{color:#52abff;margin-top:4px;text-shadow:none}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{color:#52abff;font-size:38px;margin:0 auto;text-shadow:none}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item,::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v1 .wrapper-appswitch{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));text-align:center}@media (max-width:1024px){.layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
|
|
21647
|
-
},] }
|
|
21648
|
-
];
|
|
21649
|
-
AppTopBarV1Component.ctorParameters = () => [
|
|
21650
|
-
{ type: CustomRouterService },
|
|
21651
|
-
{ type: Router },
|
|
21652
|
-
{ type: CommonService },
|
|
21653
|
-
{ type: AuthenService },
|
|
21654
|
-
{ type: ChangeDetectorRef },
|
|
21655
|
-
{ type: Injector },
|
|
21656
|
-
{ type: PermissionService },
|
|
21657
|
-
{ type: ModuleConfigService },
|
|
21658
|
-
{ type: UserService },
|
|
21659
|
-
{ type: NotifierService },
|
|
21660
|
-
{ type: TranslateService }
|
|
21661
|
-
];
|
|
21662
|
-
AppTopBarV1Component.propDecorators = {
|
|
21663
|
-
input: [{ type: ViewChild, args: ['input',] }],
|
|
21664
|
-
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
21665
|
-
};
|
|
21666
|
-
|
|
21667
21272
|
class MenuService {
|
|
21668
21273
|
constructor(_moduleConfigService, _permissionService, _commonService, _applicationContext) {
|
|
21669
21274
|
this._moduleConfigService = _moduleConfigService;
|
|
@@ -22309,7 +21914,9 @@ class AppTopBarComponent extends ComponentBase {
|
|
|
22309
21914
|
this.userProfile = this._userService.getProfileInfo();
|
|
22310
21915
|
}
|
|
22311
21916
|
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, (e) => {
|
|
22312
|
-
setTimeout(() => {
|
|
21917
|
+
setTimeout(() => {
|
|
21918
|
+
this.hideAdvanceSearch(e);
|
|
21919
|
+
});
|
|
22313
21920
|
});
|
|
22314
21921
|
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, (e) => {
|
|
22315
21922
|
this.focusToSearchBox();
|
|
@@ -22575,7 +22182,7 @@ AppTopBarComponent.decorators = [
|
|
|
22575
22182
|
{ type: Component, args: [{
|
|
22576
22183
|
// tslint:disable-next-line: component-selector
|
|
22577
22184
|
selector: 'app-topbar',
|
|
22578
|
-
template: "<ng-container [ngSwitch]=\"layoutAppSwitcher\">\r\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\r\n <app-topbar-v1></app-topbar-v1>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"appSwitcherDefault\">\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #appSwitcherDefault>\r\n <div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\"\r\n [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\r\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-inbox\"></i>\r\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-user-edit\"></i>\r\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-book\"></i>\r\n <span>Ghi ch\u00FA</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" (click)=\"_commonService.onTopbarItemClick($event,modules)\"\r\n style=\"height: 30px;\" pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n class=\"tn-l-top-bar-menu-item-inner\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" style=\"text-align: center;\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n [style.background]=\"item.background\" (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\" [style.color]=\"item.colorTitle\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"\r\n [style.color]=\"item.colorIcon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>",
|
|
22185
|
+
template: "<ng-container [ngSwitch]=\"layoutAppSwitcher\">\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"appSwitcherDefault\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\r\n <app-topbar-v1></app-topbar-v1>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V2\">\r\n <app-topbar-v2></app-topbar-v2>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-template #appSwitcherDefault>\r\n <div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\"\r\n [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\" #profile\r\n class=\"profile-item tn-l-top-bar-menu-item\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <li role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-inbox\"></i>\r\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\r\n </a>\r\n </li>\r\n <li role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-user-edit\"></i>\r\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\r\n </a>\r\n </li>\r\n <li role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-book\"></i>\r\n <span>Ghi ch\u00FA</span>\r\n </a>\r\n </li>\r\n <li role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" (click)=\"_commonService.onTopbarItemClick($event,modules)\"\r\n style=\"height: 30px;\" pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n class=\"tn-l-top-bar-menu-item-inner\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" style=\"text-align: center;\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n [style.background]=\"item.background\" (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\" [style.color]=\"item.colorTitle\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"\r\n [style.color]=\"item.colorIcon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>",
|
|
22579
22186
|
providers: [ComponentContextService],
|
|
22580
22187
|
styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item-inner{padding-top:4px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{align-items:center;display:inline-flex;justify-content:center}.tn-l-switcher-item-label{line-height:1.2;margin-top:4px}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{font-size:38px;margin:0 auto}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
|
|
22581
22188
|
},] }
|
|
@@ -22598,6 +22205,802 @@ AppTopBarComponent.propDecorators = {
|
|
|
22598
22205
|
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
22599
22206
|
};
|
|
22600
22207
|
|
|
22208
|
+
class AppTopBarV1Component extends ComponentBase {
|
|
22209
|
+
constructor(
|
|
22210
|
+
// public app: AppComponent,
|
|
22211
|
+
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
22212
|
+
super(_injector);
|
|
22213
|
+
this._customRouteService = _customRouteService;
|
|
22214
|
+
this._router = _router;
|
|
22215
|
+
this._commonService = _commonService;
|
|
22216
|
+
this._authenService = _authenService;
|
|
22217
|
+
this._cd = _cd;
|
|
22218
|
+
this._permissionService = _permissionService;
|
|
22219
|
+
this._moduleConfigService = _moduleConfigService;
|
|
22220
|
+
this._userService = _userService;
|
|
22221
|
+
this._notifierService = _notifierService;
|
|
22222
|
+
this._translateService = _translateService;
|
|
22223
|
+
this.defaultAvatar = '';
|
|
22224
|
+
this.key = '';
|
|
22225
|
+
this.currentRoute = '';
|
|
22226
|
+
this.fileApi = '';
|
|
22227
|
+
this.currentUser = null;
|
|
22228
|
+
this.appSwitcherItems = [];
|
|
22229
|
+
this.isFirstTime = false;
|
|
22230
|
+
this.showSettings = false;
|
|
22231
|
+
this.allSubscriptions = [];
|
|
22232
|
+
this.message = '';
|
|
22233
|
+
this.environment = this._moduleConfigService.getConfig().environment;
|
|
22234
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
22235
|
+
this.fileApi = this.environment.apiDomain.fileEndpoint;
|
|
22236
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
22237
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
22238
|
+
}
|
|
22239
|
+
else {
|
|
22240
|
+
if (this.environment.appMetadata.main.showDefaultSetting != null && this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
22241
|
+
this.showDefaultSetting = this.environment.appMetadata.main.showDefaultSetting;
|
|
22242
|
+
}
|
|
22243
|
+
else {
|
|
22244
|
+
this.showDefaultSetting = false;
|
|
22245
|
+
}
|
|
22246
|
+
}
|
|
22247
|
+
if (!this.rootContext.data.currentUser) {
|
|
22248
|
+
this.rootContext.data.currentUser = {};
|
|
22249
|
+
}
|
|
22250
|
+
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
22251
|
+
// this._cd.detectChanges();
|
|
22252
|
+
// }));
|
|
22253
|
+
this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
|
|
22254
|
+
this.currentUser = this._userService.getCurrentUser();
|
|
22255
|
+
this.loadMenuMetadata();
|
|
22256
|
+
});
|
|
22257
|
+
if (this.rootModel.allowAnonymous) {
|
|
22258
|
+
this.loadMenuMetadata();
|
|
22259
|
+
}
|
|
22260
|
+
}
|
|
22261
|
+
loadMenuMetadata() {
|
|
22262
|
+
const prmsAppSwicherItem = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
22263
|
+
const arr = [];
|
|
22264
|
+
for (const ind in this.environment.appMetadata.appSwitcher) {
|
|
22265
|
+
const element = this.environment.appMetadata.appSwitcher[ind];
|
|
22266
|
+
const clientId = this.environment.authenticationSettings.clientId;
|
|
22267
|
+
if (this.rootContext.data.allowAnonymous && element.allowAnonymous) {
|
|
22268
|
+
arr.push(element);
|
|
22269
|
+
}
|
|
22270
|
+
else {
|
|
22271
|
+
if (this.currentUser) {
|
|
22272
|
+
const isAuthorized = yield this._permissionService.isAuthorized(element.code, `${element.code}.MODULE.${element.code}`.toUpperCase(), true);
|
|
22273
|
+
if (isAuthorized) {
|
|
22274
|
+
arr.push(element);
|
|
22275
|
+
}
|
|
22276
|
+
}
|
|
22277
|
+
}
|
|
22278
|
+
}
|
|
22279
|
+
resolve(arr);
|
|
22280
|
+
}));
|
|
22281
|
+
prmsAppSwicherItem.then(rs => {
|
|
22282
|
+
if (rs) {
|
|
22283
|
+
const currentUser = this._userService.getCurrentUser();
|
|
22284
|
+
this.appSwitcherItems.length = 0;
|
|
22285
|
+
rs.forEach(element => {
|
|
22286
|
+
if (element.visible) {
|
|
22287
|
+
if (element.allowAnonymous) {
|
|
22288
|
+
this.appSwitcherItems.push(element);
|
|
22289
|
+
}
|
|
22290
|
+
else {
|
|
22291
|
+
if (currentUser.maNguoiHoc && currentUser.issuperuser && currentUser.issuperuser.toLowerCase() != 'true') {
|
|
22292
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
22293
|
+
this.appSwitcherItems.push(element);
|
|
22294
|
+
}
|
|
22295
|
+
}
|
|
22296
|
+
else {
|
|
22297
|
+
this.appSwitcherItems.push(element);
|
|
22298
|
+
}
|
|
22299
|
+
}
|
|
22300
|
+
}
|
|
22301
|
+
});
|
|
22302
|
+
}
|
|
22303
|
+
});
|
|
22304
|
+
}
|
|
22305
|
+
ngOnInit() {
|
|
22306
|
+
if (this.rootContext.data.currentUser) {
|
|
22307
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
22308
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
22309
|
+
}
|
|
22310
|
+
else {
|
|
22311
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
22312
|
+
}
|
|
22313
|
+
this.userProfile = this._userService.getProfileInfo();
|
|
22314
|
+
}
|
|
22315
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, (e) => {
|
|
22316
|
+
setTimeout(() => {
|
|
22317
|
+
this.hideAdvanceSearch(e);
|
|
22318
|
+
});
|
|
22319
|
+
});
|
|
22320
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, (e) => {
|
|
22321
|
+
this.focusToSearchBox();
|
|
22322
|
+
});
|
|
22323
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, (e) => {
|
|
22324
|
+
this.showNotificationReload();
|
|
22325
|
+
});
|
|
22326
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, (e) => {
|
|
22327
|
+
this.setNotify(e.message);
|
|
22328
|
+
});
|
|
22329
|
+
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, e => {
|
|
22330
|
+
this.model.dataModelSetting.showSettings = true;
|
|
22331
|
+
}));
|
|
22332
|
+
this.model.dataModelSetting = {
|
|
22333
|
+
data: {},
|
|
22334
|
+
showSettings: false
|
|
22335
|
+
};
|
|
22336
|
+
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, data => {
|
|
22337
|
+
this.formatDefaultDataSetting(data);
|
|
22338
|
+
this.reloadWindow();
|
|
22339
|
+
});
|
|
22340
|
+
const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
22341
|
+
if (stringDataDefault) {
|
|
22342
|
+
const dataCacheDefault = JSON.parse(stringDataDefault);
|
|
22343
|
+
this.formatDefaultDataSetting(dataCacheDefault);
|
|
22344
|
+
}
|
|
22345
|
+
else {
|
|
22346
|
+
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
22347
|
+
}
|
|
22348
|
+
}
|
|
22349
|
+
ngOnDestroy() {
|
|
22350
|
+
this.allSubscriptions.forEach(element => {
|
|
22351
|
+
element.unsubscribe();
|
|
22352
|
+
});
|
|
22353
|
+
if (this.intervalCountdown) {
|
|
22354
|
+
clearInterval(this.intervalCountdown);
|
|
22355
|
+
}
|
|
22356
|
+
super.ngOnDestroy();
|
|
22357
|
+
}
|
|
22358
|
+
formatDefaultDataSetting(data) {
|
|
22359
|
+
let dataSetting = '';
|
|
22360
|
+
const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
22361
|
+
const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
22362
|
+
fields.forEach((field, index) => {
|
|
22363
|
+
if (!this.checkHidden(field)) {
|
|
22364
|
+
const _f = `${field}${fieldPluses[index]}`;
|
|
22365
|
+
if (data[_f]) {
|
|
22366
|
+
dataSetting += data[_f] + '/';
|
|
22367
|
+
}
|
|
22368
|
+
}
|
|
22369
|
+
});
|
|
22370
|
+
if (dataSetting.length > 0) {
|
|
22371
|
+
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
22372
|
+
}
|
|
22373
|
+
this.defaultDataSetting = dataSetting;
|
|
22374
|
+
}
|
|
22375
|
+
checkHidden(field) {
|
|
22376
|
+
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
|
|
22377
|
+
}
|
|
22378
|
+
getCurrentUserFullName() {
|
|
22379
|
+
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
22380
|
+
}
|
|
22381
|
+
getCurrentUserPosition() {
|
|
22382
|
+
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
22383
|
+
}
|
|
22384
|
+
getCurrentUserAvatar() {
|
|
22385
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
22386
|
+
return `${this.fileApi}/file/public/${this.rootContext.data.currentUser.avatar}/Download`;
|
|
22387
|
+
}
|
|
22388
|
+
else {
|
|
22389
|
+
return this.defaultAvatar;
|
|
22390
|
+
}
|
|
22391
|
+
}
|
|
22392
|
+
clearFilter(input) {
|
|
22393
|
+
setTimeout(() => {
|
|
22394
|
+
this.model.searchModel[this.model.fieldKey] = '';
|
|
22395
|
+
this._customRouteService.updateFragment(this.model.fieldKey, null);
|
|
22396
|
+
this._customRouteService.updateWithoutFireEvent();
|
|
22397
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
22398
|
+
input.value = '';
|
|
22399
|
+
input.focus();
|
|
22400
|
+
this._cd.detectChanges();
|
|
22401
|
+
});
|
|
22402
|
+
}
|
|
22403
|
+
toggleAdvanceSearch(evt) {
|
|
22404
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
22405
|
+
evt.preventDefault();
|
|
22406
|
+
evt.cancelBubble = true;
|
|
22407
|
+
}
|
|
22408
|
+
hideAdvanceSearch(evt) {
|
|
22409
|
+
if (document.getElementById('advance-search-box')) {
|
|
22410
|
+
const mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
22411
|
+
if (!mask.length) {
|
|
22412
|
+
const closestDropdown = evt.target.closest('.dropdown-advs');
|
|
22413
|
+
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
22414
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
22415
|
+
}
|
|
22416
|
+
}
|
|
22417
|
+
}
|
|
22418
|
+
}
|
|
22419
|
+
focusToSearchBox() {
|
|
22420
|
+
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
22421
|
+
this.input.nativeElement.focus();
|
|
22422
|
+
}
|
|
22423
|
+
}
|
|
22424
|
+
onTopbarSearchClick(event, input) {
|
|
22425
|
+
if (!this.model.fieldKey) {
|
|
22426
|
+
return;
|
|
22427
|
+
}
|
|
22428
|
+
setTimeout(() => {
|
|
22429
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
22430
|
+
this._customRouteService.updateFragment(this.model.fieldKey, input.value);
|
|
22431
|
+
this._customRouteService.updateWithoutFireEvent();
|
|
22432
|
+
input.focus();
|
|
22433
|
+
});
|
|
22434
|
+
}
|
|
22435
|
+
onEsc(event, input) {
|
|
22436
|
+
this.clearFilter(input);
|
|
22437
|
+
}
|
|
22438
|
+
onEnter(event, input) {
|
|
22439
|
+
this.onTopbarSearchClick(event, input);
|
|
22440
|
+
}
|
|
22441
|
+
switchApp(item, openNewTab = false) {
|
|
22442
|
+
if (item.target == '_blank') {
|
|
22443
|
+
if (!item.defaultRedirect) {
|
|
22444
|
+
item.defaultRedirect = '';
|
|
22445
|
+
}
|
|
22446
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
22447
|
+
if (item.url == item.defaultRedirect) {
|
|
22448
|
+
item.url = '/' + item.code.toLowerCase();
|
|
22449
|
+
}
|
|
22450
|
+
if (!openNewTab) {
|
|
22451
|
+
top.location.href = `${item.url}/${item.defaultRedirect}`;
|
|
22452
|
+
}
|
|
22453
|
+
else {
|
|
22454
|
+
window.open(`${item.url}/${item.defaultRedirect}`, '_blank');
|
|
22455
|
+
}
|
|
22456
|
+
}
|
|
22457
|
+
else {
|
|
22458
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
22459
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
22460
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code == item.code);
|
|
22461
|
+
if (this.rootContext.data.currentAppMetadata
|
|
22462
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
22463
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
22464
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
22465
|
+
}
|
|
22466
|
+
}
|
|
22467
|
+
}
|
|
22468
|
+
}
|
|
22469
|
+
hasAdvanceSearchBox() {
|
|
22470
|
+
return this.model.searchModel.hasAdvanceSearch;
|
|
22471
|
+
}
|
|
22472
|
+
isAdvanceSearching() {
|
|
22473
|
+
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
22474
|
+
}
|
|
22475
|
+
hasAdvanceSearchValue(obj) {
|
|
22476
|
+
for (const key in obj) {
|
|
22477
|
+
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
22478
|
+
continue;
|
|
22479
|
+
}
|
|
22480
|
+
if (obj[key] != null && obj[key] != '') {
|
|
22481
|
+
return false;
|
|
22482
|
+
}
|
|
22483
|
+
}
|
|
22484
|
+
return true;
|
|
22485
|
+
}
|
|
22486
|
+
getComponentId() {
|
|
22487
|
+
return 'TOPBAR';
|
|
22488
|
+
}
|
|
22489
|
+
goToHome() {
|
|
22490
|
+
this.rootContext.fireEvent('GO_HOME');
|
|
22491
|
+
}
|
|
22492
|
+
onEditInfo(event) {
|
|
22493
|
+
event.preventDefault();
|
|
22494
|
+
const currentAppSetting = this.environment.appMetadata.appSwitcher.find(x => x.code == 'USER');
|
|
22495
|
+
if (currentAppSetting) {
|
|
22496
|
+
this.switchApp(currentAppSetting);
|
|
22497
|
+
}
|
|
22498
|
+
else {
|
|
22499
|
+
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
22500
|
+
}
|
|
22501
|
+
}
|
|
22502
|
+
onChangePassword(event) {
|
|
22503
|
+
event.preventDefault();
|
|
22504
|
+
// this.changePassword.showPopup(this._userService.getId());
|
|
22505
|
+
}
|
|
22506
|
+
onTopbarLogout() {
|
|
22507
|
+
if (!localStorage.getItem('currentUrl')) {
|
|
22508
|
+
localStorage.setItem('currentUrl', top.location.href);
|
|
22509
|
+
}
|
|
22510
|
+
this._authenService.logout();
|
|
22511
|
+
}
|
|
22512
|
+
settingDefault() {
|
|
22513
|
+
this.model.dataModelSetting = {
|
|
22514
|
+
data: {},
|
|
22515
|
+
showSettings: true
|
|
22516
|
+
};
|
|
22517
|
+
}
|
|
22518
|
+
onShowSettings(ev) {
|
|
22519
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
22520
|
+
}
|
|
22521
|
+
onCloseSettings(ev) {
|
|
22522
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
22523
|
+
}
|
|
22524
|
+
showProfilePage() {
|
|
22525
|
+
if (this._userService.isSinhVienAccount()) {
|
|
22526
|
+
return false;
|
|
22527
|
+
}
|
|
22528
|
+
return true;
|
|
22529
|
+
}
|
|
22530
|
+
login() {
|
|
22531
|
+
this.rootContext.fireEvent('LOGIN');
|
|
22532
|
+
}
|
|
22533
|
+
setNotify(message) {
|
|
22534
|
+
this.message = message;
|
|
22535
|
+
}
|
|
22536
|
+
handleMouseOver(evt) {
|
|
22537
|
+
evt.target.stop();
|
|
22538
|
+
}
|
|
22539
|
+
handleMouseOut(evt) {
|
|
22540
|
+
evt.target.start();
|
|
22541
|
+
}
|
|
22542
|
+
showNotificationReload() {
|
|
22543
|
+
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
22544
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
22545
|
+
this._notifierService.showConfirm(this.message).then(res => {
|
|
22546
|
+
this.reloadWindow();
|
|
22547
|
+
});
|
|
22548
|
+
// if (this.intervalCountdown) {
|
|
22549
|
+
// clearInterval(this.intervalCountdown);
|
|
22550
|
+
// }
|
|
22551
|
+
// const date = new Date();
|
|
22552
|
+
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
22553
|
+
// this.intervalCountdown = setInterval(f => {
|
|
22554
|
+
// const now = new Date().getTime();
|
|
22555
|
+
// const distance = goalDate - now;
|
|
22556
|
+
// var seconds = Math.floor(distance / 1000);
|
|
22557
|
+
// // If the count down is finished, write some text
|
|
22558
|
+
// if (distance < 0) {
|
|
22559
|
+
// clearInterval(this.intervalCountdown);
|
|
22560
|
+
// this.reloadWindow();
|
|
22561
|
+
// return;
|
|
22562
|
+
// }
|
|
22563
|
+
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
22564
|
+
// if (seconds < 1) {
|
|
22565
|
+
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
22566
|
+
// }
|
|
22567
|
+
// this._notifierService.showConfirm(
|
|
22568
|
+
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
22569
|
+
// 'pi pi-check'
|
|
22570
|
+
// ).then(res => {
|
|
22571
|
+
// clearInterval(this.intervalCountdown);
|
|
22572
|
+
// this.reloadWindow();
|
|
22573
|
+
// });
|
|
22574
|
+
// }, 1000);
|
|
22575
|
+
}
|
|
22576
|
+
reloadWindow() {
|
|
22577
|
+
top.location.reload();
|
|
22578
|
+
}
|
|
22579
|
+
}
|
|
22580
|
+
AppTopBarV1Component.decorators = [
|
|
22581
|
+
{ type: Component, args: [{
|
|
22582
|
+
selector: 'app-topbar-v1',
|
|
22583
|
+
template: "<div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\" #profile\r\n class=\"profile-item tn-l-top-bar-menu-item\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <li role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-inbox\"></i>\r\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\r\n </a>\r\n </li>\r\n <li role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-user-edit\"></i>\r\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\r\n </a>\r\n </li>\r\n <li role=\"menuitem\">\r\n <a href=\"#\" (click)=\"onEditInfo($event)\">\r\n <i class=\"pi pi-book\"></i>\r\n <span>Ghi ch\u00FA</span>\r\n </a>\r\n </li>\r\n <li role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\r\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>",
|
|
22584
|
+
providers: [ComponentContextService],
|
|
22585
|
+
styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item-inner{padding-top:4px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{align-items:center;background:#fff;display:inline-flex;justify-content:center}.tn-l-switcher-item-label{color:#52abff;margin-top:4px;text-shadow:none}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{color:#52abff;font-size:38px;margin:0 auto;text-shadow:none}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item{width:unset}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v1 .wrapper-appswitch{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));text-align:center}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
|
|
22586
|
+
},] }
|
|
22587
|
+
];
|
|
22588
|
+
AppTopBarV1Component.ctorParameters = () => [
|
|
22589
|
+
{ type: CustomRouterService },
|
|
22590
|
+
{ type: Router },
|
|
22591
|
+
{ type: CommonService },
|
|
22592
|
+
{ type: AuthenService },
|
|
22593
|
+
{ type: ChangeDetectorRef },
|
|
22594
|
+
{ type: Injector },
|
|
22595
|
+
{ type: PermissionService },
|
|
22596
|
+
{ type: ModuleConfigService },
|
|
22597
|
+
{ type: UserService },
|
|
22598
|
+
{ type: NotifierService },
|
|
22599
|
+
{ type: TranslateService }
|
|
22600
|
+
];
|
|
22601
|
+
AppTopBarV1Component.propDecorators = {
|
|
22602
|
+
input: [{ type: ViewChild, args: ['input',] }],
|
|
22603
|
+
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
22604
|
+
};
|
|
22605
|
+
|
|
22606
|
+
class AppTopBarV2Component extends ComponentBase {
|
|
22607
|
+
constructor(
|
|
22608
|
+
// public app: AppComponent,
|
|
22609
|
+
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
22610
|
+
super(_injector);
|
|
22611
|
+
this._customRouteService = _customRouteService;
|
|
22612
|
+
this._router = _router;
|
|
22613
|
+
this._commonService = _commonService;
|
|
22614
|
+
this._authenService = _authenService;
|
|
22615
|
+
this._cd = _cd;
|
|
22616
|
+
this._permissionService = _permissionService;
|
|
22617
|
+
this._moduleConfigService = _moduleConfigService;
|
|
22618
|
+
this._userService = _userService;
|
|
22619
|
+
this._notifierService = _notifierService;
|
|
22620
|
+
this._translateService = _translateService;
|
|
22621
|
+
this.defaultAvatar = '';
|
|
22622
|
+
this.key = '';
|
|
22623
|
+
this.currentRoute = '';
|
|
22624
|
+
this.fileApi = '';
|
|
22625
|
+
this.currentUser = null;
|
|
22626
|
+
this.appSwitcherItems = [];
|
|
22627
|
+
this.isFirstTime = false;
|
|
22628
|
+
this.showSettings = false;
|
|
22629
|
+
this.allSubscriptions = [];
|
|
22630
|
+
this.message = '';
|
|
22631
|
+
this.environment = this._moduleConfigService.getConfig().environment;
|
|
22632
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
22633
|
+
this.fileApi = this.environment.apiDomain.fileEndpoint;
|
|
22634
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
22635
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
22636
|
+
}
|
|
22637
|
+
else {
|
|
22638
|
+
if (this.environment.appMetadata.main.showDefaultSetting != null && this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
22639
|
+
this.showDefaultSetting = this.environment.appMetadata.main.showDefaultSetting;
|
|
22640
|
+
}
|
|
22641
|
+
else {
|
|
22642
|
+
this.showDefaultSetting = false;
|
|
22643
|
+
}
|
|
22644
|
+
}
|
|
22645
|
+
if (!this.rootContext.data.currentUser) {
|
|
22646
|
+
this.rootContext.data.currentUser = {};
|
|
22647
|
+
}
|
|
22648
|
+
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
22649
|
+
// this._cd.detectChanges();
|
|
22650
|
+
// }));
|
|
22651
|
+
this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
|
|
22652
|
+
this.currentUser = this._userService.getCurrentUser();
|
|
22653
|
+
this.loadMenuMetadata();
|
|
22654
|
+
});
|
|
22655
|
+
if (this.rootModel.allowAnonymous) {
|
|
22656
|
+
this.loadMenuMetadata();
|
|
22657
|
+
}
|
|
22658
|
+
}
|
|
22659
|
+
loadMenuMetadata() {
|
|
22660
|
+
const prmsAppSwicherItem = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
22661
|
+
const arr = [];
|
|
22662
|
+
for (const ind in this.environment.appMetadata.appSwitcher) {
|
|
22663
|
+
const element = this.environment.appMetadata.appSwitcher[ind];
|
|
22664
|
+
const clientId = this.environment.authenticationSettings.clientId;
|
|
22665
|
+
if (this.rootContext.data.allowAnonymous && element.allowAnonymous) {
|
|
22666
|
+
arr.push(element);
|
|
22667
|
+
}
|
|
22668
|
+
else {
|
|
22669
|
+
if (this.currentUser) {
|
|
22670
|
+
const isAuthorized = yield this._permissionService.isAuthorized(element.code, `${element.code}.MODULE.${element.code}`.toUpperCase(), true);
|
|
22671
|
+
if (isAuthorized) {
|
|
22672
|
+
arr.push(element);
|
|
22673
|
+
}
|
|
22674
|
+
}
|
|
22675
|
+
}
|
|
22676
|
+
}
|
|
22677
|
+
resolve(arr);
|
|
22678
|
+
}));
|
|
22679
|
+
prmsAppSwicherItem.then(rs => {
|
|
22680
|
+
if (rs) {
|
|
22681
|
+
const currentUser = this._userService.getCurrentUser();
|
|
22682
|
+
this.appSwitcherItems.length = 0;
|
|
22683
|
+
rs.forEach(element => {
|
|
22684
|
+
if (element.visible) {
|
|
22685
|
+
if (element.allowAnonymous) {
|
|
22686
|
+
this.appSwitcherItems.push(element);
|
|
22687
|
+
}
|
|
22688
|
+
else {
|
|
22689
|
+
if (currentUser.maNguoiHoc && currentUser.issuperuser && currentUser.issuperuser.toLowerCase() != 'true') {
|
|
22690
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
22691
|
+
this.appSwitcherItems.push(element);
|
|
22692
|
+
}
|
|
22693
|
+
}
|
|
22694
|
+
else {
|
|
22695
|
+
this.appSwitcherItems.push(element);
|
|
22696
|
+
}
|
|
22697
|
+
}
|
|
22698
|
+
}
|
|
22699
|
+
});
|
|
22700
|
+
}
|
|
22701
|
+
});
|
|
22702
|
+
}
|
|
22703
|
+
ngOnInit() {
|
|
22704
|
+
if (this.rootContext.data.currentUser) {
|
|
22705
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
22706
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
22707
|
+
}
|
|
22708
|
+
else {
|
|
22709
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
22710
|
+
}
|
|
22711
|
+
this.userProfile = this._userService.getProfileInfo();
|
|
22712
|
+
}
|
|
22713
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, (e) => {
|
|
22714
|
+
setTimeout(() => {
|
|
22715
|
+
this.hideAdvanceSearch(e);
|
|
22716
|
+
});
|
|
22717
|
+
});
|
|
22718
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, (e) => {
|
|
22719
|
+
this.focusToSearchBox();
|
|
22720
|
+
});
|
|
22721
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, (e) => {
|
|
22722
|
+
this.showNotificationReload();
|
|
22723
|
+
});
|
|
22724
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, (e) => {
|
|
22725
|
+
this.setNotify(e.message);
|
|
22726
|
+
});
|
|
22727
|
+
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, e => {
|
|
22728
|
+
this.model.dataModelSetting.showSettings = true;
|
|
22729
|
+
}));
|
|
22730
|
+
this.model.dataModelSetting = {
|
|
22731
|
+
data: {},
|
|
22732
|
+
showSettings: false
|
|
22733
|
+
};
|
|
22734
|
+
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, data => {
|
|
22735
|
+
this.formatDefaultDataSetting(data);
|
|
22736
|
+
this.reloadWindow();
|
|
22737
|
+
});
|
|
22738
|
+
const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
22739
|
+
if (stringDataDefault) {
|
|
22740
|
+
const dataCacheDefault = JSON.parse(stringDataDefault);
|
|
22741
|
+
this.formatDefaultDataSetting(dataCacheDefault);
|
|
22742
|
+
}
|
|
22743
|
+
else {
|
|
22744
|
+
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
22745
|
+
}
|
|
22746
|
+
}
|
|
22747
|
+
ngOnDestroy() {
|
|
22748
|
+
this.allSubscriptions.forEach(element => {
|
|
22749
|
+
element.unsubscribe();
|
|
22750
|
+
});
|
|
22751
|
+
if (this.intervalCountdown) {
|
|
22752
|
+
clearInterval(this.intervalCountdown);
|
|
22753
|
+
}
|
|
22754
|
+
super.ngOnDestroy();
|
|
22755
|
+
}
|
|
22756
|
+
formatDefaultDataSetting(data) {
|
|
22757
|
+
let dataSetting = '';
|
|
22758
|
+
const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
22759
|
+
const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
22760
|
+
fields.forEach((field, index) => {
|
|
22761
|
+
if (!this.checkHidden(field)) {
|
|
22762
|
+
const _f = `${field}${fieldPluses[index]}`;
|
|
22763
|
+
if (data[_f]) {
|
|
22764
|
+
dataSetting += data[_f] + '/';
|
|
22765
|
+
}
|
|
22766
|
+
}
|
|
22767
|
+
});
|
|
22768
|
+
if (dataSetting.length > 0) {
|
|
22769
|
+
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
22770
|
+
}
|
|
22771
|
+
this.defaultDataSetting = dataSetting;
|
|
22772
|
+
}
|
|
22773
|
+
checkHidden(field) {
|
|
22774
|
+
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
|
|
22775
|
+
}
|
|
22776
|
+
getCurrentUserFullName() {
|
|
22777
|
+
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
22778
|
+
}
|
|
22779
|
+
getCurrentUserPosition() {
|
|
22780
|
+
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
22781
|
+
}
|
|
22782
|
+
getCurrentUserAvatar() {
|
|
22783
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
22784
|
+
return `${this.fileApi}/file/public/${this.rootContext.data.currentUser.avatar}/Download`;
|
|
22785
|
+
}
|
|
22786
|
+
else {
|
|
22787
|
+
return this.defaultAvatar;
|
|
22788
|
+
}
|
|
22789
|
+
}
|
|
22790
|
+
clearFilter(input) {
|
|
22791
|
+
setTimeout(() => {
|
|
22792
|
+
this.model.searchModel[this.model.fieldKey] = '';
|
|
22793
|
+
this._customRouteService.updateFragment(this.model.fieldKey, null);
|
|
22794
|
+
this._customRouteService.updateWithoutFireEvent();
|
|
22795
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
22796
|
+
input.value = '';
|
|
22797
|
+
input.focus();
|
|
22798
|
+
this._cd.detectChanges();
|
|
22799
|
+
});
|
|
22800
|
+
}
|
|
22801
|
+
toggleAdvanceSearch(evt) {
|
|
22802
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
22803
|
+
evt.preventDefault();
|
|
22804
|
+
evt.cancelBubble = true;
|
|
22805
|
+
}
|
|
22806
|
+
hideAdvanceSearch(evt) {
|
|
22807
|
+
if (document.getElementById('advance-search-box')) {
|
|
22808
|
+
const mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
22809
|
+
if (!mask.length) {
|
|
22810
|
+
const closestDropdown = evt.target.closest('.dropdown-advs');
|
|
22811
|
+
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
22812
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
22813
|
+
}
|
|
22814
|
+
}
|
|
22815
|
+
}
|
|
22816
|
+
}
|
|
22817
|
+
focusToSearchBox() {
|
|
22818
|
+
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
22819
|
+
this.input.nativeElement.focus();
|
|
22820
|
+
}
|
|
22821
|
+
}
|
|
22822
|
+
onTopbarSearchClick(event, input) {
|
|
22823
|
+
if (!this.model.fieldKey) {
|
|
22824
|
+
return;
|
|
22825
|
+
}
|
|
22826
|
+
setTimeout(() => {
|
|
22827
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
22828
|
+
this._customRouteService.updateFragment(this.model.fieldKey, input.value);
|
|
22829
|
+
this._customRouteService.updateWithoutFireEvent();
|
|
22830
|
+
input.focus();
|
|
22831
|
+
});
|
|
22832
|
+
}
|
|
22833
|
+
onEsc(event, input) {
|
|
22834
|
+
this.clearFilter(input);
|
|
22835
|
+
}
|
|
22836
|
+
onEnter(event, input) {
|
|
22837
|
+
this.onTopbarSearchClick(event, input);
|
|
22838
|
+
}
|
|
22839
|
+
switchApp(item, openNewTab = false) {
|
|
22840
|
+
if (item.target == '_blank') {
|
|
22841
|
+
if (!item.defaultRedirect) {
|
|
22842
|
+
item.defaultRedirect = '';
|
|
22843
|
+
}
|
|
22844
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
22845
|
+
if (item.url == item.defaultRedirect) {
|
|
22846
|
+
item.url = '/' + item.code.toLowerCase();
|
|
22847
|
+
}
|
|
22848
|
+
if (!openNewTab) {
|
|
22849
|
+
top.location.href = `${item.url}/${item.defaultRedirect}`;
|
|
22850
|
+
}
|
|
22851
|
+
else {
|
|
22852
|
+
window.open(`${item.url}/${item.defaultRedirect}`, '_blank');
|
|
22853
|
+
}
|
|
22854
|
+
}
|
|
22855
|
+
else {
|
|
22856
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
22857
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
22858
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code == item.code);
|
|
22859
|
+
if (this.rootContext.data.currentAppMetadata
|
|
22860
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
22861
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
22862
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
22863
|
+
}
|
|
22864
|
+
}
|
|
22865
|
+
}
|
|
22866
|
+
}
|
|
22867
|
+
hasAdvanceSearchBox() {
|
|
22868
|
+
return this.model.searchModel.hasAdvanceSearch;
|
|
22869
|
+
}
|
|
22870
|
+
isAdvanceSearching() {
|
|
22871
|
+
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
22872
|
+
}
|
|
22873
|
+
hasAdvanceSearchValue(obj) {
|
|
22874
|
+
for (const key in obj) {
|
|
22875
|
+
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
22876
|
+
continue;
|
|
22877
|
+
}
|
|
22878
|
+
if (obj[key] != null && obj[key] != '') {
|
|
22879
|
+
return false;
|
|
22880
|
+
}
|
|
22881
|
+
}
|
|
22882
|
+
return true;
|
|
22883
|
+
}
|
|
22884
|
+
getComponentId() {
|
|
22885
|
+
return 'TOPBAR';
|
|
22886
|
+
}
|
|
22887
|
+
goToHome() {
|
|
22888
|
+
this.rootContext.fireEvent('GO_HOME');
|
|
22889
|
+
}
|
|
22890
|
+
onEditInfo(event) {
|
|
22891
|
+
event.preventDefault();
|
|
22892
|
+
const currentAppSetting = this.environment.appMetadata.appSwitcher.find(x => x.code == 'USER');
|
|
22893
|
+
if (currentAppSetting) {
|
|
22894
|
+
this.switchApp(currentAppSetting);
|
|
22895
|
+
}
|
|
22896
|
+
else {
|
|
22897
|
+
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
22898
|
+
}
|
|
22899
|
+
}
|
|
22900
|
+
onChangePassword(event) {
|
|
22901
|
+
event.preventDefault();
|
|
22902
|
+
// this.changePassword.showPopup(this._userService.getId());
|
|
22903
|
+
}
|
|
22904
|
+
onTopbarLogout() {
|
|
22905
|
+
if (!localStorage.getItem('currentUrl')) {
|
|
22906
|
+
localStorage.setItem('currentUrl', top.location.href);
|
|
22907
|
+
}
|
|
22908
|
+
this._authenService.logout();
|
|
22909
|
+
}
|
|
22910
|
+
settingDefault() {
|
|
22911
|
+
this.model.dataModelSetting = {
|
|
22912
|
+
data: {},
|
|
22913
|
+
showSettings: true
|
|
22914
|
+
};
|
|
22915
|
+
}
|
|
22916
|
+
onShowSettings(ev) {
|
|
22917
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
22918
|
+
}
|
|
22919
|
+
onCloseSettings(ev) {
|
|
22920
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
22921
|
+
}
|
|
22922
|
+
showProfilePage() {
|
|
22923
|
+
if (this._userService.isSinhVienAccount()) {
|
|
22924
|
+
return false;
|
|
22925
|
+
}
|
|
22926
|
+
return true;
|
|
22927
|
+
}
|
|
22928
|
+
login() {
|
|
22929
|
+
this.rootContext.fireEvent('LOGIN');
|
|
22930
|
+
}
|
|
22931
|
+
setNotify(message) {
|
|
22932
|
+
this.message = message;
|
|
22933
|
+
}
|
|
22934
|
+
handleMouseOver(evt) {
|
|
22935
|
+
evt.target.stop();
|
|
22936
|
+
}
|
|
22937
|
+
handleMouseOut(evt) {
|
|
22938
|
+
evt.target.start();
|
|
22939
|
+
}
|
|
22940
|
+
showNotificationReload() {
|
|
22941
|
+
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
22942
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
22943
|
+
this._notifierService.showConfirm(this.message).then(res => {
|
|
22944
|
+
this.reloadWindow();
|
|
22945
|
+
});
|
|
22946
|
+
// if (this.intervalCountdown) {
|
|
22947
|
+
// clearInterval(this.intervalCountdown);
|
|
22948
|
+
// }
|
|
22949
|
+
// const date = new Date();
|
|
22950
|
+
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
22951
|
+
// this.intervalCountdown = setInterval(f => {
|
|
22952
|
+
// const now = new Date().getTime();
|
|
22953
|
+
// const distance = goalDate - now;
|
|
22954
|
+
// var seconds = Math.floor(distance / 1000);
|
|
22955
|
+
// // If the count down is finished, write some text
|
|
22956
|
+
// if (distance < 0) {
|
|
22957
|
+
// clearInterval(this.intervalCountdown);
|
|
22958
|
+
// this.reloadWindow();
|
|
22959
|
+
// return;
|
|
22960
|
+
// }
|
|
22961
|
+
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
22962
|
+
// if (seconds < 1) {
|
|
22963
|
+
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
22964
|
+
// }
|
|
22965
|
+
// this._notifierService.showConfirm(
|
|
22966
|
+
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
22967
|
+
// 'pi pi-check'
|
|
22968
|
+
// ).then(res => {
|
|
22969
|
+
// clearInterval(this.intervalCountdown);
|
|
22970
|
+
// this.reloadWindow();
|
|
22971
|
+
// });
|
|
22972
|
+
// }, 1000);
|
|
22973
|
+
}
|
|
22974
|
+
reloadWindow() {
|
|
22975
|
+
top.location.reload();
|
|
22976
|
+
}
|
|
22977
|
+
}
|
|
22978
|
+
AppTopBarV2Component.decorators = [
|
|
22979
|
+
{ type: Component, args: [{
|
|
22980
|
+
selector: 'app-topbar-v2',
|
|
22981
|
+
template: "<div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\r\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\r\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>",
|
|
22982
|
+
providers: [ComponentContextService],
|
|
22983
|
+
styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item-inner{padding-top:4px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{align-items:center;background:#fff;display:inline-flex;justify-content:center}.tn-l-switcher-item-label{color:#52abff;line-height:20px;margin-top:4px;text-align:center;text-shadow:none}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{color:#52abff;font-size:38px;margin:0 auto;text-shadow:none}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v2 .topbar .topbar-left{box-shadow:none}::ng-deep .layout-wrapper app-topbar-v2 .wrapper-appswitch{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));text-align:center}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
|
|
22984
|
+
},] }
|
|
22985
|
+
];
|
|
22986
|
+
AppTopBarV2Component.ctorParameters = () => [
|
|
22987
|
+
{ type: CustomRouterService },
|
|
22988
|
+
{ type: Router },
|
|
22989
|
+
{ type: CommonService },
|
|
22990
|
+
{ type: AuthenService },
|
|
22991
|
+
{ type: ChangeDetectorRef },
|
|
22992
|
+
{ type: Injector },
|
|
22993
|
+
{ type: PermissionService },
|
|
22994
|
+
{ type: ModuleConfigService },
|
|
22995
|
+
{ type: UserService },
|
|
22996
|
+
{ type: NotifierService },
|
|
22997
|
+
{ type: TranslateService }
|
|
22998
|
+
];
|
|
22999
|
+
AppTopBarV2Component.propDecorators = {
|
|
23000
|
+
input: [{ type: ViewChild, args: ['input',] }],
|
|
23001
|
+
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
23002
|
+
};
|
|
23003
|
+
|
|
22601
23004
|
class TnClientCommand {
|
|
22602
23005
|
}
|
|
22603
23006
|
var CommandType;
|
|
@@ -24980,7 +25383,7 @@ AdvanceSearchComponent.decorators = [
|
|
|
24980
25383
|
])
|
|
24981
25384
|
])
|
|
24982
25385
|
],
|
|
24983
|
-
styles: [".advance-search-box{border:1px solid #eee;border-radius:0;overflow:hidden}.advance-filter-close{background:#fff;color:#666;font-size:.9em;position:absolute;right:3px;top:3px;z-index:1}.action-trigger{outline:none;padding:0}.action-trigger>span:first-child{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;bottom:0;padding:10px 1rem 10px 10px;position:sticky}.box-advance-search-inline{justify-content:flex-end}.box-advance-search-inline input{padding:5px 12px}.box-advance-search-inline .action{cursor:pointer}.box-advance-search-inline .action.dirty{color:#008eff;pointer-events:unset}.box-advance-search-inline .action.disabled{background:#e9ecef;color:#d6d6d6;cursor:unset;pointer-events:none}.box-advance-search-inline .action:hover{background:#f5f6f8}::ng-deep .advance-search-mask-overlay{background:rgba(0,0,0,.1450980392156863);bottom:0;left:0;position:fixed;right:0;top:0;z-index:999}::ng-deep .advance-search-overlay-panel{-webkit-animation-duration:.5s;animation-duration:.5s;border:0;box-shadow:0 6px 12px 0 rgba(0,0,0,.26);margin-top:0;max-width:calc(100vw - 2rem);padding:0;position:fixed;width:800px;z-index:1000}::ng-deep .advance-search-overlay-panel perfect-scrollbar{display:flex;flex-direction:column}::ng-deep .advance-search-overlay-panel:not(.hide){display:block!important}@media (min-width:768px){.box-advance-search-inline input{max-width:300px}}"]
|
|
25386
|
+
styles: [".advance-search-box{border:1px solid #eee;border-radius:0;overflow:hidden}.advance-filter-close{background:#fff;color:#666;font-size:.9em;position:absolute;right:3px;top:3px;z-index:1}.action-trigger{outline:none;padding:0}.action-trigger>span:first-child{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;bottom:0;padding:10px 1rem 10px 10px;position:-webkit-sticky;position:sticky}.box-advance-search-inline{justify-content:flex-end}.box-advance-search-inline input{padding:5px 12px}.box-advance-search-inline .action{cursor:pointer}.box-advance-search-inline .action.dirty{color:#008eff;pointer-events:unset}.box-advance-search-inline .action.disabled{background:#e9ecef;color:#d6d6d6;cursor:unset;pointer-events:none}.box-advance-search-inline .action:hover{background:#f5f6f8}::ng-deep .advance-search-mask-overlay{background:rgba(0,0,0,.1450980392156863);bottom:0;left:0;position:fixed;right:0;top:0;z-index:999}::ng-deep .advance-search-overlay-panel{-webkit-animation-duration:.5s;animation-duration:.5s;border:0;box-shadow:0 6px 12px 0 rgba(0,0,0,.26);margin-top:0;max-width:calc(100vw - 2rem);padding:0;position:fixed;width:800px;z-index:1000}::ng-deep .advance-search-overlay-panel perfect-scrollbar{display:flex;flex-direction:column}::ng-deep .advance-search-overlay-panel:not(.hide){display:block!important}@media (min-width:768px){.box-advance-search-inline input{max-width:300px}}"]
|
|
24984
25387
|
},] }
|
|
24985
25388
|
];
|
|
24986
25389
|
AdvanceSearchComponent.ctorParameters = () => [
|
|
@@ -26482,7 +26885,7 @@ QueryBuilderComponent.decorators = [
|
|
|
26482
26885
|
{ type: Component, args: [{
|
|
26483
26886
|
selector: 'query-builder',
|
|
26484
26887
|
template: "<tn-custom-scrollbar *ngIf=\"useScrollBar\" #scrollbar [style]=\"style\">\r\n <div [class]=\"styleClass\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n</tn-custom-scrollbar>\r\n<ng-container *ngIf=\"!useScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</ng-container>\r\n<ng-template #content>\r\n <query-builder-group [dataSourceFields]=\"_dataSourceFields\" [query]=\"query\" [isRoot]=\"true\">\r\n </query-builder-group>\r\n</ng-template>\r\n<div *ngIf=\"!hiddenButtons\" class=\"footer-search\">\r\n <div class=\"footer-search-buttons-group\">\r\n <div>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text p-button-success\"\r\n [pTooltip]=\"'L\u01B0u b\u1ED9 l\u1ECDc hi\u1EC7n t\u1EA1i' | translate\" tooltipPosition=\"top\" (click)=\"saveFilter()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-text p-button-danger\"\r\n [pTooltip]=\"'X\u00F3a b\u1ED9 l\u1ECDc \u0111\u00E3 l\u01B0u' | translate\" tooltipPosition=\"top\" (click)=\"deleteSave()\"></button>\r\n </div>\r\n <div>\r\n <button type=\"button\" pButton icon=\"pi pi-search\" class=\"p-button-text p-button-info\"\r\n [label]=\"'T\u00ECm ki\u1EBFm' | translate\" (click)=\"search()\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-undo\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'X\u00F3a t\u00ECm ki\u1EBFm' | translate\" (click)=\"clearFilter()\"></button>\r\n </div>\r\n </div>\r\n</div>",
|
|
26485
|
-
styles: [".footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;bottom:0;padding:10px 20px 10px 10px;position:sticky}.footer-search-buttons-group{display:flex}.footer-search-buttons-group>div:first-child{flex:1 1;text-align:left}@media (max-width:640px){.footer-search-buttons-group{white-space:nowrap}}"]
|
|
26888
|
+
styles: [".footer-search{background:#f7f7f7;border-top:1px solid #dee2e6;bottom:0;padding:10px 20px 10px 10px;position:-webkit-sticky;position:sticky}.footer-search-buttons-group{display:flex}.footer-search-buttons-group>div:first-child{flex:1 1;text-align:left}@media (max-width:640px){.footer-search-buttons-group{white-space:nowrap}}"]
|
|
26486
26889
|
},] }
|
|
26487
26890
|
];
|
|
26488
26891
|
QueryBuilderComponent.ctorParameters = () => [
|
|
@@ -32181,10 +32584,10 @@ class SplashComponentV1Component extends ComponentBase {
|
|
|
32181
32584
|
}
|
|
32182
32585
|
SplashComponentV1Component.decorators = [
|
|
32183
32586
|
{ type: Component, args: [{
|
|
32184
|
-
selector: '
|
|
32185
|
-
template: "<div *ngIf=\"!loaded\" class=\"loader\">\r\n</div>\r\n<div
|
|
32587
|
+
selector: 'splash-component-v1',
|
|
32588
|
+
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n [alt]=\"environment.appMetadata.main.owner\">\r\n <div class=\"title\">\r\n <h2>{{environment.appMetadata.main.title}}</h2>\r\n <h1>{{environment.appMetadata.main.owner}}</h1>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
|
|
32186
32589
|
providers: [ComponentContextService],
|
|
32187
|
-
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.modules-v1{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v1 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v1 div>span>a{border-radius:5px;cursor:pointer;font-weight:700;height:100%;position:relative}.modules-v1 div>span>a,.modules-v1 div>span>a>span{color:#fff;display:inline-block;text-align:center;text-decoration:unset;width:100%}.modules-v1 div>span>a>span{bottom:10px;left:0;position:absolute}.modules-v1 div>span.implementing{background-color:#fff;box-shadow:none}.modules-v1 div>span>a>i{font-size:3.5em;left:0;position:absolute;top:20px;width:100%}.modules-v1 .div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.modules-v1 .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{-ms-grid-row-align:stretch;align-self:stretch;background-color:rgba(249,244,244,.9215686274509803);color:#666;display:flex;flex-direction:column;justify-content:space-evenly;text-align:center;width:65%}.modules-v1 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v1 .
|
|
32590
|
+
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v1{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v1 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v1 div>span>a{border-radius:5px;cursor:pointer;font-weight:700;height:100%;position:relative}.modules-v1 div>span>a,.modules-v1 div>span>a>span{color:#fff;display:inline-block;text-align:center;text-decoration:unset;width:100%}.modules-v1 div>span>a>span{bottom:10px;left:0;position:absolute}.modules-v1 div>span.implementing{background-color:#fff;box-shadow:none}.modules-v1 div>span>a>i{font-size:3.5em;left:0;position:absolute;top:20px;width:100%}.modules-v1 .div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.modules-v1 .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{-ms-grid-row-align:stretch;align-self:stretch;background-color:rgba(249,244,244,.9215686274509803);color:#666;display:flex;flex-direction:column;justify-content:space-evenly;text-align:center;width:65%}.modules-v1 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v1 .welcome-user{-ms-grid-row-align:stretch;align-self:stretch;background-color:rgba(47,112,172,.9215686274509803);display:flex;flex-direction:column;text-align:center;width:35%}.modules-v1 .welcome-user .wrp-login{align-items:center;color:#fff;display:flex;flex-direction:column;margin:20px auto auto}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v1 .welcome-user .wrp-login b{display:block;font-size:25px;text-transform:uppercase}.modules-v1 .welcome-user .wrp-login .login{-ms-grid-columns:(150px)[2];display:-ms-grid;display:grid;grid-gap:10px;grid-template-columns:repeat(2,150px);margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;border-radius:5px;color:#5d5d5d;cursor:pointer;display:inline-block;padding:6px}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;box-shadow:1px 1px 11px 6px #2a659b;height:200px;object-fit:contain;width:200px}.modules-v1 .welcome-user .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v1 .underconstruction{color:red;font-size:4em;font-weight:700;text-transform:uppercase}@media (max-width:1368px){.modules-v1 .clock{font-size:1.5em;margin:0 20px}.modules-v1 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1024px){.modules-v1 .div1111-wrapper{max-width:560px}}@media (max-width:768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{align-items:center;flex-direction:row;height:270px;padding-bottom:87px;width:100%}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{height:calc(100% - 270px);width:100%}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-position:50%;background-repeat:no-repeat;margin-top:-200px;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:hsla(0,0%,100%,.9019607843137255);box-shadow:1px 4px 9px 2px #67a0d4;height:100%;margin-left:20px;margin-right:20px;padding:20px 10px}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width:640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{float:right;padding:0 20px 0 0;width:50%}.modules-v1 .welcome-user .wrp-login h2{font-size:14px;margin-bottom:3px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{display:flex;flex-direction:column;margin-top:10px;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{float:left;width:50%}.modules-v1 .welcome-user .profile-image img{display:block;height:130px;margin-left:35px;width:130px}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-right:0;padding-top:10px}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px;margin-top:-8.1em}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{height:360px;margin-top:0;max-width:360px}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{height:100px;width:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width:375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h1,.modules-v1 .module-icons .img-title .title h2{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width:360px){.modules-v1 .module-icons .img-title{margin-top:-2em}.modules-v1 .module-icons .img-title .title{margin-left:10px;margin-right:10px}}@media (max-height:810px){.modules-v1 .module-icons .img-title{margin-top:-6.7em}}@media (max-height:745px){.modules-v1 .module-icons .img-title{margin-top:-4.7em}}@media (max-height:675px){.modules-v1 .module-icons .img-title{margin-top:-2.6em}}@media (max-height:625px){.modules-v1 .module-icons .img-title{margin-top:1.5em}}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
32188
32591
|
},] }
|
|
32189
32592
|
];
|
|
32190
32593
|
SplashComponentV1Component.ctorParameters = () => [
|
|
@@ -32198,6 +32601,188 @@ SplashComponentV1Component.ctorParameters = () => [
|
|
|
32198
32601
|
{ type: GlobalService }
|
|
32199
32602
|
];
|
|
32200
32603
|
|
|
32604
|
+
class SplashComponentV2Component extends ComponentBase {
|
|
32605
|
+
constructor(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
32606
|
+
super(injector);
|
|
32607
|
+
this._moduleConfigService = _moduleConfigService;
|
|
32608
|
+
this._permissionService = _permissionService;
|
|
32609
|
+
this._deviceDetectorService = _deviceDetectorService;
|
|
32610
|
+
this._userService = _userService;
|
|
32611
|
+
this._router = _router;
|
|
32612
|
+
this._authenService = _authenService;
|
|
32613
|
+
this._globalService = _globalService;
|
|
32614
|
+
this.defaultAvatar = '';
|
|
32615
|
+
this.appSwitcherItems = [];
|
|
32616
|
+
this.loaded = false;
|
|
32617
|
+
this.currentDate = new Date();
|
|
32618
|
+
this.showDefaultSetting = false;
|
|
32619
|
+
this.fileApi = '';
|
|
32620
|
+
this.isOnMobile = false;
|
|
32621
|
+
this.daysInWeek = ['Chủ nhật', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7'];
|
|
32622
|
+
this.rootContext.fireEvent('MAIN_CONTENT_ONLY', true);
|
|
32623
|
+
this.environment = this._moduleConfigService.getConfig().environment;
|
|
32624
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
32625
|
+
this.fileApi = this.environment.apiDomain.fileEndpoint;
|
|
32626
|
+
setInterval(() => {
|
|
32627
|
+
this.currentDate = new Date();
|
|
32628
|
+
}, 1000);
|
|
32629
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
32630
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
32631
|
+
}
|
|
32632
|
+
else {
|
|
32633
|
+
if (this.environment.appMetadata.main.showDefaultSetting != null && this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
32634
|
+
this.showDefaultSetting = this.environment.appMetadata.main.showDefaultSetting;
|
|
32635
|
+
}
|
|
32636
|
+
else {
|
|
32637
|
+
this.showDefaultSetting = false;
|
|
32638
|
+
}
|
|
32639
|
+
}
|
|
32640
|
+
// Config for authentication
|
|
32641
|
+
this._globalService.setHeaderState(false);
|
|
32642
|
+
this._globalService.setMenuState(false);
|
|
32643
|
+
this.underconstruction = this.environment.underconstruction;
|
|
32644
|
+
}
|
|
32645
|
+
ngOnInit() {
|
|
32646
|
+
if (this._deviceDetectorService.isMobile()) {
|
|
32647
|
+
this.isOnMobile = true;
|
|
32648
|
+
}
|
|
32649
|
+
if (this.rootContext.data.currentUser) {
|
|
32650
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
32651
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
32652
|
+
}
|
|
32653
|
+
else {
|
|
32654
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
32655
|
+
}
|
|
32656
|
+
}
|
|
32657
|
+
this.rootContext.replaySubscribe(ComCtxConstants.ROOT.USER_LOADED, rs => {
|
|
32658
|
+
this.currentUser = this._userService.getCurrentUser();
|
|
32659
|
+
this.loadAppMetadata();
|
|
32660
|
+
this.loaded = true;
|
|
32661
|
+
});
|
|
32662
|
+
if (this.rootModel.allowAnonymous) {
|
|
32663
|
+
this.loaded = true;
|
|
32664
|
+
this.loadAppMetadata();
|
|
32665
|
+
}
|
|
32666
|
+
}
|
|
32667
|
+
loadAppMetadata() {
|
|
32668
|
+
const prmsAppSwicherItem = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
32669
|
+
const arr = [];
|
|
32670
|
+
for (const ind in this.environment.appMetadata.appSwitcher) {
|
|
32671
|
+
const element = this.environment.appMetadata.appSwitcher[ind];
|
|
32672
|
+
const clientId = this.environment.authenticationSettings.clientId;
|
|
32673
|
+
if (this.rootModel.allowAnonymous && element.allowAnonymous) {
|
|
32674
|
+
arr.push(element);
|
|
32675
|
+
}
|
|
32676
|
+
else if (this.currentUser) {
|
|
32677
|
+
const isAuthorized = yield this._permissionService.isAuthorized(element.code, `${element.code}.MODULE.${element.code}`.toUpperCase(), true);
|
|
32678
|
+
if (isAuthorized) {
|
|
32679
|
+
arr.push(element);
|
|
32680
|
+
}
|
|
32681
|
+
}
|
|
32682
|
+
}
|
|
32683
|
+
resolve(arr);
|
|
32684
|
+
}));
|
|
32685
|
+
prmsAppSwicherItem.then(rs => {
|
|
32686
|
+
this.appSwitcherItems.length = 0;
|
|
32687
|
+
if (rs) {
|
|
32688
|
+
rs.forEach(element => {
|
|
32689
|
+
if (element.visible) {
|
|
32690
|
+
if (!this.currentUser) { // allow anonymous
|
|
32691
|
+
this.appSwitcherItems.push(element);
|
|
32692
|
+
}
|
|
32693
|
+
else {
|
|
32694
|
+
if (this.currentUser.maNguoiHoc && this.currentUser.issuperuser.toLowerCase() != 'true') {
|
|
32695
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
32696
|
+
this.appSwitcherItems.push(element);
|
|
32697
|
+
}
|
|
32698
|
+
}
|
|
32699
|
+
else {
|
|
32700
|
+
this.appSwitcherItems.push(element);
|
|
32701
|
+
}
|
|
32702
|
+
}
|
|
32703
|
+
}
|
|
32704
|
+
});
|
|
32705
|
+
}
|
|
32706
|
+
});
|
|
32707
|
+
}
|
|
32708
|
+
switchApp(item) {
|
|
32709
|
+
this.loaded = false;
|
|
32710
|
+
if (item.target == '_blank') {
|
|
32711
|
+
if (!item.defaultRedirect) {
|
|
32712
|
+
item.defaultRedirect = '';
|
|
32713
|
+
}
|
|
32714
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
32715
|
+
if (item.url == item.defaultRedirect) {
|
|
32716
|
+
item.url = '/' + item.code.toLowerCase();
|
|
32717
|
+
}
|
|
32718
|
+
let link = `${item.url}/${item.defaultRedirect}`;
|
|
32719
|
+
if (!link.startsWith('/') && !link.startsWith('http')) {
|
|
32720
|
+
link = '/' + link;
|
|
32721
|
+
}
|
|
32722
|
+
top.location.href = link;
|
|
32723
|
+
}
|
|
32724
|
+
else {
|
|
32725
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
32726
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
32727
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code == item.code);
|
|
32728
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
32729
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
32730
|
+
}
|
|
32731
|
+
}
|
|
32732
|
+
}
|
|
32733
|
+
}
|
|
32734
|
+
logout() {
|
|
32735
|
+
this._authenService.logout();
|
|
32736
|
+
}
|
|
32737
|
+
goToPersonal() {
|
|
32738
|
+
const userMenu = this.environment.appMetadata.appSwitcher.find(x => x.code == 'USER');
|
|
32739
|
+
this.switchApp(userMenu);
|
|
32740
|
+
}
|
|
32741
|
+
getCurrentUserAvatar() {
|
|
32742
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
32743
|
+
return `${this.fileApi}/file/public/${this.rootContext.data.currentUser.avatar}/Download`;
|
|
32744
|
+
}
|
|
32745
|
+
else {
|
|
32746
|
+
return this.defaultAvatar;
|
|
32747
|
+
}
|
|
32748
|
+
}
|
|
32749
|
+
getNgayTrongTuan() {
|
|
32750
|
+
return this.daysInWeek[this.currentDate.getDay()];
|
|
32751
|
+
}
|
|
32752
|
+
showProfilePage() {
|
|
32753
|
+
if (this._userService.isSinhVienAccount()) {
|
|
32754
|
+
return false;
|
|
32755
|
+
}
|
|
32756
|
+
return true;
|
|
32757
|
+
}
|
|
32758
|
+
ngOnDestroy() {
|
|
32759
|
+
super.ngOnDestroy();
|
|
32760
|
+
this._globalService.setHeaderState(true);
|
|
32761
|
+
this._globalService.setMenuState(true);
|
|
32762
|
+
}
|
|
32763
|
+
login() {
|
|
32764
|
+
this.rootContext.fireEvent('LOGIN');
|
|
32765
|
+
}
|
|
32766
|
+
}
|
|
32767
|
+
SplashComponentV2Component.decorators = [
|
|
32768
|
+
{ type: Component, args: [{
|
|
32769
|
+
selector: 'splash-component-v2',
|
|
32770
|
+
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v2\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <div class=\"tn-full-name\">{{currentUser.fullName}}</div>\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signout\" title=\"\u0110\u0103ng xu\u1EA5t\" (click)=\"logout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n [alt]=\"environment.appMetadata.main.owner\">\r\n <div class=\"title\">\r\n <h2>{{environment.appMetadata.main.title}}</h2>\r\n <h1>{{environment.appMetadata.main.owner}}</h1>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signin\" title=\"\u0110\u0103ng nh\u1EADp\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\u0110\u0103ng nh\u1EADp\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
|
|
32771
|
+
providers: [ComponentContextService],
|
|
32772
|
+
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v2{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v2 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dfd1d1;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v2 div>span>a{border-radius:5px;cursor:pointer;font-weight:700;height:100%;position:relative}.modules-v2 div>span>a,.modules-v2 div>span>a>span{color:#fff;display:inline-block;text-align:center;text-decoration:unset;width:100%}.modules-v2 div>span>a>span{bottom:10px;left:0;position:absolute}.modules-v2 div>span.implementing{background-color:#fff;box-shadow:none}.modules-v2 div>span>a>i{font-size:3.5em;left:0;position:absolute;top:20px;width:100%}.modules-v2 .module-icons{background:hsla(0,0%,100%,.9490196078431372);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#666;display:flex;flex-direction:column;justify-content:center;padding:30px;text-align:center}.modules-v2 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v2 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v2 .module-icons .img-title{margin-bottom:80px}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:30px}.modules-v2 .module-icons .img-title a.tn-icon-signin{align-items:center;background:#002c6c;border-radius:5px;color:#fff;cursor:pointer;display:inline-flex;justify-content:center;padding:10px}.modules-v2 .module-icons .img-title a.tn-icon-signin i{margin-right:5px}.modules-v2 .module-icons .div1111-wrapper{margin:0 auto 80px}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#2f70ac;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover{background:#002c6c;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover span{color:#fff}.modules-v2 .module-icons .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v2 .module-icons .clock-wrapper h4{color:#2f70ac;font-size:20px;font-weight:500;margin-bottom:0;margin-top:10px}.modules-v2 .module-icons .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v2 .welcome-user{background:hsla(0,0%,100%,.9019607843137255);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#333;display:flex;padding:10px;position:absolute;right:20px;text-align:center;top:20px}.modules-v2 .welcome-user .wrp-login{align-items:center;color:#333;display:flex;flex-direction:column;margin:auto}.modules-v2 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v2 .profile-image{align-items:center;display:flex;justify-content:center}.modules-v2 .profile-image .tn-full-name{font-size:18px;margin-right:10px}.modules-v2 .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;height:40px;margin-right:10px;object-fit:contain;width:40px}.modules-v2 .profile-image .login{display:-ms-grid;display:grid;grid-gap:10px}.modules-v2 .profile-image .login a.tn-icon-signout{align-items:center;background:#002c6c;border-radius:50%;cursor:pointer;display:flex;height:40px;justify-content:center;width:40px}.modules-v2 .profile-image .login a.tn-icon-signout i{color:#edc16f;font-size:16px}@media (max-width:1368px){.modules-v2 .clock{font-size:1.5em;margin:0 20px}.modules-v2 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1200px){.modules-v2 .welcome-user{right:10px;top:10px}}@media (max-width:768px){.modules-v2 .module-icons .img-title .title h2{font-size:28px}.modules-v2 .module-icons .img-title .title h1{font-size:32px}}@media (max-width:640px){.modules-v2 .welcome-user{justify-content:flex-end;right:10px;top:10px;width:calc(100% - 20px)}.modules-v2 .module-icons{margin:10px;padding:20px}.modules-v2 .module-icons .img-title{margin-bottom:40px}.modules-v2 .module-icons .img-title img.tn-custom-logo{width:150px}.modules-v2 .module-icons .img-title .title h1{font-size:19px}.modules-v2 .module-icons .img-title .title h2{font-size:16px;margin-bottom:10px;margin-top:0}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:50px}.modules-v2 .module-icons .div1111-wrapper .div1111{-ms-grid-columns:(minmax(100px,1fr))[3];display:-ms-grid;display:grid;grid-template-columns:repeat(3,minmax(100px,1fr))}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v2 .module-icons div>span{height:100px;width:100px}.modules-v2 .module-icons div>span>a>i{font-size:3em;top:15px}.modules-v2 .module-icons .clock-wrapper h4{font-size:16px;margin-top:5px}.modules-v2 .module-icons .clock-wrapper h1{font-size:30px}}@media (max-width:375px){.modules-v2 .module-icons .img-title{margin-bottom:0}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:10px;width:100px}.modules-v2 .module-icons .img-title .title{padding:0}.modules-v2 .module-icons .img-title .title h2{font-size:14px;margin-bottom:10px}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:0}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;justify-content:center}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
32773
|
+
},] }
|
|
32774
|
+
];
|
|
32775
|
+
SplashComponentV2Component.ctorParameters = () => [
|
|
32776
|
+
{ type: Injector },
|
|
32777
|
+
{ type: ModuleConfigService },
|
|
32778
|
+
{ type: PermissionService },
|
|
32779
|
+
{ type: DeviceDetectorService },
|
|
32780
|
+
{ type: UserService },
|
|
32781
|
+
{ type: Router },
|
|
32782
|
+
{ type: AuthenService },
|
|
32783
|
+
{ type: GlobalService }
|
|
32784
|
+
];
|
|
32785
|
+
|
|
32201
32786
|
class DynamicNodeComponent extends ComponentBase {
|
|
32202
32787
|
constructor(injector) {
|
|
32203
32788
|
super(injector);
|
|
@@ -35132,7 +35717,7 @@ TnTabViewComponent.decorators = [
|
|
|
35132
35717
|
{ type: Component, args: [{
|
|
35133
35718
|
selector: 'tn-tabview',
|
|
35134
35719
|
template: "<div style=\"height: 100%\">\r\n <p-tabView #tab orientation=\"top\" [styleClass]=\"styleClass\"\r\n [activeIndex]=\"currentTabIndex\" (onChange)=\"handleTabChange($event)\">\r\n <ng-container *ngFor=\"let item of data; let i = index\">\r\n <p-tabPanel [leftIcon]=\"item.icon\" [header]=\"item.label\">\r\n <ng-container *ngIf=\"allowViewAll || currentTabIndex == i\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </ng-container>\r\n </p-tabPanel>\r\n </ng-container>\r\n </p-tabView>\r\n</div>",
|
|
35135
|
-
styles: [".accordion-link{flex:1 1;text-align:right}.accordion-link ul{list-style:none;margin-bottom:0;margin-top:0;padding-left:0}.accordion-link ul li{background-color:#a4a5a4;border-radius:4px;color:#fff;display:inline-block;line-height:20px;margin-bottom:.5rem;margin-left:.5rem;padding:6px 12px;transition:all .3s ease-out}.accordion-link ul li:hover{background-color:#3db762;cursor:pointer}.accordion-link ul li.tab-active{background-color:#23a349}.tn-l-toolbar{display:flex;padding:.5rem .5rem 0}.hoso-container{height:auto;max-height:none}.tab-number{align-items:center;background:#a4a5a4;border-radius:2px;color:#fff;display:inline-flex;font-size:.9em;height:20px;justify-content:center;margin-right:.5rem;padding-top:2px;width:20px}.tab-number.active{background:#23a349}::ng-deep tn-accordion-tab{display:flex;flex-direction:column;height:100%}::ng-deep tn-accordion-tab .p-accordion-header{position:sticky;top:1px;z-index:6}::ng-deep tn-accordion-tab .tn-l-p-accordion-wrapper{border-radius:4px;display:flex;flex:1;margin-left:.5rem;margin-right:.5rem;overflow:auto}::ng-deep tn-accordion-tab .tn-l-p-accordion-wrapper tn-custom-scrollbar{width:100%}::ng-deep tn-accordion-tab .ps__rail-x,::ng-deep tn-accordion-tab .ps__rail-y{z-index:7}::ng-deep tn-accordion-tab .tn-l-toolbar .toolbar{flex:0 0 auto;padding-top:0}@media (max-width:640px){.accordion-link,.toolbar{overflow-x:auto;white-space:nowrap}.tn-l-custom-wrapper{display:block}.accordion-link ul{margin-top:0}.tn-l-toolbar{display:block}}"]
|
|
35720
|
+
styles: [".accordion-link{flex:1 1;text-align:right}.accordion-link ul{list-style:none;margin-bottom:0;margin-top:0;padding-left:0}.accordion-link ul li{background-color:#a4a5a4;border-radius:4px;color:#fff;display:inline-block;line-height:20px;margin-bottom:.5rem;margin-left:.5rem;padding:6px 12px;transition:all .3s ease-out}.accordion-link ul li:hover{background-color:#3db762;cursor:pointer}.accordion-link ul li.tab-active{background-color:#23a349}.tn-l-toolbar{display:flex;padding:.5rem .5rem 0}.hoso-container{height:auto;max-height:none}.tab-number{align-items:center;background:#a4a5a4;border-radius:2px;color:#fff;display:inline-flex;font-size:.9em;height:20px;justify-content:center;margin-right:.5rem;padding-top:2px;width:20px}.tab-number.active{background:#23a349}::ng-deep tn-accordion-tab{display:flex;flex-direction:column;height:100%}::ng-deep tn-accordion-tab .p-accordion-header{position:-webkit-sticky;position:sticky;top:1px;z-index:6}::ng-deep tn-accordion-tab .tn-l-p-accordion-wrapper{border-radius:4px;display:flex;flex:1;margin-left:.5rem;margin-right:.5rem;overflow:auto}::ng-deep tn-accordion-tab .tn-l-p-accordion-wrapper tn-custom-scrollbar{width:100%}::ng-deep tn-accordion-tab .ps__rail-x,::ng-deep tn-accordion-tab .ps__rail-y{z-index:7}::ng-deep tn-accordion-tab .tn-l-toolbar .toolbar{flex:0 0 auto;padding-top:0}@media (max-width:640px){.accordion-link,.toolbar{overflow-x:auto;white-space:nowrap}.tn-l-custom-wrapper{display:block}.accordion-link ul{margin-top:0}.tn-l-toolbar{display:block}}"]
|
|
35136
35721
|
},] }
|
|
35137
35722
|
];
|
|
35138
35723
|
TnTabViewComponent.ctorParameters = () => [
|
|
@@ -35715,7 +36300,7 @@ UserPickerBoxComponent.decorators = [
|
|
|
35715
36300
|
selector: 'user-picker-box',
|
|
35716
36301
|
template: "<div class=\"p-grid p-m-0 tn-l-user-picker-box\">\r\n <div class=\"p-col-12 p-md-3 tn-l-left-sidebar-wrapper\">\r\n <tn-custom-scrollbar>\r\n <p-tree [style]=\"{'width': '100%'}\" styleClass=\"tn-tree-beauty tree-organization-picker\"\r\n [value]=\"rootTreeNode\" filterPlaceholder=\"T\u00ECm ph\u00F2ng ban\" selectionMode=\"single\" [filter]=\"true\"\r\n [(selection)]=\"selectedTreeNode\" (onNodeExpand)=\"onNodeExpand($event)\"\r\n (onNodeSelect)=\"nodeSelect($event)\" [emptyMessage]=\"'Kh\u00F4ng t\u00ECm th\u1EA5y k\u1EBFt qu\u1EA3'\">\r\n <ng-template let-node pTemplate=\"default\">\r\n <span id=\"{{node.data}}\" class=\"custom-node\">{{node.label}}</span>\r\n </ng-template>\r\n </p-tree>\r\n </tn-custom-scrollbar>\r\n </div>\r\n <div class=\"p-col-12 p-md-9 tn-l-right-content-wrapper\">\r\n <entity-picker-box #entityPickerBox [control]=\"control\" [parentSetting]=\"parentSetting\"\r\n [advanceData]=\"advanceData\" [selectedValue]=\"selectedValue\" (onChanged)=\"handleChangedEntity($event)\"\r\n (onSelect)=\"handleSelectEntity($event)\" (onUnSelect)=\"handleUnSelectEntity($event)\"\r\n (onDone)=\"handleDone($event)\" (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n </div>\r\n</div>\r\n<ng-template #buttonTemplate>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'Ch\u1ECDn'\"\r\n (click)=\"handleSelect($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"handleCancelDialog($event)\"></button>\r\n</ng-template>\r\n",
|
|
35717
36302
|
providers: [ComponentContextService],
|
|
35718
|
-
styles: [".action-btn{background-color:#fff;border:1px solid #0a89bf;color:#0a89bf;cursor:pointer;font-size:16px;margin:4px 2px;text-align:center;width:40px}.content-all{display:flex;flex-direction:column}.content-top{flex-grow:1}.content-bottom,.content-top{overflow:hidden;padding:5px 0}.content-bottom{border-top:1px solid #ddd;flex:0 0 50%}.tn-l-button-group{padding-bottom:1em}.tn-l-button-group-picker{background:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);z-index:10}.tn-l-user-picker-box{height:100%}.tn-l-left-sidebar-wrapper{border-right:1px solid #aaa;height:100%}.tn-l-left-sidebar-area{height:100%}.tn-l-right-content-wrapper{height:100%;padding-bottom:0;padding-top:0}@media (max-width:640px){.entityPicker{height:auto}.tn-l-search-button-group{padding-bottom:1em}.tn-l-button-group-picker{left:auto;padding-bottom:5px;position:static;top:auto;transform:none}.tn-l-left-sidebar-wrapper{border-bottom:1px solid #aaa;border-right:unset;height:calc(100vh - 300px)}}::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:hidden;padding:0}::ng-deep .user-picker-box-dialog .p-tree{border:none;padding:0}::ng-deep .user-picker-box-dialog .p-tree-wrapper{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container{background-color:#fff;margin-bottom:0;padding:.5em;position:sticky;top:0;z-index:4}::ng-deep .user-picker-box-dialog .p-tree-empty-message{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container .p-tree-filter-icon{right:1em}::ng-deep .user-picker-box-dialog .ps__rail-y{z-index:10}@media (max-width:640px){::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:auto}::ng-deep .user-picker-box-dialog .tn-dialog-scrollbar>div{min-height:100%!important}::ng-deep .user-picker-box-dialog .tn-l-right-content-wrapper{padding:0}}"]
|
|
36303
|
+
styles: [".action-btn{background-color:#fff;border:1px solid #0a89bf;color:#0a89bf;cursor:pointer;font-size:16px;margin:4px 2px;text-align:center;width:40px}.content-all{display:flex;flex-direction:column}.content-top{flex-grow:1}.content-bottom,.content-top{overflow:hidden;padding:5px 0}.content-bottom{border-top:1px solid #ddd;flex:0 0 50%}.tn-l-button-group{padding-bottom:1em}.tn-l-button-group-picker{background:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);z-index:10}.tn-l-user-picker-box{height:100%}.tn-l-left-sidebar-wrapper{border-right:1px solid #aaa;height:100%}.tn-l-left-sidebar-area{height:100%}.tn-l-right-content-wrapper{height:100%;padding-bottom:0;padding-top:0}@media (max-width:640px){.entityPicker{height:auto}.tn-l-search-button-group{padding-bottom:1em}.tn-l-button-group-picker{left:auto;padding-bottom:5px;position:static;top:auto;transform:none}.tn-l-left-sidebar-wrapper{border-bottom:1px solid #aaa;border-right:unset;height:calc(100vh - 300px)}}::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:hidden;padding:0}::ng-deep .user-picker-box-dialog .p-tree{border:none;padding:0}::ng-deep .user-picker-box-dialog .p-tree-wrapper{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container{background-color:#fff;margin-bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;top:0;z-index:4}::ng-deep .user-picker-box-dialog .p-tree-empty-message{padding:.5rem}::ng-deep .user-picker-box-dialog .p-tree .p-tree-filter-container .p-tree-filter-icon{right:1em}::ng-deep .user-picker-box-dialog .ps__rail-y{z-index:10}@media (max-width:640px){::ng-deep .user-picker-box-dialog .p-dialog-content{overflow:auto}::ng-deep .user-picker-box-dialog .tn-dialog-scrollbar>div{min-height:100%!important}::ng-deep .user-picker-box-dialog .tn-l-right-content-wrapper{padding:0}}"]
|
|
35719
36304
|
},] }
|
|
35720
36305
|
];
|
|
35721
36306
|
UserPickerBoxComponent.ctorParameters = () => [
|
|
@@ -38117,7 +38702,7 @@ WorkflowPickerComponent.decorators = [
|
|
|
38117
38702
|
selector: 'workflow-picker',
|
|
38118
38703
|
template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #designer>\r\n <div *ngFor=\"let wfCode of model.data._workflowCodes\">\r\n <div class=\"title-workflow\">\r\n Quy tr\u00ECnh {{dicMachinesData[wfCode].ten}} ({{wfCode}})\r\n <span *ngIf=\"wfCode == model.data.workflowCode\" class=\"pi pi-star\" pTooltip=\"\u0110\u00E2y l\u00E0 quy tr\u00ECnh ch\u00EDnh\"\r\n tooltipPosition=\"top\"></span>\r\n </div>\r\n <statemachines-designer #designer [data]=\"dicMachinesData[wfCode]\" [viewOnly]=\"true\">\r\n </statemachines-designer>\r\n </div>\r\n </ng-template>\r\n</crud-form>\r\n<div *ngIf=\"showButtonSave\" class=\"container-button-workflow\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'L\u01B0u c\u1EA5u h\u00ECnh' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n</div>",
|
|
38119
38704
|
providers: [ComponentContextService],
|
|
38120
|
-
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:sticky;text-align:right;z-index:10}"]
|
|
38705
|
+
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
|
|
38121
38706
|
},] }
|
|
38122
38707
|
];
|
|
38123
38708
|
WorkflowPickerComponent.ctorParameters = () => [
|
|
@@ -38316,7 +38901,7 @@ WorkflowSettingNewComponent.decorators = [
|
|
|
38316
38901
|
selector: 'workflow-setting-new',
|
|
38317
38902
|
template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #workflowPicker>\r\n <workflow-picker [data]=\"model.data\"></workflow-picker>\r\n </ng-template>\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <div class=\"footer-workflow-setting\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button *ngIf=\"model.data.id\" type=\"button\" pButton icon=\"pi pi-trash\" class=\"p-button-danger p-button-text\"\r\n [label]=\"'H\u1EE7y quy tr\u00ECnh' | translate\" (click)=\"handleCancelWorkflow($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n </div>\r\n</ng-template>",
|
|
38318
38903
|
providers: [ComponentContextService],
|
|
38319
|
-
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:sticky;text-align:right;z-index:10}"]
|
|
38904
|
+
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
|
|
38320
38905
|
},] }
|
|
38321
38906
|
];
|
|
38322
38907
|
WorkflowSettingNewComponent.ctorParameters = () => [
|
|
@@ -39593,6 +40178,7 @@ function coreDeclaration() {
|
|
|
39593
40178
|
AppRootMenuComponent,
|
|
39594
40179
|
AppTopBarComponent,
|
|
39595
40180
|
AppTopBarV1Component,
|
|
40181
|
+
AppTopBarV2Component,
|
|
39596
40182
|
AppProfileComponent,
|
|
39597
40183
|
AppMenuComponent,
|
|
39598
40184
|
AppSubMenuComponent,
|
|
@@ -39635,6 +40221,7 @@ function coreDeclaration() {
|
|
|
39635
40221
|
ProcessWorkflowTargetComponent,
|
|
39636
40222
|
SplashComponentComponent,
|
|
39637
40223
|
SplashComponentV1Component,
|
|
40224
|
+
SplashComponentV2Component,
|
|
39638
40225
|
StateComponent,
|
|
39639
40226
|
StateMetadataComponent,
|
|
39640
40227
|
StateMachinesConnectionMetadataComponent,
|
|
@@ -41459,5 +42046,5 @@ DynamicComponentService.ctorParameters = () => [
|
|
|
41459
42046
|
* Generated bundle index. Do not edit.
|
|
41460
42047
|
*/
|
|
41461
42048
|
|
|
41462
|
-
export { AccessDeniedComponent, Action, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CellExcel, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorControlSchema, ColorPickerControlSchema, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecPickerControlSchema, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCoreCodeSettingKey, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineIsWorkflowControl, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, ImageService, KeyFieldGetRefType, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotFoundComponent, NotificationObjectType, NotificationService, NotifierService, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TableSchema, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnUser, TnxSharedModule, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupService, UserPickerControlSchema, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0, ɵ1, ɵ10, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AddressComponent as ɵa, DropdownService as ɵb, DM_ChucVuService as ɵba, RoleService as ɵbb, EntityPermissionService as ɵbc, EquationEditorComponent as ɵbd, MaskComponent as ɵbe, NumberPickerRangeComponent as ɵbf, PagingNextBackOnlyComponent as ɵbg, RadioButtonListComponent as ɵbh, VanBanPickerComponent as ɵbi, VanBanDenService as ɵbj, VanBanDiService as ɵbk, VanBanPickerDialogComponent as ɵbl, VanbanDiPickerComponent as ɵbm, VanbanDenPickerComponent as ɵbn, CongViecPickerComponent as ɵbo, CongViecService as ɵbp, TaskWorkflowHistoriesService as ɵbq, SettingsComponent as ɵbr, SettingsRowComponent as ɵbs, SettingsWorkflowComponent as ɵbt, SettingsWorkflowNo1Component as ɵbu, SimpleWorkflowFormComponent as ɵbv, ProcessWorkflowFormComponent as ɵbw, WorkflowHistoryService as ɵbx, ProcessWorkflowTargetComponent as ɵby, SplashComponentV1Component as ɵbz, EntityPickerService as ɵc, StateMachinesConnectionReceiverComponent as ɵca, StateMachinesConnectionReceiverUserComponent as ɵcb, StateMachinesConnectionReceiverDepartmentComponent as ɵcc, StateMachinesConnectionReceiverGroupComponent as ɵcd, StateMachinesConnectionReceiverRoleComponent as ɵce, StateMachinesConnectionSenderComponent as ɵcf, StartWorkflowComponent as ɵcg, WorkflowSettingsService as ɵch, WorkflowSettingNewComponent as ɵci, DmLoaiCongViecService as ɵcj, TnDialogComponent as ɵck, TnColorPickerComponent as ɵcl, TnTinymceComponent as ɵcm, TnTabViewComponent as ɵcn, TableDetailFormComponent as ɵco, FileIconPipe as ɵcp, FileSizePipe as ɵcq, QuickAddFormComponent as ɵcr, PreventShiftTabDirective as ɵcs, UserPickerComponent as ɵct, UserPickerBoxComponent as ɵcu, TnAppHelpComponent as ɵcv, PathNameService as ɵcw, HelperCurrentPageComponent as ɵcx, TnAppNotificationListComponent as ɵcy, TnAppNotificationComponent as ɵcz, ExceptionHandlerService as ɵd, MyDriveService as ɵda, FileVersionService as ɵdb, FileExplorerNewService as ɵdc, FolderFormComponent as ɵdd, FileFormComponent as ɵde, FileViewerComponent as ɵdf, FileVersionListComponent as ɵdg, WorkflowHistoryComponent as ɵdh, EntityWorkflowHistoryService as ɵdi, WorkflowHistoryDialogComponent as ɵdj, WorkflowHistoryNewComponent as ɵdk, WorkflowSettingComponent as ɵdl, EntityWorkflowSettingService as ɵdm, WorkflowSettingDialogComponent as ɵdn, QrCodeGeneratorComponent as ɵdo, AccessDeniedV1Component as ɵdp, AddNewsComponent as ɵdq, ArticleService as ɵdr, NewsCategoryService as ɵds, CheckReadyComponent as ɵdt, SendAccessTokenInterceptor as ɵdu, LogInterceptor as ɵdv, PermissionUtilsInterceptor as ɵdw, CanBo_HoSoService as ɵe, AfterViewCheckedComponent as ɵf, AdvanceSearchComponent as ɵg, AppRootMenuComponent as ɵh, AppTopBarComponent as ɵi, AppTopBarV1Component as ɵj, AppProfileComponent as ɵk, AppSubMenuComponent as ɵl, AppMenuComponent as ɵm, AutoCompletePickerComponent as ɵn, CheckBoxListComponent as ɵo, ReportQueueComponent as ɵp, CoCauToChucPickerListComponent as ɵq, DatetimePickerComponent as ɵr, DatetimePickerRangeComponent as ɵs, DynamicNodeComponent as ɵt, EntityPickerBoxComponent as ɵu, EntityPickerDataComponent as ɵv, EntityPickerSelectedComponent as ɵw, EntityPickerComponent as ɵx, EntityPickerDialogComponent as ɵy, EntityPermissionComponent as ɵz };
|
|
42049
|
+
export { AccessDeniedComponent, Action, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CellExcel, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorControlSchema, ColorPickerControlSchema, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecPickerControlSchema, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCoreCodeSettingKey, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineIsWorkflowControl, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, ImageService, KeyFieldGetRefType, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotFoundComponent, NotificationObjectType, NotificationService, NotifierService, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TableSchema, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnUser, TnxSharedModule, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupService, UserPickerControlSchema, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0, ɵ1, ɵ10, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AddressComponent as ɵa, DropdownService as ɵb, EntityPermissionComponent as ɵba, DM_ChucVuService as ɵbb, RoleService as ɵbc, EntityPermissionService as ɵbd, EquationEditorComponent as ɵbe, MaskComponent as ɵbf, NumberPickerRangeComponent as ɵbg, PagingNextBackOnlyComponent as ɵbh, RadioButtonListComponent as ɵbi, VanBanPickerComponent as ɵbj, VanBanDenService as ɵbk, VanBanDiService as ɵbl, VanBanPickerDialogComponent as ɵbm, VanbanDiPickerComponent as ɵbn, VanbanDenPickerComponent as ɵbo, CongViecPickerComponent as ɵbp, CongViecService as ɵbq, TaskWorkflowHistoriesService as ɵbr, SettingsComponent as ɵbs, SettingsRowComponent as ɵbt, SettingsWorkflowComponent as ɵbu, SettingsWorkflowNo1Component as ɵbv, SimpleWorkflowFormComponent as ɵbw, ProcessWorkflowFormComponent as ɵbx, WorkflowHistoryService as ɵby, ProcessWorkflowTargetComponent as ɵbz, EntityPickerService as ɵc, SplashComponentV1Component as ɵca, SplashComponentV2Component as ɵcb, StateMachinesConnectionReceiverComponent as ɵcc, StateMachinesConnectionReceiverUserComponent as ɵcd, StateMachinesConnectionReceiverDepartmentComponent as ɵce, StateMachinesConnectionReceiverGroupComponent as ɵcf, StateMachinesConnectionReceiverRoleComponent as ɵcg, StateMachinesConnectionSenderComponent as ɵch, StartWorkflowComponent as ɵci, WorkflowSettingsService as ɵcj, WorkflowSettingNewComponent as ɵck, DmLoaiCongViecService as ɵcl, TnDialogComponent as ɵcm, TnColorPickerComponent as ɵcn, TnTinymceComponent as ɵco, TnTabViewComponent as ɵcp, TableDetailFormComponent as ɵcq, FileIconPipe as ɵcr, FileSizePipe as ɵcs, QuickAddFormComponent as ɵct, PreventShiftTabDirective as ɵcu, UserPickerComponent as ɵcv, UserPickerBoxComponent as ɵcw, TnAppHelpComponent as ɵcx, PathNameService as ɵcy, HelperCurrentPageComponent as ɵcz, ExceptionHandlerService as ɵd, TnAppNotificationListComponent as ɵda, TnAppNotificationComponent as ɵdb, MyDriveService as ɵdc, FileVersionService as ɵdd, FileExplorerNewService as ɵde, FolderFormComponent as ɵdf, FileFormComponent as ɵdg, FileViewerComponent as ɵdh, FileVersionListComponent as ɵdi, WorkflowHistoryComponent as ɵdj, EntityWorkflowHistoryService as ɵdk, WorkflowHistoryDialogComponent as ɵdl, WorkflowHistoryNewComponent as ɵdm, WorkflowSettingComponent as ɵdn, EntityWorkflowSettingService as ɵdo, WorkflowSettingDialogComponent as ɵdp, QrCodeGeneratorComponent as ɵdq, AccessDeniedV1Component as ɵdr, AddNewsComponent as ɵds, ArticleService as ɵdt, NewsCategoryService as ɵdu, CheckReadyComponent as ɵdv, SendAccessTokenInterceptor as ɵdw, LogInterceptor as ɵdx, PermissionUtilsInterceptor as ɵdy, CanBo_HoSoService as ɵe, AfterViewCheckedComponent as ɵf, AdvanceSearchComponent as ɵg, AppRootMenuComponent as ɵh, AppTopBarComponent as ɵi, AppTopBarV1Component as ɵj, AppTopBarV2Component as ɵk, AppProfileComponent as ɵl, AppSubMenuComponent as ɵm, AppMenuComponent as ɵn, AutoCompletePickerComponent as ɵo, CheckBoxListComponent as ɵp, ReportQueueComponent as ɵq, CoCauToChucPickerListComponent as ɵr, DatetimePickerComponent as ɵs, DatetimePickerRangeComponent as ɵt, DynamicNodeComponent as ɵu, EntityPickerBoxComponent as ɵv, EntityPickerDataComponent as ɵw, EntityPickerSelectedComponent as ɵx, EntityPickerComponent as ɵy, EntityPickerDialogComponent as ɵz };
|
|
41463
42050
|
//# sourceMappingURL=tnx-shared.js.map
|