tnx-shared 5.1.295 → 5.1.296
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +621 -665
- 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/base/data-form-base.d.ts.map +1 -1
- package/classes/base/list-base.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/access-denied-component/access-denied.component.d.ts +1 -1
- package/components/access-denied-component/access-denied.component.d.ts.map +1 -1
- package/components/common-app-component/app.topbar.component.d.ts +1 -1
- package/components/common-app-component/app.topbar.component.d.ts.map +1 -1
- package/components/common-app-component/common-app-component.d.ts +0 -3
- package/components/common-app-component/common-app-component.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/components/not-found/not-found.component.d.ts +1 -1
- package/components/not-found/not-found.component.d.ts.map +1 -1
- package/components/splash-component/splash-component.component.d.ts +5 -1
- package/components/splash-component/splash-component.component.d.ts.map +1 -1
- package/components/tn-app-notification/tn-app-notification.component.d.ts.map +1 -1
- package/enums/common.d.ts +0 -5
- package/enums/common.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +2 -1
- package/esm2015/classes/base/list-base.js +4 -1
- package/esm2015/components/access-denied-component/access-denied.component.js +2 -2
- package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
- package/esm2015/components/common-app-component/app.topbar.component.js +2 -2
- package/esm2015/components/common-app-component/common-app-component.js +2 -11
- package/esm2015/components/crud/advance-search/advance-search.component.js +1 -1
- package/esm2015/components/not-found/not-found.component.js +2 -2
- package/esm2015/components/query-builders/query-builder/query-builder.component.js +1 -1
- package/esm2015/components/splash-component/splash-component.component.js +7 -2
- package/esm2015/components/tn-app-notification/tn-app-notification.component.js +5 -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/enums/common.js +1 -7
- package/esm2015/public-api.js +1 -2
- package/esm2015/services/permission.service.js +5 -3
- package/esm2015/tnx-shared.module.js +2 -4
- package/fesm2015/tnx-shared.js +513 -533
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +0 -1
- package/public-api.d.ts.map +1 -1
- package/services/permission.service.d.ts +2 -2
- package/services/permission.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +1 -1
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
- package/components/common-app-component/loading-page-v1/loading-page-v1.component.d.ts +0 -7
- package/components/common-app-component/loading-page-v1/loading-page-v1.component.d.ts.map +0 -1
- package/components/common-app-component/loading-page-v1/loading-page-v1.component.ngfactory.d.ts.map +0 -1
- package/components/common-app-component/loading-page-v1/loading-page-v1.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/esm2015/components/common-app-component/loading-page-v1/loading-page-v1.component.js +0 -20
|
@@ -4629,12 +4629,7 @@
|
|
|
4629
4629
|
PermissionBase[PermissionBase["DELETE"] = 4] = "DELETE";
|
|
4630
4630
|
PermissionBase[PermissionBase["FULL"] = 7] = "FULL";
|
|
4631
4631
|
})(exports.PermissionBase || (exports.PermissionBase = {}));
|
|
4632
|
-
var FieldOrderCrudList = '_index';
|
|
4633
|
-
(function (EnumTypeSplash) {
|
|
4634
|
-
EnumTypeSplash["DEFAULT"] = "Default";
|
|
4635
|
-
EnumTypeSplash["NEW_V1"] = "v1";
|
|
4636
|
-
EnumTypeSplash["NEW_V2"] = "v2";
|
|
4637
|
-
})(exports.EnumTypeSplash || (exports.EnumTypeSplash = {}));
|
|
4632
|
+
var FieldOrderCrudList = '_index';
|
|
4638
4633
|
|
|
4639
4634
|
var ExportItem = /** @class */ (function () {
|
|
4640
4635
|
function ExportItem(init) {
|
|
@@ -10194,6 +10189,604 @@
|
|
|
10194
10189
|
{ type: AuthenService }
|
|
10195
10190
|
]; };
|
|
10196
10191
|
|
|
10192
|
+
var GlobalService = /** @class */ (function () {
|
|
10193
|
+
function GlobalService() {
|
|
10194
|
+
this._state = true;
|
|
10195
|
+
this._headerState = true;
|
|
10196
|
+
this._menuState = true;
|
|
10197
|
+
this._advanceSearchState = false;
|
|
10198
|
+
this._advanceSearch = new rxjs.Subject();
|
|
10199
|
+
this._hasAdvanceFilter = new rxjs.Subject();
|
|
10200
|
+
this._searchKeyWithoutAdvance = new rxjs.Subject();
|
|
10201
|
+
}
|
|
10202
|
+
GlobalService.prototype.setSearchKeyWithoutAdvance = function (key) {
|
|
10203
|
+
this._searchKeyWithoutAdvance.next(key);
|
|
10204
|
+
};
|
|
10205
|
+
GlobalService.prototype.getSearchKeyWithoutAdvance = function () {
|
|
10206
|
+
return this._searchKeyWithoutAdvance;
|
|
10207
|
+
};
|
|
10208
|
+
GlobalService.prototype.setSearchBoxState = function (state) {
|
|
10209
|
+
this._state = state;
|
|
10210
|
+
};
|
|
10211
|
+
GlobalService.prototype.getSearchBoxState = function () {
|
|
10212
|
+
return this._state;
|
|
10213
|
+
};
|
|
10214
|
+
GlobalService.prototype.setHeaderState = function (state) {
|
|
10215
|
+
this._headerState = state;
|
|
10216
|
+
};
|
|
10217
|
+
GlobalService.prototype.getHeaderState = function () {
|
|
10218
|
+
return this._headerState;
|
|
10219
|
+
};
|
|
10220
|
+
GlobalService.prototype.setMenuState = function (state) {
|
|
10221
|
+
this._menuState = state;
|
|
10222
|
+
};
|
|
10223
|
+
GlobalService.prototype.getMenuState = function () {
|
|
10224
|
+
return this._menuState;
|
|
10225
|
+
};
|
|
10226
|
+
GlobalService.prototype.setAdvanceSearchStateWithoutFireEvent = function (state) {
|
|
10227
|
+
this._advanceSearchState = state;
|
|
10228
|
+
};
|
|
10229
|
+
GlobalService.prototype.toggleAdvanceSearchState = function (evt) {
|
|
10230
|
+
this._advanceSearchState = !this._advanceSearchState;
|
|
10231
|
+
this._advanceSearch.next({ state: this._advanceSearchState, event: evt });
|
|
10232
|
+
};
|
|
10233
|
+
GlobalService.prototype.getAdvanceSearch = function () {
|
|
10234
|
+
return this._advanceSearch;
|
|
10235
|
+
};
|
|
10236
|
+
GlobalService.prototype.setAdvanceFilter = function (state) {
|
|
10237
|
+
this._hasAdvanceFilter.next({ type: 'hasAdvanceFilter', state: state });
|
|
10238
|
+
};
|
|
10239
|
+
GlobalService.prototype.setAdvanceFilterBox = function (state) {
|
|
10240
|
+
this._hasAdvanceFilter.next({ type: 'hasAdvanceFilterBox', state: state });
|
|
10241
|
+
};
|
|
10242
|
+
GlobalService.prototype.advanceFilterEvent = function () {
|
|
10243
|
+
return this._hasAdvanceFilter;
|
|
10244
|
+
};
|
|
10245
|
+
return GlobalService;
|
|
10246
|
+
}());
|
|
10247
|
+
GlobalService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GlobalService_Factory() { return new GlobalService(); }, token: GlobalService, providedIn: "root" });
|
|
10248
|
+
GlobalService.decorators = [
|
|
10249
|
+
{ type: i0.Injectable, args: [{
|
|
10250
|
+
providedIn: 'root'
|
|
10251
|
+
},] }
|
|
10252
|
+
];
|
|
10253
|
+
GlobalService.ctorParameters = function () { return []; };
|
|
10254
|
+
|
|
10255
|
+
var PhanQuyenModel = /** @class */ (function () {
|
|
10256
|
+
function PhanQuyenModel(init) {
|
|
10257
|
+
this.addRoleIds = [];
|
|
10258
|
+
this.removeRoleIds = [];
|
|
10259
|
+
this.addPermissionIds = [];
|
|
10260
|
+
this.removePermissionIds = [];
|
|
10261
|
+
for (var key in init) {
|
|
10262
|
+
this[key] = init[key];
|
|
10263
|
+
}
|
|
10264
|
+
}
|
|
10265
|
+
return PhanQuyenModel;
|
|
10266
|
+
}());
|
|
10267
|
+
var PermissionService = /** @class */ (function (_super) {
|
|
10268
|
+
__extends(PermissionService, _super);
|
|
10269
|
+
function PermissionService(http, injector, _moduleConfigService, _userService, _oauthService, _appContext) {
|
|
10270
|
+
var _this = _super.call(this, http, injector, _moduleConfigService.getConfig().environment.apiDomain.authorizationEndpoint + "/" + _moduleConfigService.getConfig().environment.apiVersion + "/permission") || this;
|
|
10271
|
+
_this._moduleConfigService = _moduleConfigService;
|
|
10272
|
+
_this._userService = _userService;
|
|
10273
|
+
_this._oauthService = _oauthService;
|
|
10274
|
+
_this._appContext = _appContext;
|
|
10275
|
+
_this.storage = sessionStorage;
|
|
10276
|
+
_this.delayCheckPermissions = [];
|
|
10277
|
+
_this.ignoreAdmin = false;
|
|
10278
|
+
_this.appCode = null;
|
|
10279
|
+
_this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.authorizationEndpoint;
|
|
10280
|
+
_this.ignoreAdmin = _this._moduleConfigService.getConfig().environment.isIgnoreAdmin;
|
|
10281
|
+
_this.appCode = _this._moduleConfigService.getConfig().appCode;
|
|
10282
|
+
return _this;
|
|
10283
|
+
}
|
|
10284
|
+
PermissionService.prototype.clearPermissionCacheAll = function () {
|
|
10285
|
+
var _a, _b, _c;
|
|
10286
|
+
var lstAppCodes = (_c = (_b = (_a = this._moduleConfigService.getConfig().environment.appMetadata) === null || _a === void 0 ? void 0 : _a.appSwitcher) === null || _b === void 0 ? void 0 : _b.map(function (app) { return app.code; })) !== null && _c !== void 0 ? _c : [];
|
|
10287
|
+
var lstApiEndpoint = [];
|
|
10288
|
+
var apiDomain = this._moduleConfigService.getConfig().environment.apiDomain;
|
|
10289
|
+
for (var domainName in apiDomain) {
|
|
10290
|
+
if (domainName.startsWith('-') || domainName.startsWith('1') || domainName == 'gateway')
|
|
10291
|
+
continue;
|
|
10292
|
+
var realDomainName = domainName.split('Endpoint') ? domainName.split('Endpoint')[0] : domainName;
|
|
10293
|
+
lstApiEndpoint.push(realDomainName.toUpperCase());
|
|
10294
|
+
}
|
|
10295
|
+
return this.clearPermissionCache(__spread(lstAppCodes, lstApiEndpoint));
|
|
10296
|
+
};
|
|
10297
|
+
PermissionService.prototype.clearPermissionCache = function (lstModule) {
|
|
10298
|
+
var url = this.serviceUri + "/ClearPermissionCache";
|
|
10299
|
+
return this.defaultPost(url, lstModule);
|
|
10300
|
+
};
|
|
10301
|
+
PermissionService.prototype.getCurrentUserPermission = function () {
|
|
10302
|
+
var url = this.serviceUri + "/GetCurrentUserPermission";
|
|
10303
|
+
return this.defaultGet(url);
|
|
10304
|
+
};
|
|
10305
|
+
PermissionService.prototype.getAllBasePermission = function () {
|
|
10306
|
+
var _a, _b, _c, _d;
|
|
10307
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
10308
|
+
var url, user, res, lstAppCodes, promiseArr, code, service, permissions, key, storageItem;
|
|
10309
|
+
return __generator(this, function (_e) {
|
|
10310
|
+
switch (_e.label) {
|
|
10311
|
+
case 0:
|
|
10312
|
+
url = this.serviceUri + "/GetAllBasePermission";
|
|
10313
|
+
user = this._userService.getCurrentUser();
|
|
10314
|
+
if (user
|
|
10315
|
+
&& (user.issuperuser && user.issuperuser.toLowerCase() == 'true')
|
|
10316
|
+
|| (user.isadmin && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin)) {
|
|
10317
|
+
return [2 /*return*/];
|
|
10318
|
+
}
|
|
10319
|
+
return [4 /*yield*/, this.defaultGet(url)];
|
|
10320
|
+
case 1:
|
|
10321
|
+
res = _e.sent();
|
|
10322
|
+
lstAppCodes = (_c = (_b = (_a = this._moduleConfigService.getConfig().environment.appMetadata) === null || _a === void 0 ? void 0 : _a.appSwitcher) === null || _b === void 0 ? void 0 : _b.map(function (app) { return app.code; })) !== null && _c !== void 0 ? _c : [];
|
|
10323
|
+
if (!(!res.success || res.data == null)) return [3 /*break*/, 3];
|
|
10324
|
+
promiseArr = [];
|
|
10325
|
+
for (code in lstAppCodes) {
|
|
10326
|
+
promiseArr.push(this.getPermissions(code));
|
|
10327
|
+
}
|
|
10328
|
+
return [4 /*yield*/, Promise.all(promiseArr)];
|
|
10329
|
+
case 2:
|
|
10330
|
+
_e.sent();
|
|
10331
|
+
return [2 /*return*/];
|
|
10332
|
+
case 3:
|
|
10333
|
+
for (service in lstAppCodes) {
|
|
10334
|
+
permissions = (_d = res.data[service]) !== null && _d !== void 0 ? _d : [];
|
|
10335
|
+
key = "AUTHORIZATION." + service.toUpperCase();
|
|
10336
|
+
storageItem = this.storage.getItem(key);
|
|
10337
|
+
if (storageItem != null) {
|
|
10338
|
+
this.storage.removeItem(key);
|
|
10339
|
+
}
|
|
10340
|
+
this.storage.setItem(key, JSON.stringify(permissions));
|
|
10341
|
+
}
|
|
10342
|
+
return [2 /*return*/];
|
|
10343
|
+
}
|
|
10344
|
+
});
|
|
10345
|
+
});
|
|
10346
|
+
};
|
|
10347
|
+
/**
|
|
10348
|
+
* Truyền vào danh sách permision cần check
|
|
10349
|
+
* @param lstPermissionCode những perrmision code cần check => nên dùng trong trường hợp check các button trong code
|
|
10350
|
+
* @returns trả ra các perrmisionCode có quyền
|
|
10351
|
+
*/
|
|
10352
|
+
PermissionService.prototype.getPermissionAuthorized = function (lstPermissionCode) {
|
|
10353
|
+
var _this = this;
|
|
10354
|
+
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
10355
|
+
var user, result, lstPermissionCode_1, lstPermissionCode_1_1, item, e_1_1;
|
|
10356
|
+
var e_1, _e;
|
|
10357
|
+
return __generator(this, function (_f) {
|
|
10358
|
+
switch (_f.label) {
|
|
10359
|
+
case 0: return [4 /*yield*/, this._userService.getCurrentUser()];
|
|
10360
|
+
case 1:
|
|
10361
|
+
user = (_f.sent());
|
|
10362
|
+
if (user && user.issuperuser.toLowerCase() == 'true') {
|
|
10363
|
+
resolve(lstPermissionCode);
|
|
10364
|
+
return [2 /*return*/];
|
|
10365
|
+
}
|
|
10366
|
+
if (user && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin) {
|
|
10367
|
+
resolve(lstPermissionCode);
|
|
10368
|
+
return [2 /*return*/];
|
|
10369
|
+
}
|
|
10370
|
+
result = [];
|
|
10371
|
+
_f.label = 2;
|
|
10372
|
+
case 2:
|
|
10373
|
+
_f.trys.push([2, 7, 8, 9]);
|
|
10374
|
+
lstPermissionCode_1 = __values(lstPermissionCode), lstPermissionCode_1_1 = lstPermissionCode_1.next();
|
|
10375
|
+
_f.label = 3;
|
|
10376
|
+
case 3:
|
|
10377
|
+
if (!!lstPermissionCode_1_1.done) return [3 /*break*/, 6];
|
|
10378
|
+
item = lstPermissionCode_1_1.value;
|
|
10379
|
+
return [4 /*yield*/, this.isAuthorizedPermission(item)];
|
|
10380
|
+
case 4:
|
|
10381
|
+
if (_f.sent()) {
|
|
10382
|
+
result.push(item);
|
|
10383
|
+
}
|
|
10384
|
+
_f.label = 5;
|
|
10385
|
+
case 5:
|
|
10386
|
+
lstPermissionCode_1_1 = lstPermissionCode_1.next();
|
|
10387
|
+
return [3 /*break*/, 3];
|
|
10388
|
+
case 6: return [3 /*break*/, 9];
|
|
10389
|
+
case 7:
|
|
10390
|
+
e_1_1 = _f.sent();
|
|
10391
|
+
e_1 = { error: e_1_1 };
|
|
10392
|
+
return [3 /*break*/, 9];
|
|
10393
|
+
case 8:
|
|
10394
|
+
try {
|
|
10395
|
+
if (lstPermissionCode_1_1 && !lstPermissionCode_1_1.done && (_e = lstPermissionCode_1.return)) _e.call(lstPermissionCode_1);
|
|
10396
|
+
}
|
|
10397
|
+
finally { if (e_1) throw e_1.error; }
|
|
10398
|
+
return [7 /*endfinally*/];
|
|
10399
|
+
case 9:
|
|
10400
|
+
resolve(result);
|
|
10401
|
+
return [2 /*return*/];
|
|
10402
|
+
}
|
|
10403
|
+
});
|
|
10404
|
+
}); });
|
|
10405
|
+
};
|
|
10406
|
+
PermissionService.prototype.isAuthorizedPermission = function (permission) {
|
|
10407
|
+
var _this = this;
|
|
10408
|
+
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
10409
|
+
var retryCount;
|
|
10410
|
+
return __generator(this, function (_e) {
|
|
10411
|
+
switch (_e.label) {
|
|
10412
|
+
case 0:
|
|
10413
|
+
retryCount = 0;
|
|
10414
|
+
_e.label = 1;
|
|
10415
|
+
case 1:
|
|
10416
|
+
if (!!this._oauthService.hasValidAccessToken()) return [3 /*break*/, 3];
|
|
10417
|
+
return [4 /*yield*/, this._commonService.delay(100)];
|
|
10418
|
+
case 2:
|
|
10419
|
+
_e.sent();
|
|
10420
|
+
retryCount++;
|
|
10421
|
+
if (retryCount > 50) {
|
|
10422
|
+
return [3 /*break*/, 3];
|
|
10423
|
+
}
|
|
10424
|
+
return [3 /*break*/, 1];
|
|
10425
|
+
case 3: return [4 /*yield*/, this.checkPermission(this.appCode, permission, resolve, reject)];
|
|
10426
|
+
case 4:
|
|
10427
|
+
_e.sent();
|
|
10428
|
+
return [2 /*return*/];
|
|
10429
|
+
}
|
|
10430
|
+
});
|
|
10431
|
+
}); });
|
|
10432
|
+
};
|
|
10433
|
+
PermissionService.prototype.isAuthorized = function (service, permission, ignoreAdmin) {
|
|
10434
|
+
var _this = this;
|
|
10435
|
+
if (ignoreAdmin === void 0) { ignoreAdmin = false; }
|
|
10436
|
+
this.root = this._appContext.getRootContext();
|
|
10437
|
+
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
10438
|
+
var retryCount;
|
|
10439
|
+
return __generator(this, function (_e) {
|
|
10440
|
+
switch (_e.label) {
|
|
10441
|
+
case 0:
|
|
10442
|
+
retryCount = 0;
|
|
10443
|
+
_e.label = 1;
|
|
10444
|
+
case 1:
|
|
10445
|
+
if (!!this._oauthService.hasValidAccessToken()) return [3 /*break*/, 3];
|
|
10446
|
+
return [4 /*yield*/, this._commonService.delay(100)];
|
|
10447
|
+
case 2:
|
|
10448
|
+
_e.sent();
|
|
10449
|
+
retryCount++;
|
|
10450
|
+
if (retryCount > 50) {
|
|
10451
|
+
return [3 /*break*/, 3];
|
|
10452
|
+
}
|
|
10453
|
+
return [3 /*break*/, 1];
|
|
10454
|
+
case 3: return [4 /*yield*/, this.checkPermission(service, permission, resolve, reject)];
|
|
10455
|
+
case 4:
|
|
10456
|
+
_e.sent();
|
|
10457
|
+
return [2 /*return*/];
|
|
10458
|
+
}
|
|
10459
|
+
});
|
|
10460
|
+
}); });
|
|
10461
|
+
};
|
|
10462
|
+
PermissionService.prototype.checkPermission = function (service, permission, resolve, reject) {
|
|
10463
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
10464
|
+
var user;
|
|
10465
|
+
return __generator(this, function (_e) {
|
|
10466
|
+
switch (_e.label) {
|
|
10467
|
+
case 0: return [4 /*yield*/, this._userService.getCurrentUser()];
|
|
10468
|
+
case 1:
|
|
10469
|
+
user = (_e.sent());
|
|
10470
|
+
resolve(true);
|
|
10471
|
+
return [2 /*return*/];
|
|
10472
|
+
}
|
|
10473
|
+
});
|
|
10474
|
+
});
|
|
10475
|
+
};
|
|
10476
|
+
PermissionService.prototype.isAuthorizedByPermissions = function (permissions, operator, ignoreAdmin) {
|
|
10477
|
+
var _this = this;
|
|
10478
|
+
if (operator === void 0) { operator = 'OR'; }
|
|
10479
|
+
if (ignoreAdmin === void 0) { ignoreAdmin = false; }
|
|
10480
|
+
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
10481
|
+
var user, isAuthorized;
|
|
10482
|
+
var _this = this;
|
|
10483
|
+
return __generator(this, function (_e) {
|
|
10484
|
+
switch (_e.label) {
|
|
10485
|
+
case 0: return [4 /*yield*/, this._userService.getCurrentUser()];
|
|
10486
|
+
case 1:
|
|
10487
|
+
user = (_e.sent());
|
|
10488
|
+
if (user && user.issuperuser.toLowerCase() == 'true') {
|
|
10489
|
+
resolve(true);
|
|
10490
|
+
return [2 /*return*/];
|
|
10491
|
+
}
|
|
10492
|
+
if (user && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin) {
|
|
10493
|
+
resolve(true);
|
|
10494
|
+
return [2 /*return*/];
|
|
10495
|
+
}
|
|
10496
|
+
isAuthorized = true;
|
|
10497
|
+
if (operator.toUpperCase() == 'OR') {
|
|
10498
|
+
isAuthorized = false;
|
|
10499
|
+
}
|
|
10500
|
+
return [4 /*yield*/, permissions.forEach(function (item) {
|
|
10501
|
+
_this.getPermissions(item.service).then(function (permissionResult) {
|
|
10502
|
+
if (operator.toUpperCase() == 'OR') {
|
|
10503
|
+
if (permissionResult.includes(item.permission)) {
|
|
10504
|
+
isAuthorized = true;
|
|
10505
|
+
return;
|
|
10506
|
+
}
|
|
10507
|
+
}
|
|
10508
|
+
else {
|
|
10509
|
+
if (!permissionResult.includes(item.permission)) {
|
|
10510
|
+
isAuthorized = false;
|
|
10511
|
+
return;
|
|
10512
|
+
}
|
|
10513
|
+
}
|
|
10514
|
+
}, function (error) {
|
|
10515
|
+
reject(false);
|
|
10516
|
+
});
|
|
10517
|
+
})];
|
|
10518
|
+
case 2:
|
|
10519
|
+
_e.sent();
|
|
10520
|
+
resolve(isAuthorized);
|
|
10521
|
+
return [2 /*return*/];
|
|
10522
|
+
}
|
|
10523
|
+
});
|
|
10524
|
+
}); });
|
|
10525
|
+
};
|
|
10526
|
+
PermissionService.prototype.getPermissions = function (service) {
|
|
10527
|
+
var _this = this;
|
|
10528
|
+
return new Promise(function (resolve, reject) {
|
|
10529
|
+
var url = _this.serviceUri + "/GetPermissionsByService?service=" + service;
|
|
10530
|
+
var key = "AUTHORIZATION." + service.toUpperCase();
|
|
10531
|
+
var storageItem = _this.storage.getItem(key);
|
|
10532
|
+
if (storageItem && storageItem !== 'null' && storageItem !== 'undefined') {
|
|
10533
|
+
var result = JSON.parse(storageItem);
|
|
10534
|
+
resolve(result);
|
|
10535
|
+
}
|
|
10536
|
+
else {
|
|
10537
|
+
_this.defaultGet(url).then(function (response) {
|
|
10538
|
+
_this.storage.setItem(key, JSON.stringify(response.data));
|
|
10539
|
+
resolve(response.data);
|
|
10540
|
+
}, function (error) {
|
|
10541
|
+
reject();
|
|
10542
|
+
});
|
|
10543
|
+
}
|
|
10544
|
+
});
|
|
10545
|
+
};
|
|
10546
|
+
PermissionService.prototype.getPermissionIdsByModule = function (moduleCode) {
|
|
10547
|
+
var url = this.serviceUri + "/GetPermissionIdsByModule/" + moduleCode;
|
|
10548
|
+
return this.defaultGet(url);
|
|
10549
|
+
};
|
|
10550
|
+
PermissionService.prototype.phanQuyenNguoiDung = function (model) {
|
|
10551
|
+
var url = this.serviceUri + "/PhanQuyenNguoiDung";
|
|
10552
|
+
return this.defaultPost(url, model);
|
|
10553
|
+
};
|
|
10554
|
+
return PermissionService;
|
|
10555
|
+
}(BaseService));
|
|
10556
|
+
PermissionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PermissionService_Factory() { return new PermissionService(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(ModuleConfigService), i0.ɵɵinject(UserService), i0.ɵɵinject(i4.OAuthService), i0.ɵɵinject(ApplicationContextService)); }, token: PermissionService, providedIn: "root" });
|
|
10557
|
+
PermissionService.decorators = [
|
|
10558
|
+
{ type: i0.Injectable, args: [{
|
|
10559
|
+
providedIn: 'root'
|
|
10560
|
+
},] }
|
|
10561
|
+
];
|
|
10562
|
+
PermissionService.ctorParameters = function () { return [
|
|
10563
|
+
{ type: i1$1.HttpClient },
|
|
10564
|
+
{ type: i0.Injector },
|
|
10565
|
+
{ type: ModuleConfigService },
|
|
10566
|
+
{ type: UserService },
|
|
10567
|
+
{ type: i4.OAuthService },
|
|
10568
|
+
{ type: ApplicationContextService }
|
|
10569
|
+
]; };
|
|
10570
|
+
|
|
10571
|
+
(function (EnumTypeSplash) {
|
|
10572
|
+
EnumTypeSplash["DEFAULT"] = "Default";
|
|
10573
|
+
EnumTypeSplash["NEW_V1"] = "v1";
|
|
10574
|
+
EnumTypeSplash["NEW_V2"] = "v2";
|
|
10575
|
+
})(exports.EnumTypeSplash || (exports.EnumTypeSplash = {}));
|
|
10576
|
+
var SplashComponentComponent = /** @class */ (function (_super) {
|
|
10577
|
+
__extends(SplashComponentComponent, _super);
|
|
10578
|
+
function SplashComponentComponent(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
10579
|
+
var _this = _super.call(this, injector) || this;
|
|
10580
|
+
_this._moduleConfigService = _moduleConfigService;
|
|
10581
|
+
_this._permissionService = _permissionService;
|
|
10582
|
+
_this._deviceDetectorService = _deviceDetectorService;
|
|
10583
|
+
_this._userService = _userService;
|
|
10584
|
+
_this._router = _router;
|
|
10585
|
+
_this._authenService = _authenService;
|
|
10586
|
+
_this._globalService = _globalService;
|
|
10587
|
+
_this.defaultAvatar = '';
|
|
10588
|
+
_this.appSwitcherItems = [];
|
|
10589
|
+
_this.loaded = false;
|
|
10590
|
+
_this.currentDate = new Date();
|
|
10591
|
+
_this.showDefaultSetting = false;
|
|
10592
|
+
_this.fileApi = '';
|
|
10593
|
+
_this.isOnMobile = false;
|
|
10594
|
+
_this.EnumTypeSplash = exports.EnumTypeSplash;
|
|
10595
|
+
_this.uiSplash = exports.EnumTypeSplash.DEFAULT;
|
|
10596
|
+
_this.daysInWeek = ['Chủ nhật', 'Thứ hai', 'Thứ ba', 'Thứ tư', 'Thứ năm', 'Thứ sáu', 'Thứ bảy'];
|
|
10597
|
+
_this.rootContext.fireEvent('MAIN_CONTENT_ONLY', true);
|
|
10598
|
+
_this.environment = _this._moduleConfigService.getConfig().environment;
|
|
10599
|
+
_this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
|
|
10600
|
+
_this.fileApi = _this.environment.apiDomain.fileEndpoint;
|
|
10601
|
+
setInterval(function () {
|
|
10602
|
+
_this.currentDate = new Date();
|
|
10603
|
+
}, 1000);
|
|
10604
|
+
if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
10605
|
+
_this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
10606
|
+
}
|
|
10607
|
+
else {
|
|
10608
|
+
if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
10609
|
+
_this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
|
|
10610
|
+
}
|
|
10611
|
+
else {
|
|
10612
|
+
_this.showDefaultSetting = false;
|
|
10613
|
+
}
|
|
10614
|
+
}
|
|
10615
|
+
if (!_this.environment.splashScreen || _this.environment.splashScreen == '') {
|
|
10616
|
+
_this.uiSplash = exports.EnumTypeSplash.DEFAULT;
|
|
10617
|
+
}
|
|
10618
|
+
else {
|
|
10619
|
+
_this.uiSplash = _this.environment.splashScreen;
|
|
10620
|
+
}
|
|
10621
|
+
// Config for authentication
|
|
10622
|
+
_this._globalService.setHeaderState(false);
|
|
10623
|
+
_this._globalService.setMenuState(false);
|
|
10624
|
+
return _this;
|
|
10625
|
+
}
|
|
10626
|
+
SplashComponentComponent.prototype.ngOnInit = function () {
|
|
10627
|
+
var _this = this;
|
|
10628
|
+
if (this._deviceDetectorService.isMobile()) {
|
|
10629
|
+
this.isOnMobile = true;
|
|
10630
|
+
}
|
|
10631
|
+
if (this.rootContext.data.currentUser) {
|
|
10632
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
10633
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
10634
|
+
}
|
|
10635
|
+
else {
|
|
10636
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
10637
|
+
}
|
|
10638
|
+
}
|
|
10639
|
+
this.rootContext.replaySubscribe(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
|
|
10640
|
+
_this.currentUser = _this._userService.getCurrentUser();
|
|
10641
|
+
_this.loadAppMetadata();
|
|
10642
|
+
_this.loaded = true;
|
|
10643
|
+
});
|
|
10644
|
+
if (this.rootModel.allowAnonymous) {
|
|
10645
|
+
this.loaded = true;
|
|
10646
|
+
this.loadAppMetadata();
|
|
10647
|
+
}
|
|
10648
|
+
};
|
|
10649
|
+
SplashComponentComponent.prototype.loadAppMetadata = function () {
|
|
10650
|
+
var _this = this;
|
|
10651
|
+
var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
10652
|
+
var arr, _a, _b, _i, ind, element, clientId, isAuthorized;
|
|
10653
|
+
return __generator(this, function (_c) {
|
|
10654
|
+
switch (_c.label) {
|
|
10655
|
+
case 0:
|
|
10656
|
+
arr = [];
|
|
10657
|
+
_a = [];
|
|
10658
|
+
for (_b in this.environment.appMetadata.appSwitcher)
|
|
10659
|
+
_a.push(_b);
|
|
10660
|
+
_i = 0;
|
|
10661
|
+
_c.label = 1;
|
|
10662
|
+
case 1:
|
|
10663
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
10664
|
+
ind = _a[_i];
|
|
10665
|
+
element = this.environment.appMetadata.appSwitcher[ind];
|
|
10666
|
+
clientId = this.environment.authenticationSettings.clientId;
|
|
10667
|
+
if (!(this.rootModel.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
|
|
10668
|
+
arr.push(element);
|
|
10669
|
+
return [3 /*break*/, 4];
|
|
10670
|
+
case 2:
|
|
10671
|
+
if (!this.currentUser) return [3 /*break*/, 4];
|
|
10672
|
+
return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
|
|
10673
|
+
case 3:
|
|
10674
|
+
isAuthorized = _c.sent();
|
|
10675
|
+
if (isAuthorized) {
|
|
10676
|
+
arr.push(element);
|
|
10677
|
+
}
|
|
10678
|
+
_c.label = 4;
|
|
10679
|
+
case 4:
|
|
10680
|
+
_i++;
|
|
10681
|
+
return [3 /*break*/, 1];
|
|
10682
|
+
case 5:
|
|
10683
|
+
resolve(arr);
|
|
10684
|
+
return [2 /*return*/];
|
|
10685
|
+
}
|
|
10686
|
+
});
|
|
10687
|
+
}); });
|
|
10688
|
+
prmsAppSwicherItem.then(function (rs) {
|
|
10689
|
+
_this.appSwitcherItems.length = 0;
|
|
10690
|
+
if (rs) {
|
|
10691
|
+
rs.forEach(function (element) {
|
|
10692
|
+
if (element.visible) {
|
|
10693
|
+
if (!_this.currentUser) { // allow anonymous
|
|
10694
|
+
_this.appSwitcherItems.push(element);
|
|
10695
|
+
}
|
|
10696
|
+
else {
|
|
10697
|
+
if (_this.currentUser.maNguoiHoc && _this.currentUser.issuperuser.toLowerCase() != 'true') {
|
|
10698
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
10699
|
+
_this.appSwitcherItems.push(element);
|
|
10700
|
+
}
|
|
10701
|
+
}
|
|
10702
|
+
else {
|
|
10703
|
+
_this.appSwitcherItems.push(element);
|
|
10704
|
+
}
|
|
10705
|
+
}
|
|
10706
|
+
}
|
|
10707
|
+
});
|
|
10708
|
+
}
|
|
10709
|
+
});
|
|
10710
|
+
};
|
|
10711
|
+
SplashComponentComponent.prototype.switchApp = function (item) {
|
|
10712
|
+
this.loaded = false;
|
|
10713
|
+
if (item.target == '_blank') {
|
|
10714
|
+
if (!item.defaultRedirect) {
|
|
10715
|
+
item.defaultRedirect = '';
|
|
10716
|
+
}
|
|
10717
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
10718
|
+
if (item.url == item.defaultRedirect) {
|
|
10719
|
+
item.url = '/' + item.code.toLowerCase();
|
|
10720
|
+
}
|
|
10721
|
+
var link = item.url + "/" + item.defaultRedirect;
|
|
10722
|
+
if (!link.startsWith('/') && !link.startsWith('http')) {
|
|
10723
|
+
link = '/' + link;
|
|
10724
|
+
}
|
|
10725
|
+
top.location.href = link;
|
|
10726
|
+
}
|
|
10727
|
+
else {
|
|
10728
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
10729
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
10730
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
|
|
10731
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
10732
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
10733
|
+
}
|
|
10734
|
+
}
|
|
10735
|
+
}
|
|
10736
|
+
};
|
|
10737
|
+
SplashComponentComponent.prototype.logout = function () {
|
|
10738
|
+
this._authenService.logout();
|
|
10739
|
+
};
|
|
10740
|
+
SplashComponentComponent.prototype.goToPersonal = function () {
|
|
10741
|
+
var userMenu = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
|
|
10742
|
+
this.switchApp(userMenu);
|
|
10743
|
+
};
|
|
10744
|
+
SplashComponentComponent.prototype.getCurrentUserAvatar = function () {
|
|
10745
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
10746
|
+
return this.fileApi + "/file/public/" + this.rootContext.data.currentUser.avatar + "/Download";
|
|
10747
|
+
}
|
|
10748
|
+
else {
|
|
10749
|
+
return this.defaultAvatar;
|
|
10750
|
+
}
|
|
10751
|
+
};
|
|
10752
|
+
SplashComponentComponent.prototype.getNgayTrongTuan = function () {
|
|
10753
|
+
return this.daysInWeek[this.currentDate.getDay()];
|
|
10754
|
+
};
|
|
10755
|
+
SplashComponentComponent.prototype.showProfilePage = function () {
|
|
10756
|
+
if (this._userService.isSinhVienAccount()) {
|
|
10757
|
+
return false;
|
|
10758
|
+
}
|
|
10759
|
+
return true;
|
|
10760
|
+
};
|
|
10761
|
+
SplashComponentComponent.prototype.ngOnDestroy = function () {
|
|
10762
|
+
_super.prototype.ngOnDestroy.call(this);
|
|
10763
|
+
this._globalService.setHeaderState(true);
|
|
10764
|
+
this._globalService.setMenuState(true);
|
|
10765
|
+
};
|
|
10766
|
+
SplashComponentComponent.prototype.login = function () {
|
|
10767
|
+
this.rootContext.fireEvent('LOGIN');
|
|
10768
|
+
};
|
|
10769
|
+
return SplashComponentComponent;
|
|
10770
|
+
}(ComponentBase));
|
|
10771
|
+
SplashComponentComponent.decorators = [
|
|
10772
|
+
{ type: i0.Component, args: [{
|
|
10773
|
+
selector: 'splash-component',
|
|
10774
|
+
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}} 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>",
|
|
10775
|
+
providers: [ComponentContextService],
|
|
10776
|
+
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:8px;height:1em;left:50%;position:absolute;text-indent:-9999em;top:50%;transform:translate(-50%,-50%);width:1em}@-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}}"]
|
|
10777
|
+
},] }
|
|
10778
|
+
];
|
|
10779
|
+
SplashComponentComponent.ctorParameters = function () { return [
|
|
10780
|
+
{ type: i0.Injector },
|
|
10781
|
+
{ type: ModuleConfigService },
|
|
10782
|
+
{ type: PermissionService },
|
|
10783
|
+
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
10784
|
+
{ type: UserService },
|
|
10785
|
+
{ type: i3$1.Router },
|
|
10786
|
+
{ type: AuthenService },
|
|
10787
|
+
{ type: GlobalService }
|
|
10788
|
+
]; };
|
|
10789
|
+
|
|
10197
10790
|
var AccessDeniedComponent = /** @class */ (function (_super) {
|
|
10198
10791
|
__extends(AccessDeniedComponent, _super);
|
|
10199
10792
|
function AccessDeniedComponent(injector, _userService, _router, _moduleConfigService, _authenService) {
|
|
@@ -11046,341 +11639,6 @@
|
|
|
11046
11639
|
{ type: ModuleConfigService }
|
|
11047
11640
|
]; };
|
|
11048
11641
|
|
|
11049
|
-
var PhanQuyenModel = /** @class */ (function () {
|
|
11050
|
-
function PhanQuyenModel(init) {
|
|
11051
|
-
this.addRoleIds = [];
|
|
11052
|
-
this.removeRoleIds = [];
|
|
11053
|
-
this.addPermissionIds = [];
|
|
11054
|
-
this.removePermissionIds = [];
|
|
11055
|
-
for (var key in init) {
|
|
11056
|
-
this[key] = init[key];
|
|
11057
|
-
}
|
|
11058
|
-
}
|
|
11059
|
-
return PhanQuyenModel;
|
|
11060
|
-
}());
|
|
11061
|
-
var PermissionService = /** @class */ (function (_super) {
|
|
11062
|
-
__extends(PermissionService, _super);
|
|
11063
|
-
function PermissionService(http, injector, _moduleConfigService, _userService, _oauthService, _appContext) {
|
|
11064
|
-
var _this = _super.call(this, http, injector, _moduleConfigService.getConfig().environment.apiDomain.authorizationEndpoint + "/" + _moduleConfigService.getConfig().environment.apiVersion + "/permission") || this;
|
|
11065
|
-
_this._moduleConfigService = _moduleConfigService;
|
|
11066
|
-
_this._userService = _userService;
|
|
11067
|
-
_this._oauthService = _oauthService;
|
|
11068
|
-
_this._appContext = _appContext;
|
|
11069
|
-
_this.storage = sessionStorage;
|
|
11070
|
-
_this.delayCheckPermissions = [];
|
|
11071
|
-
_this.ignoreAdmin = false;
|
|
11072
|
-
_this.appCode = null;
|
|
11073
|
-
_this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.authorizationEndpoint;
|
|
11074
|
-
_this.ignoreAdmin = _this._moduleConfigService.getConfig().environment.isIgnoreAdmin;
|
|
11075
|
-
_this.appCode = _this._moduleConfigService.getConfig().appCode;
|
|
11076
|
-
return _this;
|
|
11077
|
-
}
|
|
11078
|
-
PermissionService.prototype.clearPermissionCacheAll = function () {
|
|
11079
|
-
var _a, _b, _c;
|
|
11080
|
-
var lstAppCodes = (_c = (_b = (_a = this._moduleConfigService.getConfig().environment.appMetadata) === null || _a === void 0 ? void 0 : _a.appSwitcher) === null || _b === void 0 ? void 0 : _b.map(function (app) { return app.code; })) !== null && _c !== void 0 ? _c : [];
|
|
11081
|
-
var lstApiEndpoint = [];
|
|
11082
|
-
var apiDomain = this._moduleConfigService.getConfig().environment.apiDomain;
|
|
11083
|
-
for (var domainName in apiDomain) {
|
|
11084
|
-
if (domainName.startsWith('-') || domainName.startsWith('1') || domainName == 'gateway')
|
|
11085
|
-
continue;
|
|
11086
|
-
var realDomainName = domainName.split('Endpoint') ? domainName.split('Endpoint')[0] : domainName;
|
|
11087
|
-
lstApiEndpoint.push(realDomainName.toUpperCase());
|
|
11088
|
-
}
|
|
11089
|
-
return this.clearPermissionCache(__spread(lstAppCodes, lstApiEndpoint));
|
|
11090
|
-
};
|
|
11091
|
-
PermissionService.prototype.clearPermissionCache = function (lstModule) {
|
|
11092
|
-
var url = this.serviceUri + "/ClearPermissionCache";
|
|
11093
|
-
return this.defaultPost(url, lstModule);
|
|
11094
|
-
};
|
|
11095
|
-
PermissionService.prototype.getCurrentUserPermission = function () {
|
|
11096
|
-
var url = this.serviceUri + "/GetCurrentUserPermission";
|
|
11097
|
-
return this.defaultGet(url);
|
|
11098
|
-
};
|
|
11099
|
-
PermissionService.prototype.getAllBasePermission = function () {
|
|
11100
|
-
var _a, _b, _c, _d;
|
|
11101
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
11102
|
-
var url, user, res, lstAppCodes, promiseArr, code, service, permissions, key, storageItem;
|
|
11103
|
-
return __generator(this, function (_e) {
|
|
11104
|
-
switch (_e.label) {
|
|
11105
|
-
case 0:
|
|
11106
|
-
url = this.serviceUri + "/GetAllBasePermission";
|
|
11107
|
-
user = this._userService.getCurrentUser();
|
|
11108
|
-
if (user
|
|
11109
|
-
&& (user.issuperuser && user.issuperuser.toLowerCase() == 'true')
|
|
11110
|
-
|| (user.isadmin && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin)) {
|
|
11111
|
-
return [2 /*return*/];
|
|
11112
|
-
}
|
|
11113
|
-
return [4 /*yield*/, this.defaultGet(url)];
|
|
11114
|
-
case 1:
|
|
11115
|
-
res = _e.sent();
|
|
11116
|
-
lstAppCodes = (_c = (_b = (_a = this._moduleConfigService.getConfig().environment.appMetadata) === null || _a === void 0 ? void 0 : _a.appSwitcher) === null || _b === void 0 ? void 0 : _b.map(function (app) { return app.code; })) !== null && _c !== void 0 ? _c : [];
|
|
11117
|
-
if (!(!res.success || res.data == null)) return [3 /*break*/, 3];
|
|
11118
|
-
promiseArr = [];
|
|
11119
|
-
for (code in lstAppCodes) {
|
|
11120
|
-
promiseArr.push(this.getPermissions(code));
|
|
11121
|
-
}
|
|
11122
|
-
return [4 /*yield*/, Promise.all(promiseArr)];
|
|
11123
|
-
case 2:
|
|
11124
|
-
_e.sent();
|
|
11125
|
-
return [2 /*return*/];
|
|
11126
|
-
case 3:
|
|
11127
|
-
for (service in lstAppCodes) {
|
|
11128
|
-
permissions = (_d = res.data[service]) !== null && _d !== void 0 ? _d : [];
|
|
11129
|
-
key = "AUTHORIZATION." + service.toUpperCase();
|
|
11130
|
-
storageItem = this.storage.getItem(key);
|
|
11131
|
-
if (storageItem != null) {
|
|
11132
|
-
this.storage.removeItem(key);
|
|
11133
|
-
}
|
|
11134
|
-
this.storage.setItem(key, JSON.stringify(permissions));
|
|
11135
|
-
}
|
|
11136
|
-
return [2 /*return*/];
|
|
11137
|
-
}
|
|
11138
|
-
});
|
|
11139
|
-
});
|
|
11140
|
-
};
|
|
11141
|
-
/**
|
|
11142
|
-
* Truyền vào danh sách permision cần check
|
|
11143
|
-
* @param lstPermissionCode những perrmision code cần check => nên dùng trong trường hợp check các button trong code
|
|
11144
|
-
* @returns trả ra các perrmisionCode có quyền
|
|
11145
|
-
*/
|
|
11146
|
-
PermissionService.prototype.getPermissionAuthorized = function (lstPermissionCode) {
|
|
11147
|
-
var _this = this;
|
|
11148
|
-
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
11149
|
-
var user, result, lstPermissionCode_1, lstPermissionCode_1_1, item, e_1_1;
|
|
11150
|
-
var e_1, _e;
|
|
11151
|
-
return __generator(this, function (_f) {
|
|
11152
|
-
switch (_f.label) {
|
|
11153
|
-
case 0: return [4 /*yield*/, this._userService.getCurrentUser()];
|
|
11154
|
-
case 1:
|
|
11155
|
-
user = (_f.sent());
|
|
11156
|
-
if (user && user.issuperuser.toLowerCase() == 'true') {
|
|
11157
|
-
resolve(lstPermissionCode);
|
|
11158
|
-
return [2 /*return*/];
|
|
11159
|
-
}
|
|
11160
|
-
if (user && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin) {
|
|
11161
|
-
resolve(lstPermissionCode);
|
|
11162
|
-
return [2 /*return*/];
|
|
11163
|
-
}
|
|
11164
|
-
result = [];
|
|
11165
|
-
_f.label = 2;
|
|
11166
|
-
case 2:
|
|
11167
|
-
_f.trys.push([2, 7, 8, 9]);
|
|
11168
|
-
lstPermissionCode_1 = __values(lstPermissionCode), lstPermissionCode_1_1 = lstPermissionCode_1.next();
|
|
11169
|
-
_f.label = 3;
|
|
11170
|
-
case 3:
|
|
11171
|
-
if (!!lstPermissionCode_1_1.done) return [3 /*break*/, 6];
|
|
11172
|
-
item = lstPermissionCode_1_1.value;
|
|
11173
|
-
return [4 /*yield*/, this.isAuthorizedPermission(item)];
|
|
11174
|
-
case 4:
|
|
11175
|
-
if (_f.sent()) {
|
|
11176
|
-
result.push(item);
|
|
11177
|
-
}
|
|
11178
|
-
_f.label = 5;
|
|
11179
|
-
case 5:
|
|
11180
|
-
lstPermissionCode_1_1 = lstPermissionCode_1.next();
|
|
11181
|
-
return [3 /*break*/, 3];
|
|
11182
|
-
case 6: return [3 /*break*/, 9];
|
|
11183
|
-
case 7:
|
|
11184
|
-
e_1_1 = _f.sent();
|
|
11185
|
-
e_1 = { error: e_1_1 };
|
|
11186
|
-
return [3 /*break*/, 9];
|
|
11187
|
-
case 8:
|
|
11188
|
-
try {
|
|
11189
|
-
if (lstPermissionCode_1_1 && !lstPermissionCode_1_1.done && (_e = lstPermissionCode_1.return)) _e.call(lstPermissionCode_1);
|
|
11190
|
-
}
|
|
11191
|
-
finally { if (e_1) throw e_1.error; }
|
|
11192
|
-
return [7 /*endfinally*/];
|
|
11193
|
-
case 9:
|
|
11194
|
-
resolve(result);
|
|
11195
|
-
return [2 /*return*/];
|
|
11196
|
-
}
|
|
11197
|
-
});
|
|
11198
|
-
}); });
|
|
11199
|
-
};
|
|
11200
|
-
PermissionService.prototype.isAuthorizedPermission = function (permission) {
|
|
11201
|
-
var _this = this;
|
|
11202
|
-
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
11203
|
-
var retryCount;
|
|
11204
|
-
return __generator(this, function (_e) {
|
|
11205
|
-
switch (_e.label) {
|
|
11206
|
-
case 0:
|
|
11207
|
-
retryCount = 0;
|
|
11208
|
-
_e.label = 1;
|
|
11209
|
-
case 1:
|
|
11210
|
-
if (!!this._oauthService.hasValidAccessToken()) return [3 /*break*/, 3];
|
|
11211
|
-
return [4 /*yield*/, this._commonService.delay(100)];
|
|
11212
|
-
case 2:
|
|
11213
|
-
_e.sent();
|
|
11214
|
-
retryCount++;
|
|
11215
|
-
if (retryCount > 50) {
|
|
11216
|
-
return [3 /*break*/, 3];
|
|
11217
|
-
}
|
|
11218
|
-
return [3 /*break*/, 1];
|
|
11219
|
-
case 3: return [4 /*yield*/, this.checkPermission(this.appCode, permission, resolve, reject)];
|
|
11220
|
-
case 4:
|
|
11221
|
-
_e.sent();
|
|
11222
|
-
return [2 /*return*/];
|
|
11223
|
-
}
|
|
11224
|
-
});
|
|
11225
|
-
}); });
|
|
11226
|
-
};
|
|
11227
|
-
PermissionService.prototype.isAuthorized = function (service, permission, ignoreAdmin) {
|
|
11228
|
-
var _this = this;
|
|
11229
|
-
if (ignoreAdmin === void 0) { ignoreAdmin = false; }
|
|
11230
|
-
this.root = this._appContext.getRootContext();
|
|
11231
|
-
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
11232
|
-
var retryCount;
|
|
11233
|
-
return __generator(this, function (_e) {
|
|
11234
|
-
switch (_e.label) {
|
|
11235
|
-
case 0:
|
|
11236
|
-
retryCount = 0;
|
|
11237
|
-
_e.label = 1;
|
|
11238
|
-
case 1:
|
|
11239
|
-
if (!!this._oauthService.hasValidAccessToken()) return [3 /*break*/, 3];
|
|
11240
|
-
return [4 /*yield*/, this._commonService.delay(100)];
|
|
11241
|
-
case 2:
|
|
11242
|
-
_e.sent();
|
|
11243
|
-
retryCount++;
|
|
11244
|
-
if (retryCount > 50) {
|
|
11245
|
-
return [3 /*break*/, 3];
|
|
11246
|
-
}
|
|
11247
|
-
return [3 /*break*/, 1];
|
|
11248
|
-
case 3: return [4 /*yield*/, this.checkPermission(service, permission, resolve, reject)];
|
|
11249
|
-
case 4:
|
|
11250
|
-
_e.sent();
|
|
11251
|
-
return [2 /*return*/];
|
|
11252
|
-
}
|
|
11253
|
-
});
|
|
11254
|
-
}); });
|
|
11255
|
-
};
|
|
11256
|
-
PermissionService.prototype.checkPermission = function (service, permission, resolve, reject) {
|
|
11257
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
11258
|
-
var user;
|
|
11259
|
-
return __generator(this, function (_e) {
|
|
11260
|
-
switch (_e.label) {
|
|
11261
|
-
case 0: return [4 /*yield*/, this._userService.getCurrentUser()];
|
|
11262
|
-
case 1:
|
|
11263
|
-
user = (_e.sent());
|
|
11264
|
-
if (user && user.issuperuser && user.issuperuser.toLowerCase() == 'true') {
|
|
11265
|
-
resolve(true);
|
|
11266
|
-
return [2 /*return*/];
|
|
11267
|
-
}
|
|
11268
|
-
if (user && user.isadmin && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin) {
|
|
11269
|
-
resolve(true);
|
|
11270
|
-
return [2 /*return*/];
|
|
11271
|
-
}
|
|
11272
|
-
this.getPermissions(service).then(function (permissions) {
|
|
11273
|
-
if (permissions && permissions.length) {
|
|
11274
|
-
var isAuthorized = permissions.includes(permission);
|
|
11275
|
-
resolve(isAuthorized);
|
|
11276
|
-
}
|
|
11277
|
-
else {
|
|
11278
|
-
console.log("L\u1ED7i kh\u00F4ng l\u1EA5y \u0111\u01B0\u1EE3c permission cho module: " + service);
|
|
11279
|
-
resolve(false);
|
|
11280
|
-
}
|
|
11281
|
-
}, function (error) {
|
|
11282
|
-
reject(false);
|
|
11283
|
-
});
|
|
11284
|
-
return [2 /*return*/];
|
|
11285
|
-
}
|
|
11286
|
-
});
|
|
11287
|
-
});
|
|
11288
|
-
};
|
|
11289
|
-
PermissionService.prototype.isAuthorizedByPermissions = function (permissions, operator, ignoreAdmin) {
|
|
11290
|
-
var _this = this;
|
|
11291
|
-
if (operator === void 0) { operator = 'OR'; }
|
|
11292
|
-
if (ignoreAdmin === void 0) { ignoreAdmin = false; }
|
|
11293
|
-
return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
11294
|
-
var user, isAuthorized;
|
|
11295
|
-
var _this = this;
|
|
11296
|
-
return __generator(this, function (_e) {
|
|
11297
|
-
switch (_e.label) {
|
|
11298
|
-
case 0: return [4 /*yield*/, this._userService.getCurrentUser()];
|
|
11299
|
-
case 1:
|
|
11300
|
-
user = (_e.sent());
|
|
11301
|
-
if (user && user.issuperuser.toLowerCase() == 'true') {
|
|
11302
|
-
resolve(true);
|
|
11303
|
-
return [2 /*return*/];
|
|
11304
|
-
}
|
|
11305
|
-
if (user && user.isadmin.toLowerCase() == 'true' && !this.ignoreAdmin) {
|
|
11306
|
-
resolve(true);
|
|
11307
|
-
return [2 /*return*/];
|
|
11308
|
-
}
|
|
11309
|
-
isAuthorized = true;
|
|
11310
|
-
if (operator.toUpperCase() == 'OR') {
|
|
11311
|
-
isAuthorized = false;
|
|
11312
|
-
}
|
|
11313
|
-
return [4 /*yield*/, permissions.forEach(function (item) {
|
|
11314
|
-
_this.getPermissions(item.service).then(function (permissionResult) {
|
|
11315
|
-
if (operator.toUpperCase() == 'OR') {
|
|
11316
|
-
if (permissionResult.includes(item.permission)) {
|
|
11317
|
-
isAuthorized = true;
|
|
11318
|
-
return;
|
|
11319
|
-
}
|
|
11320
|
-
}
|
|
11321
|
-
else {
|
|
11322
|
-
if (!permissionResult.includes(item.permission)) {
|
|
11323
|
-
isAuthorized = false;
|
|
11324
|
-
return;
|
|
11325
|
-
}
|
|
11326
|
-
}
|
|
11327
|
-
}, function (error) {
|
|
11328
|
-
reject(false);
|
|
11329
|
-
});
|
|
11330
|
-
})];
|
|
11331
|
-
case 2:
|
|
11332
|
-
_e.sent();
|
|
11333
|
-
resolve(isAuthorized);
|
|
11334
|
-
return [2 /*return*/];
|
|
11335
|
-
}
|
|
11336
|
-
});
|
|
11337
|
-
}); });
|
|
11338
|
-
};
|
|
11339
|
-
PermissionService.prototype.getPermissions = function (service) {
|
|
11340
|
-
var _this = this;
|
|
11341
|
-
return new Promise(function (resolve, reject) {
|
|
11342
|
-
var url = _this.serviceUri + "/GetPermissionsByService?service=" + service;
|
|
11343
|
-
var key = "AUTHORIZATION." + service.toUpperCase();
|
|
11344
|
-
var storageItem = _this.storage.getItem(key);
|
|
11345
|
-
if (storageItem && storageItem !== 'null' && storageItem !== 'undefined') {
|
|
11346
|
-
var result = JSON.parse(storageItem);
|
|
11347
|
-
resolve(result);
|
|
11348
|
-
}
|
|
11349
|
-
else {
|
|
11350
|
-
_this.defaultGet(url).then(function (response) {
|
|
11351
|
-
_this.storage.setItem(key, JSON.stringify(response.data));
|
|
11352
|
-
resolve(response.data);
|
|
11353
|
-
}, function (error) {
|
|
11354
|
-
reject();
|
|
11355
|
-
});
|
|
11356
|
-
}
|
|
11357
|
-
});
|
|
11358
|
-
};
|
|
11359
|
-
PermissionService.prototype.getPermissionIdsByModule = function (moduleCode, userId) {
|
|
11360
|
-
var url = this.serviceUri + "/GetPermissionIdsByModule/" + moduleCode + "/" + userId;
|
|
11361
|
-
return this.defaultGet(url);
|
|
11362
|
-
};
|
|
11363
|
-
PermissionService.prototype.phanQuyenNguoiDung = function (model) {
|
|
11364
|
-
var url = this.serviceUri + "/PhanQuyenNguoiDung";
|
|
11365
|
-
return this.defaultPost(url, model);
|
|
11366
|
-
};
|
|
11367
|
-
return PermissionService;
|
|
11368
|
-
}(BaseService));
|
|
11369
|
-
PermissionService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PermissionService_Factory() { return new PermissionService(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(ModuleConfigService), i0.ɵɵinject(UserService), i0.ɵɵinject(i4.OAuthService), i0.ɵɵinject(ApplicationContextService)); }, token: PermissionService, providedIn: "root" });
|
|
11370
|
-
PermissionService.decorators = [
|
|
11371
|
-
{ type: i0.Injectable, args: [{
|
|
11372
|
-
providedIn: 'root'
|
|
11373
|
-
},] }
|
|
11374
|
-
];
|
|
11375
|
-
PermissionService.ctorParameters = function () { return [
|
|
11376
|
-
{ type: i1$1.HttpClient },
|
|
11377
|
-
{ type: i0.Injector },
|
|
11378
|
-
{ type: ModuleConfigService },
|
|
11379
|
-
{ type: UserService },
|
|
11380
|
-
{ type: i4.OAuthService },
|
|
11381
|
-
{ type: ApplicationContextService }
|
|
11382
|
-
]; };
|
|
11383
|
-
|
|
11384
11642
|
var sort_by;
|
|
11385
11643
|
(function () {
|
|
11386
11644
|
var defaultCompareFunc = function (a, b) {
|
|
@@ -17902,6 +18160,7 @@
|
|
|
17902
18160
|
this.model.submitting = false;
|
|
17903
18161
|
this.showMessageAfterInsert(response.success, response);
|
|
17904
18162
|
if (!response.success) return [3 /*break*/, 2];
|
|
18163
|
+
this.model.data.id = response.data;
|
|
17905
18164
|
return [4 /*yield*/, this.onAfterSave(response)];
|
|
17906
18165
|
case 1:
|
|
17907
18166
|
_a.sent();
|
|
@@ -23980,6 +24239,9 @@
|
|
|
23980
24239
|
return [4 /*yield*/, this.modifyGridInfo(gridInfo)];
|
|
23981
24240
|
case 1:
|
|
23982
24241
|
resultModify = _a.sent();
|
|
24242
|
+
if (gridInfo.sorts.length == 0) {
|
|
24243
|
+
gridInfo.sorts.unshift(this.newSort('created', -1));
|
|
24244
|
+
}
|
|
23983
24245
|
if (resultModify === false) {
|
|
23984
24246
|
this.model.dataSource = [];
|
|
23985
24247
|
this.model.total = 0;
|
|
@@ -28343,7 +28605,7 @@
|
|
|
28343
28605
|
selector: 'chat-box',
|
|
28344
28606
|
template: "<div class=\"dashboard\">\r\n <div class=\"chat\">\r\n <div class=\"group-info\">\r\n <a href=\"javascript:\">C\u00F3 {{peopleAll.length}} ng\u01B0\u1EDDi trong nh\u00F3m n\u00E0y</a>\r\n <div class=\"circleButton\" pTooltip=\"Xem to\u00E0n b\u1ED9 \u0111\u00EDnh k\u00E8m\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"far fa-images\"></i></a>\r\n </div>\r\n <div (click)=\"addPeople()\" class=\"circleButton\" pTooltip=\"Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi v\u00E0o nh\u00F3m\" tooltipPosition=\"top\"\r\n disabled=\"true\">\r\n <a href=\"javascript:\"><i class=\"fas fa-user-plus\"></i></a>\r\n </div>\r\n </div>\r\n <ul #scrollMe [ngClass]=\"{'hasPin': model.pinnedMessage != null}\">\r\n <li *ngIf=\"model.pinnedMessage\" class=\"clearfix pin\" [ngClass]=\"{'message-from': true}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"messageItem; context: { i : -1, item: model.pinnedMessage, isPinnedMessage: true}\">\r\n </ng-container>\r\n </li>\r\n <li *ngFor=\"let item of model.dataSource; let i = index; trackBy: trackByFunc\" class=\"clearfix\"\r\n [ngClass]=\"{ 'message-own': item.type == 'own'}\">\r\n <ng-container *ngTemplateOutlet=\"messageItem; context: { i : i, item: item}\">\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <!-- <chat-send-message-box *ngIf=\"showSendMessageBox\"></chat-send-message-box>-->\r\n <div [ngClass]=\"{'visible2': model.scrolling, 'hidden2': !model.scrolling}\" class=\"scroll-to-bottom\">\r\n <span *ngIf=\"model.newMessageNotUpdatedCount > 0\" (click)=\"scrollToBottom(350, true, null)\">\r\n {{model.newMessageNotUpdatedCount <= 5 ? model.newMessageNotUpdatedCount : '5+' }} </span>\r\n <span (click)=\"scrollToBottom(350, true, null)\" *ngIf=\"model.newMessageNotUpdatedCount == 0\">\r\n <i class=\"fas fa-chevron-down\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<file-viewer *ngIf=\"fileViewerModel.showEditForm\" [parentContext]=\"context\" [parentModel]=\"model\"\r\n [model]=\"fileViewerModel\">\r\n</file-viewer>\r\n\r\n<ng-template #messageItem let-i=\"i\" let-isPinnedMessage=\"isPinnedMessage\" let-item=\"item\">\r\n <img *ngIf=\"item.isFirstMessageFlow && item.type != 'own' && !isPinnedMessage && item.avatar != null\" alt=\"\"\r\n class=\"chat-avatar\" src=\"{{getCurrentUserAvatar(item.avatar)}}\">\r\n <p *ngIf=\"(item.isFirstMessageFlow && item.type != 'own') && !isPinnedMessage\" class=\"message-created-by\">\r\n {{item.fullName}}\r\n </p>\r\n <span *ngIf=\"!hasAttachment(item)\">\r\n <!-- [class]=\"addClassToMessage(item, isPinnedMessage)\">-->\r\n <p *ngIf=\"!hasAttachment(item)\" class=\"message-content\">\r\n <i (click)=\"pinMessage(item)\" class=\"fas fa-thumbtack\" style=\"right: 0;\"></i>\r\n <i (click)=\"quickNote(item)\" class=\"fas fa-sticky-note\"></i>\r\n {{item.content}}\r\n </p>\r\n <p *ngIf=\"!isPinnedMessage && (item.isLastMessageFlow || !inTheSameTime(i, item, model.dataSource))\"\r\n class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n <p *ngIf=\"isPinnedMessage\" class=\"message-created\">\r\n {{item.createdBy}} \u0111\u00E3 g\u1EEDi l\u00FAc {{item.created | date:'dd/MM/yyyy HH:mm'}}\r\n </p>\r\n </span>\r\n <ng-container *ngIf=\"hasAttachment(item)\">\r\n <ng-container *ngFor=\"let attachmentItem of item.attachments;let index=index\">\r\n <div class=\"file\"\r\n [ngClass]=\"{'first':item.isFirstMessageFlow && index == 0, 'middle':index > 0 || !item.isFirstMessageFlow, 'image' : attachmentItem.type == 'image'}\"\r\n [ngStyle]=\"{'width': model.img[i + 'width' + index]}\">\r\n <p class=\"attachment\">\r\n <span (mouseup)=\"onMouseUp($event)\" class=\"attachment-item\">\r\n <a *ngIf=\"attachmentItem.type != 'image'\" (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <i class=\"fas fa-paperclip\"></i>{{attachmentItem.fileName}}\r\n </a>\r\n <a *ngIf=\"attachmentItem.type == 'image'\" #aElement\r\n [ngClass]=\"{'hidden': !model.img[i + '' + index], 'visible':model.img[i + '' + index]}\"\r\n (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <img class=\"message-img\" (load)=\"loadImg($event, i, index)\"\r\n [src]=\"attachmentItem.url | secure | async\" />\r\n </a>\r\n </span>\r\n </p>\r\n <div style=\"clear: both\"></div>\r\n <p class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n </div>\r\n <div style=\"clear: both\"></div>\r\n </ng-container>\r\n </ng-container>\r\n <after-view-checked *ngIf=\"model.dataSource.length == i + 1\" (loading)=\"scrollToBottom(0, false, item.sent)\">\r\n </after-view-checked>\r\n</ng-template>\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\"-->\r\n<!-- (onCancel)=\"userPickerForm.show = false\"-->\r\n<!-- (onHide)=\"userPickerForm.show = false\">-->\r\n<!-- <!– <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"–>-->\r\n<!-- <!– (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"–>-->\r\n<!-- <!– (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>–>-->\r\n<!-- <user-picker-box #formBase [control]=\"userPickerControl\"-->\r\n<!-- [(ngModel)]=\"this.peopleAll\" [multiple]=\"userPickerControl.multiple\">-->\r\n<!-- </user-picker-box>-->\r\n<!--</tn-dialog>-->\r\n\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\" (onHide)=\"userPickerForm.show == false\">-->\r\n<!-- <!– <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"–>-->\r\n<!-- <!– (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"–>-->\r\n<!-- <!– (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>–>-->\r\n\r\n<!-- <!–<quick-add-form *ngIf=\"model.editFormModel.showQuickNoteForm\" [parentContext]=\"context\"–>-->\r\n<!-- <!– [parentModel]=\"context.data.noteDataModel\"></quick-add-form>–>-->\r\n<!--</tn-dialog>-->",
|
|
28345
28607
|
providers: [ComponentContextService, CheckControlVisibleService],
|
|
28346
|
-
styles: [".paging-advance{list-style:none;margin:3px 0;padding-left:0}.paging-advance li{line-height:30;padding-left:15px;width:150px}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{background:none;cursor:default}.paging-advance li:hover{background:red;cursor:pointer}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{left:1.25em;margin-left:-10;right:auto}.paging-advance-overlay.ui-overlaypanel-shifted:after{left:1.25em;margin-left:-8px;right:auto}.chat-avatar{border:2px solid #eee;height:36px}", "@charset \"UTF-8\";@import url(C:\\Users\\Hi\\Desktop\\Proj\\shared\\AppSharedV5\\projects\\tnx-shared\\src\\lib\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(C:\\Users\\Hi\\Desktop\\Proj\\shared\\AppSharedV5\\projects\\tnx-shared\\src\\lib\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
28608
|
+
styles: [".paging-advance{list-style:none;margin:3px 0;padding-left:0}.paging-advance li{line-height:30;padding-left:15px;width:150px}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{background:none;cursor:default}.paging-advance li:hover{background:red;cursor:pointer}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{left:1.25em;margin-left:-10;right:auto}.paging-advance-overlay.ui-overlaypanel-shifted:after{left:1.25em;margin-left:-8px;right:auto}.chat-avatar{border:2px solid #eee;height:36px}", "@charset \"UTF-8\";@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
28347
28609
|
},] }
|
|
28348
28610
|
];
|
|
28349
28611
|
ChatBoxComponent.ctorParameters = function () { return [
|
|
@@ -28949,7 +29211,7 @@
|
|
|
28949
29211
|
selector: 'chat-send-message-box',
|
|
28950
29212
|
template: "<div class=\"dashboard\" (mouseup)=\"onMouseUp($event)\">\r\n <div class=\"chat\">\r\n <div class=\"new-message\">\r\n <div class=\"message-emotion\">\r\n <i class=\"far fa-smile\" style=\"color: gray;\" disabled=\"true\"></i>\r\n </div>\r\n <div class=\"message-attachment\" pTooltip=\"\u0110\u00EDnh k\u00E8m file\" tooltipPosition=\"top\" (click)=\"op.toggle($event)\">\r\n <i class=\"fas fa-paperclip\"></i>\r\n </div>\r\n <p-overlayPanel #op [dismissable]=\"true\" [appendTo]=\"'body'\" [styleClass]=\"'paging-advance-overlay'\"\r\n (mouseup)=\"onMouseUp($event)\">\r\n <ul class=\"paging-advance\">\r\n <li (click)=\"browseFileFromPersonal()\">T\u1EEB file c\u00E1 nh\u00E2n</li>\r\n <li (click)=\"browseFileFromComputer()\">T\u1EA3i l\u00EAn t\u1EEB m\u00E1y t\u00EDnh</li>\r\n </ul>\r\n </p-overlayPanel>\r\n <div class=\"message-input p-float-label\">\r\n <input #input pInputText\r\n id=\"message\"\r\n autocomplete=\"off\" autocorrect=\"off\"\r\n spellcheck=\"false\" class=\"ui-inputtext\"\r\n type=\"text\" placeholder=\"N\u1ED9i dung tin nh\u1EAFn\"\r\n [(ngModel)]=\"model.content\"\r\n (keyup.enter)=\"onSendMessage($event.target.value)\" (keydown.shift.tab)=\"cancelBlur($event)\"\r\n (keydown.tab)=\"cancelBlur($event)\" (paste)=\"handlePaste($event)\" (click)=\"clickInputText()\"/>\r\n </div>\r\n <div>\r\n <button pButton class=\"p-button-danger\" icon=\"fas fa-send\" type=\"button\" label=\"G\u1EEDi\"\r\n (click)=\"onSendMessage(model.content)\">\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"attachment-list\" [ngClass]=\"model.classHasAttachment\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'height': '100px'}\">\r\n <div *ngFor=\"let item of model.attachments\" class=\"attachment-item\">\r\n <img *ngIf=\"item.type == 'image'\" [src]=\"item.url | safeUrl\"/>\r\n <span *ngIf=\"item.type == 'file'\">{{item.fileName}}</span>\r\n <i class=\"far fa-times-circle label-danger remove-file-attachment\"\r\n (click)=\"removeAttachment(item)\"></i>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <!-- <div class=\"clearfix\"></div>-->\r\n </div>\r\n </div>\r\n</div>\r\n<p-fileUpload [ngStyle]=\"{'display': 'none'}\" #fileElement (onSelect)=\"onSelectFileFromComputer($event)\"\r\n multiple=\"multiple\" name=\"fileUpload\" [maxFileSize]=\"model.maxFileSize\" auto=\"false\">\r\n</p-fileUpload>\r\n\r\n<!-- <app-drive-file-dialog *ngIf=\"model.driveFileDialog.show\" [parentDataContext]=\"dataContext\"\r\n []=\"model.driveFileDialog\" #driveFileDialog>\r\n</app-drive-file-dialog> -->\r\n",
|
|
28951
29213
|
providers: [ComponentContextService],
|
|
28952
|
-
styles: ["", "@charset \"UTF-8\";@import url(C:\\Users\\Hi\\Desktop\\Proj\\shared\\AppSharedV5\\projects\\tnx-shared\\src\\lib\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(C:\\Users\\Hi\\Desktop\\Proj\\shared\\AppSharedV5\\projects\\tnx-shared\\src\\lib\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
29214
|
+
styles: ["", "@charset \"UTF-8\";@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
28953
29215
|
},] }
|
|
28954
29216
|
];
|
|
28955
29217
|
ChatSendMessageBoxComponent.ctorParameters = function () { return [
|
|
@@ -31693,69 +31955,6 @@
|
|
|
31693
31955
|
{ type: i0.Injector }
|
|
31694
31956
|
]; };
|
|
31695
31957
|
|
|
31696
|
-
var GlobalService = /** @class */ (function () {
|
|
31697
|
-
function GlobalService() {
|
|
31698
|
-
this._state = true;
|
|
31699
|
-
this._headerState = true;
|
|
31700
|
-
this._menuState = true;
|
|
31701
|
-
this._advanceSearchState = false;
|
|
31702
|
-
this._advanceSearch = new rxjs.Subject();
|
|
31703
|
-
this._hasAdvanceFilter = new rxjs.Subject();
|
|
31704
|
-
this._searchKeyWithoutAdvance = new rxjs.Subject();
|
|
31705
|
-
}
|
|
31706
|
-
GlobalService.prototype.setSearchKeyWithoutAdvance = function (key) {
|
|
31707
|
-
this._searchKeyWithoutAdvance.next(key);
|
|
31708
|
-
};
|
|
31709
|
-
GlobalService.prototype.getSearchKeyWithoutAdvance = function () {
|
|
31710
|
-
return this._searchKeyWithoutAdvance;
|
|
31711
|
-
};
|
|
31712
|
-
GlobalService.prototype.setSearchBoxState = function (state) {
|
|
31713
|
-
this._state = state;
|
|
31714
|
-
};
|
|
31715
|
-
GlobalService.prototype.getSearchBoxState = function () {
|
|
31716
|
-
return this._state;
|
|
31717
|
-
};
|
|
31718
|
-
GlobalService.prototype.setHeaderState = function (state) {
|
|
31719
|
-
this._headerState = state;
|
|
31720
|
-
};
|
|
31721
|
-
GlobalService.prototype.getHeaderState = function () {
|
|
31722
|
-
return this._headerState;
|
|
31723
|
-
};
|
|
31724
|
-
GlobalService.prototype.setMenuState = function (state) {
|
|
31725
|
-
this._menuState = state;
|
|
31726
|
-
};
|
|
31727
|
-
GlobalService.prototype.getMenuState = function () {
|
|
31728
|
-
return this._menuState;
|
|
31729
|
-
};
|
|
31730
|
-
GlobalService.prototype.setAdvanceSearchStateWithoutFireEvent = function (state) {
|
|
31731
|
-
this._advanceSearchState = state;
|
|
31732
|
-
};
|
|
31733
|
-
GlobalService.prototype.toggleAdvanceSearchState = function (evt) {
|
|
31734
|
-
this._advanceSearchState = !this._advanceSearchState;
|
|
31735
|
-
this._advanceSearch.next({ state: this._advanceSearchState, event: evt });
|
|
31736
|
-
};
|
|
31737
|
-
GlobalService.prototype.getAdvanceSearch = function () {
|
|
31738
|
-
return this._advanceSearch;
|
|
31739
|
-
};
|
|
31740
|
-
GlobalService.prototype.setAdvanceFilter = function (state) {
|
|
31741
|
-
this._hasAdvanceFilter.next({ type: 'hasAdvanceFilter', state: state });
|
|
31742
|
-
};
|
|
31743
|
-
GlobalService.prototype.setAdvanceFilterBox = function (state) {
|
|
31744
|
-
this._hasAdvanceFilter.next({ type: 'hasAdvanceFilterBox', state: state });
|
|
31745
|
-
};
|
|
31746
|
-
GlobalService.prototype.advanceFilterEvent = function () {
|
|
31747
|
-
return this._hasAdvanceFilter;
|
|
31748
|
-
};
|
|
31749
|
-
return GlobalService;
|
|
31750
|
-
}());
|
|
31751
|
-
GlobalService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GlobalService_Factory() { return new GlobalService(); }, token: GlobalService, providedIn: "root" });
|
|
31752
|
-
GlobalService.decorators = [
|
|
31753
|
-
{ type: i0.Injectable, args: [{
|
|
31754
|
-
providedIn: 'root'
|
|
31755
|
-
},] }
|
|
31756
|
-
];
|
|
31757
|
-
GlobalService.ctorParameters = function () { return []; };
|
|
31758
|
-
|
|
31759
31958
|
var StorageService = /** @class */ (function () {
|
|
31760
31959
|
function StorageService(_moduleConfigService) {
|
|
31761
31960
|
this._moduleConfigService = _moduleConfigService;
|
|
@@ -32735,8 +32934,6 @@
|
|
|
32735
32934
|
this.showRejectConfirm = true;
|
|
32736
32935
|
this.keyPressPermissionUtils = 'ppppppppp';
|
|
32737
32936
|
this.currentKeyPressIndex = 0;
|
|
32738
|
-
this.EnumTypeSplash = exports.EnumTypeSplash;
|
|
32739
|
-
this.layoutLoadingPage = exports.EnumTypeSplash.NEW_V1;
|
|
32740
32937
|
this.environment = this._moduleConfigService.getConfig().environment;
|
|
32741
32938
|
this.appCode = this._moduleConfigService.getConfig().appCode;
|
|
32742
32939
|
if (this.environment.keyPressPermissionUtils) {
|
|
@@ -32867,12 +33064,6 @@
|
|
|
32867
33064
|
this._componentContextService.subscribe(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, function (data) {
|
|
32868
33065
|
_this.showRejectConfirm = data;
|
|
32869
33066
|
});
|
|
32870
|
-
if (!this.environment.splashScreen || this.environment.splashScreen == '') {
|
|
32871
|
-
this.layoutLoadingPage = exports.EnumTypeSplash.DEFAULT;
|
|
32872
|
-
}
|
|
32873
|
-
else {
|
|
32874
|
-
this.layoutLoadingPage = this.environment.splashScreen;
|
|
32875
|
-
}
|
|
32876
33067
|
}
|
|
32877
33068
|
CommonAppComponentComponent.prototype.ngOnInit = function () {
|
|
32878
33069
|
var _this = this;
|
|
@@ -33429,7 +33620,7 @@
|
|
|
33429
33620
|
CommonAppComponentComponent.decorators = [
|
|
33430
33621
|
{ type: i0.Component, args: [{
|
|
33431
33622
|
selector: 'common-app-component',
|
|
33432
|
-
template: "<
|
|
33623
|
+
template: "<div *ngIf=\"pageLoaded\" [style.display]=\"pageLoaded ? '' : 'none'\" class=\"layout-wrapper\"\r\n (click)=\"_commonService.onLayoutClick()\" [ngClass]=\"{'menu-layout-static': !_commonService.isOverlay(),\r\n 'menu-layout-overlay': _commonService.isOverlay(),\r\n 'layout-menu-overlay-active': _commonService.overlayMenuActive,\r\n 'menu-layout-horizontal': _commonService.isHorizontal(),\r\n 'menu-layout-slim': _commonService.isSlim(),\r\n 'layout-menu-static-desktop-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-desktop-active': !_commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-mobile-inactive': !_commonService.staticMenuMobileActive,\r\n 'layout-menu-static-mobile-active': _commonService.staticMenuMobileActive,\r\n 'layout-menu-static-inactive': _commonService.staticMenuDesktopInactive,\r\n 'layout-menu-static-active': _commonService.staticMenuMobileActive}\">\r\n\r\n <app-topbar *ngIf=\"_globalService.getHeaderState()\"></app-topbar>\r\n\r\n <div *ngIf=\"_globalService.getMenuState()\" class=\"layout-menu-container\"\r\n [ngClass]=\"{'layout-menu-dark':_commonService.darkMenu}\" (click)=\"_commonService.onMenuClick($event)\">\r\n <app-root-menu></app-root-menu>\r\n <div class=\"layout-menu-block\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'padding-top': '16px'}\">\r\n <app-inline-profile *ngIf=\"_commonService.profileMode == 'inline' &&!_commonService.isHorizontal()\">\r\n </app-inline-profile>\r\n <app-menu [reset]=\"_commonService.resetMenu\" (onMenuActive)=\"handleMenuActive($event)\"></app-menu>\r\n </tn-custom-scrollbar>\r\n </div>\r\n <div class=\"search-area layout-menu-search-area\">\r\n <p-autoComplete [(ngModel)]=\"searchMenuInput\" [style]=\"{'width':'100%'}\" [suggestions]=\"searchMenuResult\"\r\n (completeMethod)=\"onSearchMenu($event)\" [autoHighlight]=\"true\"\r\n [placeholder]=\"'T\u00ECm ki\u1EBFm ch\u1EE9c n\u0103ng' | translate\" [delay]=\"200\" [scrollHeight]=\"'400px'\"\r\n class=\"search-input\" [readonly]=\"!(menuModel && menuModel.length)\"\r\n (onSelect)=\"onSelectMenuSuggestion($event)\" field=\"label\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div innerHTML=\"{{ item.label | highlight : searchMenuInput}}\"></div>\r\n </ng-template>\r\n </p-autoComplete>\r\n <span class=\"icon-search\"><i class=\"pi pi-search\"></i></span>\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"'layout-main'\" [ngClass]=\"{'no-header': _globalService.getHeaderState() ? false : true}\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <div class=\"layout-mask\"></div>\r\n <div #quickNoteBt *ngIf=\"!onlyShowMainContent && showQuickNote\" class=\"quick-note-button-holder\" cdkDrag\r\n cdkDragBoundary=\".layout-wrapper\" oncontextmenu=\"return false\" (cdkDragEnded)=\"quickNoteDropped($event)\"\r\n (cdkDragStarted)=\"quickNoteStarted($event)\">\r\n <a #quickNoteBt1 href=\"javascript:;\" class=\"all-note-button\" tabindex=\"0\" (click)=\"quickNoteShowAllNotes()\">\r\n <i class=\"fas fa-sticky-note\"></i></a>\r\n <a #quickNoteBt2 href=\"javascript:;\" class=\"setting-note-button\" tabindex=\"0\" (click)=\"quickNoteShowSettings()\">\r\n <i class=\"fas fa-cog\"></i></a>\r\n <a href=\"javascript:;\" (press)=\"quickNotePress($event)\" (pressup)=\"quickNotePressUp($event)\"\r\n class=\"quick-note-button\" tabindex=\"0\" (click)=\"quickNoteAddNote()\">\r\n <i class=\"fas fa-plus\"></i></a>\r\n </div>\r\n <div #pinnedNotes *ngIf=\"!onlyShowMainContent\" class=\"pinned-notes-holder\" cdkDrag cdkDragBoundary=\".layout-wrapper\"\r\n oncontextmenu=\"return false\" (cdkDragEnded)=\"pinnedNotesDropped($event)\"\r\n (cdkDragStarted)=\"pinnedNotesStarted($event)\">\r\n <div class=\"pinned-notes ui-g\" tabindex=\"0\">\r\n <div *ngIf=\"pinnedNotesMinimizeStatus\" class=\"pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-maximize\"></i>\r\n </div>\r\n <div *ngIf=\"pinnedNotesMaximizeStatus\" class=\" pinned-notes-minimize-button\"\r\n (click)=\"pinnedNotesMinimize(pinnedNotesMinimizeStatus)\">\r\n <i class=\"pi pi-window-minimize\"></i>\r\n </div>\r\n <div *ngFor=\"let note of pinnedNoteData\" class=\"pinned-note ui-g-12\">\r\n <div class=\"pinned-note-header-line\" [style.background-color]=\"note.colorCode\">\r\n </div>\r\n <div class=\"pinned-note-body\">\r\n <span class=\"pinned-note-line-title\" [style.paddingBottom]=\"note.titlePaddingBottom\">\r\n <div class=\"pinned-note-header-right\">\r\n <span class=\"pinned-note-header-time\">{{note.created | date: 'dd/MM'}}</span>\r\n <img src=\"../assets/layout/images/ico/unpin-1.ico\" class=\"pinned-note-header-button-unpin\"\r\n (click)=\"unPinNote(note)\">\r\n <i *ngIf=\"!note.isCompleted\" class=\"far fa-flag pinned-note-header-button-complete\"\r\n (click)=\"completeNote(note)\"></i>\r\n <i *ngIf=\"note.isCompleted\" class=\"fas fa-flag-checkered pinned-note-header-button-complete\"\r\n (click)=\"inCompleteNote(note)\"></i>\r\n </div>\r\n <div>{{note.name}}</div>\r\n </span>\r\n <div class=\"pinned-note-contents\" [style.display]=\"note.contentDisplay\">\r\n <span *ngFor=\"let content of note.contents\" class=\"pinned-note-line\">\r\n {{content}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <report-queue [header]=\"'Xu\u1EA5t d\u1EEF li\u1EC7u'\">\r\n </report-queue>\r\n</div>\r\n<div class=\"waiting-box\" [class.show]=\"waiting\">\r\n <div class=\"overlay\"></div>\r\n <div class=\"content-loading\">\r\n <div class=\"lds-ellipsis\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <div class=\"message-loading\">\r\n <span *ngFor=\"let x of messageWaiting\">{{x}}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<p-toast [position]=\"'top-right'\" [autoZIndex]=\"true\"></p-toast>\r\n<p-confirmDialog #cd [closable]=\"false\">\r\n <p-footer>\r\n <button #okButton type=\"button\" pButton icon=\"pi pi-check\" class=\"p-button-rounded p-button-text\" label=\"\u0110\u1ED3ng \u00FD\"\r\n (keydown.shift.tab)=\"focusTrap($event, false)\" (click)=\"cd.accept()\"></button>\r\n <button *ngIf=\"showRejectConfirm\" #cancelButton type=\"button\" pButton class=\"p-button-rounded p-button-text p-button-secondary\"\r\n icon=\"pi pi-times\" label=\"B\u1ECF qua\" (keydown.tab)=\"focusTrap($event, true)\" (click)=\"cd.reject()\"></button>\r\n </p-footer>\r\n</p-confirmDialog>\r\n<!-- <user-action-manager></user-action-manager> -->\r\n<permission-utils *ngIf=\"rootData.showPermissionUtils\"></permission-utils>\r\n",
|
|
33433
33624
|
providers: [ComponentContextService, EntityMetadataService],
|
|
33434
33625
|
styles: [".layout-menu-search-area{position:relative}.icon-search{align-items:center;background-color:transparent;box-shadow:none;color:#888;display:flex;font-size:14px;height:100%;justify-content:center;position:absolute;right:0;top:0;width:30px}.layout-menu-static-inactive .search-area{margin-left:-303px}.layout-menu-container{bottom:0;display:flex;flex-direction:column;height:auto;overflow:hidden;top:60px}.layout-menu-block{display:flex;flex:1;overflow:hidden}.layout-menu-block>tn-custom-scrollbar{width:100%}::ng-deep .layout-menu-search-area .ui-inputtext{border-color:#dadada;border-radius:0;padding-right:40px;width:calc(100% + 1px)}::ng-deep .layout-menu-search-area .ui-inputtext:not(:focus){box-shadow:none}::ng-deep .layout-menu-search-area input{border-left:0;border-radius:0;border-right:0;width:100%}::ng-deep .layout-menu-search-area .p-autocomplete-panel{max-width:100%}::ng-deep .layout-menu-search-area .p-autocomplete-item{white-space:normal}::ng-deep .layout-menu-search-area .p-autocomplete-item mark{background-color:var(--tn-primary-color);border-radius:0;color:#fff;padding:0}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.waiting-box .content-loading .lds-ellipsis{display:inline-block;height:60px;position:relative;width:80px}.waiting-box .content-loading .lds-ellipsis div{-webkit-animation-timing-function:cubic-bezier(0,1,1,0);animation-timing-function:cubic-bezier(0,1,1,0);background:#fff;border-radius:50%;height:13px;position:absolute;top:33px;width:13px}.waiting-box .content-loading .lds-ellipsis div:first-child{-webkit-animation:lds-ellipsis1 .6s infinite;animation:lds-ellipsis1 .6s infinite;left:8px}.waiting-box .content-loading .lds-ellipsis div:nth-child(2){-webkit-animation:lds-ellipsis2 .6s infinite;animation:lds-ellipsis2 .6s infinite;left:8px}.waiting-box .content-loading .lds-ellipsis div:nth-child(3){-webkit-animation:lds-ellipsis2 .6s infinite;animation:lds-ellipsis2 .6s infinite;left:32px}.waiting-box .content-loading .lds-ellipsis div:nth-child(4){-webkit-animation:lds-ellipsis3 .6s infinite;animation:lds-ellipsis3 .6s infinite;left:56px}.waiting-box .message-loading{font-size:1.75em}.waiting-box .message-loading span{-webkit-animation:message-opacity 1s infinite;animation:message-opacity 1s infinite;color:#fff;margin-right:1px}.waiting-box .message-loading span:last-child{margin-right:0}.waiting-box .message-loading span:nth-child(16n+1){-webkit-animation-delay:0;-webkit-animation-delay:0s;animation-delay:0;animation-delay:0s}.waiting-box .message-loading span:nth-child(16n+2){-webkit-animation-delay:.1s;animation-delay:.1s}.waiting-box .message-loading span:nth-child(16n+3){-webkit-animation-delay:.2s;animation-delay:.2s}.waiting-box .message-loading span:nth-child(16n+4){-webkit-animation-delay:.3s;animation-delay:.3s}.waiting-box .message-loading span:nth-child(16n+5){-webkit-animation-delay:.4s;animation-delay:.4s}.waiting-box .message-loading span:nth-child(16n+6){-webkit-animation-delay:.5s;animation-delay:.5s}.waiting-box .message-loading span:nth-child(16n+7){-webkit-animation-delay:.6s;animation-delay:.6s}.waiting-box .message-loading span:nth-child(16n+8){-webkit-animation-delay:.7s;animation-delay:.7s}.waiting-box .message-loading span:nth-child(16n+9){-webkit-animation-delay:.8s;animation-delay:.8s}.waiting-box .message-loading span:nth-child(16n+10){-webkit-animation-delay:.9s;animation-delay:.9s}.waiting-box .message-loading span:nth-child(16n+11){-webkit-animation-delay:1s;animation-delay:1s}.waiting-box .message-loading span:nth-child(16n+12){-webkit-animation-delay:1.1s;animation-delay:1.1s}.waiting-box .message-loading span:nth-child(16n+13){-webkit-animation-delay:1.2s;animation-delay:1.2s}.waiting-box .message-loading span:nth-child(16n+14){-webkit-animation-delay:1.3s;animation-delay:1.3s}.waiting-box .message-loading span:nth-child(16n+15){-webkit-animation-delay:1.4s;animation-delay:1.4s}.waiting-box .message-loading span:nth-child(16n+16){-webkit-animation-delay:1.5s;animation-delay:1.5s}.waiting-box.show{display:block}@-webkit-keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes lds-ellipsis1{0%{transform:scale(0)}to{transform:scale(1)}}@-webkit-keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes lds-ellipsis3{0%{transform:scale(1)}to{transform:scale(0)}}@-webkit-keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(24px)}}@keyframes lds-ellipsis2{0%{transform:translate(0)}to{transform:translate(24px)}}@-webkit-keyframes message-opacity{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes message-opacity{0%{opacity:1}50%{opacity:.5}to{opacity:1}}"]
|
|
33435
33626
|
},] }
|
|
@@ -34242,7 +34433,7 @@
|
|
|
34242
34433
|
])
|
|
34243
34434
|
])
|
|
34244
34435
|
],
|
|
34245
|
-
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}}"]
|
|
34436
|
+
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}}"]
|
|
34246
34437
|
},] }
|
|
34247
34438
|
];
|
|
34248
34439
|
AdvanceSearchComponent.ctorParameters = function () { return [
|
|
@@ -36175,7 +36366,7 @@
|
|
|
36175
36366
|
{ type: i0.Component, args: [{
|
|
36176
36367
|
selector: 'query-builder',
|
|
36177
36368
|
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>",
|
|
36178
|
-
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}}"]
|
|
36369
|
+
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}}"]
|
|
36179
36370
|
},] }
|
|
36180
36371
|
];
|
|
36181
36372
|
QueryBuilderComponent.ctorParameters = function () { return [
|
|
@@ -43584,220 +43775,6 @@
|
|
|
43584
43775
|
{ type: GlobalService }
|
|
43585
43776
|
]; };
|
|
43586
43777
|
|
|
43587
|
-
var SplashComponentComponent = /** @class */ (function (_super) {
|
|
43588
|
-
__extends(SplashComponentComponent, _super);
|
|
43589
|
-
function SplashComponentComponent(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
43590
|
-
var _this = _super.call(this, injector) || this;
|
|
43591
|
-
_this._moduleConfigService = _moduleConfigService;
|
|
43592
|
-
_this._permissionService = _permissionService;
|
|
43593
|
-
_this._deviceDetectorService = _deviceDetectorService;
|
|
43594
|
-
_this._userService = _userService;
|
|
43595
|
-
_this._router = _router;
|
|
43596
|
-
_this._authenService = _authenService;
|
|
43597
|
-
_this._globalService = _globalService;
|
|
43598
|
-
_this.defaultAvatar = '';
|
|
43599
|
-
_this.appSwitcherItems = [];
|
|
43600
|
-
_this.loaded = false;
|
|
43601
|
-
_this.currentDate = new Date();
|
|
43602
|
-
_this.showDefaultSetting = false;
|
|
43603
|
-
_this.fileApi = '';
|
|
43604
|
-
_this.isOnMobile = false;
|
|
43605
|
-
_this.EnumTypeSplash = exports.EnumTypeSplash;
|
|
43606
|
-
_this.uiSplash = exports.EnumTypeSplash.DEFAULT;
|
|
43607
|
-
_this.daysInWeek = ['Chủ nhật', 'Thứ hai', 'Thứ ba', 'Thứ tư', 'Thứ năm', 'Thứ sáu', 'Thứ bảy'];
|
|
43608
|
-
_this.rootContext.fireEvent('MAIN_CONTENT_ONLY', true);
|
|
43609
|
-
_this.environment = _this._moduleConfigService.getConfig().environment;
|
|
43610
|
-
_this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
|
|
43611
|
-
_this.fileApi = _this.environment.apiDomain.fileEndpoint;
|
|
43612
|
-
setInterval(function () {
|
|
43613
|
-
_this.currentDate = new Date();
|
|
43614
|
-
}, 1000);
|
|
43615
|
-
if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
43616
|
-
_this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
43617
|
-
}
|
|
43618
|
-
else {
|
|
43619
|
-
if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
43620
|
-
_this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
|
|
43621
|
-
}
|
|
43622
|
-
else {
|
|
43623
|
-
_this.showDefaultSetting = false;
|
|
43624
|
-
}
|
|
43625
|
-
}
|
|
43626
|
-
if (!_this.environment.splashScreen || _this.environment.splashScreen == '') {
|
|
43627
|
-
_this.uiSplash = exports.EnumTypeSplash.DEFAULT;
|
|
43628
|
-
}
|
|
43629
|
-
else {
|
|
43630
|
-
_this.uiSplash = _this.environment.splashScreen;
|
|
43631
|
-
}
|
|
43632
|
-
// Config for authentication
|
|
43633
|
-
_this._globalService.setHeaderState(false);
|
|
43634
|
-
_this._globalService.setMenuState(false);
|
|
43635
|
-
return _this;
|
|
43636
|
-
}
|
|
43637
|
-
SplashComponentComponent.prototype.ngOnInit = function () {
|
|
43638
|
-
var _this = this;
|
|
43639
|
-
if (this._deviceDetectorService.isMobile()) {
|
|
43640
|
-
this.isOnMobile = true;
|
|
43641
|
-
}
|
|
43642
|
-
if (this.rootContext.data.currentUser) {
|
|
43643
|
-
if (this.rootContext.data.currentUser.gender == 0) {
|
|
43644
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
43645
|
-
}
|
|
43646
|
-
else {
|
|
43647
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
43648
|
-
}
|
|
43649
|
-
}
|
|
43650
|
-
this.rootContext.replaySubscribe(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
|
|
43651
|
-
_this.currentUser = _this._userService.getCurrentUser();
|
|
43652
|
-
_this.loadAppMetadata();
|
|
43653
|
-
_this.loaded = true;
|
|
43654
|
-
});
|
|
43655
|
-
if (this.rootModel.allowAnonymous) {
|
|
43656
|
-
this.loaded = true;
|
|
43657
|
-
this.loadAppMetadata();
|
|
43658
|
-
}
|
|
43659
|
-
};
|
|
43660
|
-
SplashComponentComponent.prototype.loadAppMetadata = function () {
|
|
43661
|
-
var _this = this;
|
|
43662
|
-
var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
43663
|
-
var arr, _a, _b, _i, ind, element, clientId, isAuthorized;
|
|
43664
|
-
return __generator(this, function (_c) {
|
|
43665
|
-
switch (_c.label) {
|
|
43666
|
-
case 0:
|
|
43667
|
-
arr = [];
|
|
43668
|
-
_a = [];
|
|
43669
|
-
for (_b in this.environment.appMetadata.appSwitcher)
|
|
43670
|
-
_a.push(_b);
|
|
43671
|
-
_i = 0;
|
|
43672
|
-
_c.label = 1;
|
|
43673
|
-
case 1:
|
|
43674
|
-
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
43675
|
-
ind = _a[_i];
|
|
43676
|
-
element = this.environment.appMetadata.appSwitcher[ind];
|
|
43677
|
-
clientId = this.environment.authenticationSettings.clientId;
|
|
43678
|
-
if (!(this.rootModel.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
|
|
43679
|
-
arr.push(element);
|
|
43680
|
-
return [3 /*break*/, 4];
|
|
43681
|
-
case 2:
|
|
43682
|
-
if (!this.currentUser) return [3 /*break*/, 4];
|
|
43683
|
-
return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
|
|
43684
|
-
case 3:
|
|
43685
|
-
isAuthorized = _c.sent();
|
|
43686
|
-
if (isAuthorized) {
|
|
43687
|
-
arr.push(element);
|
|
43688
|
-
}
|
|
43689
|
-
_c.label = 4;
|
|
43690
|
-
case 4:
|
|
43691
|
-
_i++;
|
|
43692
|
-
return [3 /*break*/, 1];
|
|
43693
|
-
case 5:
|
|
43694
|
-
resolve(arr);
|
|
43695
|
-
return [2 /*return*/];
|
|
43696
|
-
}
|
|
43697
|
-
});
|
|
43698
|
-
}); });
|
|
43699
|
-
prmsAppSwicherItem.then(function (rs) {
|
|
43700
|
-
_this.appSwitcherItems.length = 0;
|
|
43701
|
-
if (rs) {
|
|
43702
|
-
rs.forEach(function (element) {
|
|
43703
|
-
if (element.visible) {
|
|
43704
|
-
if (!_this.currentUser) { // allow anonymous
|
|
43705
|
-
_this.appSwitcherItems.push(element);
|
|
43706
|
-
}
|
|
43707
|
-
else {
|
|
43708
|
-
if (_this.currentUser.maNguoiHoc && _this.currentUser.issuperuser.toLowerCase() != 'true') {
|
|
43709
|
-
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
43710
|
-
_this.appSwitcherItems.push(element);
|
|
43711
|
-
}
|
|
43712
|
-
}
|
|
43713
|
-
else {
|
|
43714
|
-
_this.appSwitcherItems.push(element);
|
|
43715
|
-
}
|
|
43716
|
-
}
|
|
43717
|
-
}
|
|
43718
|
-
});
|
|
43719
|
-
}
|
|
43720
|
-
});
|
|
43721
|
-
};
|
|
43722
|
-
SplashComponentComponent.prototype.switchApp = function (item) {
|
|
43723
|
-
this.loaded = false;
|
|
43724
|
-
if (item.target == '_blank') {
|
|
43725
|
-
if (!item.defaultRedirect) {
|
|
43726
|
-
item.defaultRedirect = '';
|
|
43727
|
-
}
|
|
43728
|
-
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
43729
|
-
if (item.url == item.defaultRedirect) {
|
|
43730
|
-
item.url = '/' + item.code.toLowerCase();
|
|
43731
|
-
}
|
|
43732
|
-
var link = item.url + "/" + item.defaultRedirect;
|
|
43733
|
-
if (!link.startsWith('/') && !link.startsWith('http')) {
|
|
43734
|
-
link = '/' + link;
|
|
43735
|
-
}
|
|
43736
|
-
top.location.href = link;
|
|
43737
|
-
}
|
|
43738
|
-
else {
|
|
43739
|
-
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
43740
|
-
this._router.navigateByUrl(item.defaultRedirect);
|
|
43741
|
-
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
|
|
43742
|
-
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
43743
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
43744
|
-
}
|
|
43745
|
-
}
|
|
43746
|
-
}
|
|
43747
|
-
};
|
|
43748
|
-
SplashComponentComponent.prototype.logout = function () {
|
|
43749
|
-
this._authenService.logout();
|
|
43750
|
-
};
|
|
43751
|
-
SplashComponentComponent.prototype.goToPersonal = function () {
|
|
43752
|
-
var userMenu = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
|
|
43753
|
-
this.switchApp(userMenu);
|
|
43754
|
-
};
|
|
43755
|
-
SplashComponentComponent.prototype.getCurrentUserAvatar = function () {
|
|
43756
|
-
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
43757
|
-
return this.fileApi + "/file/public/" + this.rootContext.data.currentUser.avatar + "/Download";
|
|
43758
|
-
}
|
|
43759
|
-
else {
|
|
43760
|
-
return this.defaultAvatar;
|
|
43761
|
-
}
|
|
43762
|
-
};
|
|
43763
|
-
SplashComponentComponent.prototype.getNgayTrongTuan = function () {
|
|
43764
|
-
return this.daysInWeek[this.currentDate.getDay()];
|
|
43765
|
-
};
|
|
43766
|
-
SplashComponentComponent.prototype.showProfilePage = function () {
|
|
43767
|
-
if (this._userService.isSinhVienAccount()) {
|
|
43768
|
-
return false;
|
|
43769
|
-
}
|
|
43770
|
-
return true;
|
|
43771
|
-
};
|
|
43772
|
-
SplashComponentComponent.prototype.ngOnDestroy = function () {
|
|
43773
|
-
_super.prototype.ngOnDestroy.call(this);
|
|
43774
|
-
this._globalService.setHeaderState(true);
|
|
43775
|
-
this._globalService.setMenuState(true);
|
|
43776
|
-
};
|
|
43777
|
-
SplashComponentComponent.prototype.login = function () {
|
|
43778
|
-
this.rootContext.fireEvent('LOGIN');
|
|
43779
|
-
};
|
|
43780
|
-
return SplashComponentComponent;
|
|
43781
|
-
}(ComponentBase));
|
|
43782
|
-
SplashComponentComponent.decorators = [
|
|
43783
|
-
{ type: i0.Component, args: [{
|
|
43784
|
-
selector: 'splash-component',
|
|
43785
|
-
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}} 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>",
|
|
43786
|
-
providers: [ComponentContextService],
|
|
43787
|
-
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:8px;height:1em;left:50%;position:absolute;text-indent:-9999em;top:50%;transform:translate(-50%,-50%);width:1em}@-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}}"]
|
|
43788
|
-
},] }
|
|
43789
|
-
];
|
|
43790
|
-
SplashComponentComponent.ctorParameters = function () { return [
|
|
43791
|
-
{ type: i0.Injector },
|
|
43792
|
-
{ type: ModuleConfigService },
|
|
43793
|
-
{ type: PermissionService },
|
|
43794
|
-
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
43795
|
-
{ type: UserService },
|
|
43796
|
-
{ type: i3$1.Router },
|
|
43797
|
-
{ type: AuthenService },
|
|
43798
|
-
{ type: GlobalService }
|
|
43799
|
-
]; };
|
|
43800
|
-
|
|
43801
43778
|
var DynamicNodeComponent = /** @class */ (function (_super) {
|
|
43802
43779
|
__extends(DynamicNodeComponent, _super);
|
|
43803
43780
|
function DynamicNodeComponent(injector) {
|
|
@@ -47165,15 +47142,15 @@
|
|
|
47165
47142
|
TnAppNotificationComponent.prototype.goToLink = function (item) {
|
|
47166
47143
|
return __awaiter(this, void 0, void 0, function () {
|
|
47167
47144
|
var link;
|
|
47168
|
-
return __generator(this, function (
|
|
47169
|
-
switch (
|
|
47145
|
+
return __generator(this, function (_a) {
|
|
47146
|
+
switch (_a.label) {
|
|
47170
47147
|
case 0:
|
|
47171
47148
|
if (!!this.isReaded(item)) return [3 /*break*/, 2];
|
|
47172
47149
|
return [4 /*yield*/, this.readById(item)];
|
|
47173
47150
|
case 1:
|
|
47174
|
-
|
|
47151
|
+
_a.sent();
|
|
47175
47152
|
this.totalUnRead--;
|
|
47176
|
-
|
|
47153
|
+
_a.label = 2;
|
|
47177
47154
|
case 2:
|
|
47178
47155
|
// Save current path to go back
|
|
47179
47156
|
localStorage.setItem('currentUrl', top.location.href);
|
|
@@ -47209,8 +47186,10 @@
|
|
|
47209
47186
|
this.bounceNoti = false;
|
|
47210
47187
|
};
|
|
47211
47188
|
TnAppNotificationComponent.prototype.handleClicked = function () {
|
|
47212
|
-
|
|
47213
|
-
|
|
47189
|
+
if (!this.environment.clientDomain.thongbaoDomain) {
|
|
47190
|
+
return this._notifierService.showWarning('Thiếu cấu hình domain thông báo');
|
|
47191
|
+
}
|
|
47192
|
+
var thongBaoDomain = this.environment.clientDomain.thongbaoDomain + "/quanly-thongbao-noibo";
|
|
47214
47193
|
window.open(thongBaoDomain);
|
|
47215
47194
|
};
|
|
47216
47195
|
return TnAppNotificationComponent;
|
|
@@ -47849,7 +47828,7 @@
|
|
|
47849
47828
|
{ type: i0.Component, args: [{
|
|
47850
47829
|
selector: 'tn-tabview',
|
|
47851
47830
|
template: "<div [style.height]=\"height\">\r\n <p-tabView #tab orientation=\"top\" [styleClass]=\"styleClass\" [activeIndex]=\"currentTabIndex\"\r\n (onChange)=\"handleTabChange($event)\">\r\n <ng-container *ngFor=\"let item of data; let i = index\">\r\n <p-tabPanel *ngIf=\"!item.hidden\" [leftIcon]=\"item.icon\" [header]=\"item.label\"\r\n [headerStyleClass]=\"item.headerStyleClass\">\r\n <ng-container *ngIf=\"allowViewAll || currentTabIndex == i\">\r\n <tn-custom-scrollbar *ngIf=\"useScrollbar\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <ng-container *ngIf=\"!useScrollbar\">\r\n <ng-container *ngTemplateOutlet=\"template[item.code]; context: {$implicit: item}\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </p-tabPanel>\r\n </ng-container>\r\n </p-tabView>\r\n</div>",
|
|
47852
|
-
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}}"]
|
|
47831
|
+
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}}"]
|
|
47853
47832
|
},] }
|
|
47854
47833
|
];
|
|
47855
47834
|
TnTabViewComponent.ctorParameters = function () { return [
|
|
@@ -48563,7 +48542,7 @@
|
|
|
48563
48542
|
selector: 'user-picker-box',
|
|
48564
48543
|
template: "<div [ngClass]=\"{'p-grid p-m-0': controlSetting.userType == userType.CanBo}\" class=\"tn-l-user-picker-box\">\r\n <ng-template [ngIf]=\"controlSetting.userType == userType.CanBo\">\r\n <as-split [unit]=\"'pixel'\">\r\n <as-split-area [size]=\"330\">\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 \u0111\u01A1n v\u1ECB / ph\u00F2ng ban\" selectionMode=\"single\"\r\n [filter]=\"true\" [(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 </as-split-area>\r\n <as-split-area [size]=\"'*'\">\r\n <entity-picker-box #entityPickerBox [control]=\"control\" [parentSetting]=\"parentSetting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangedEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleDone($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n </as-split-area>\r\n </as-split>\r\n </ng-template>\r\n <ng-template [ngIf]=\"controlSetting.userType == userType.Normal\" style=\"width: 100%\">\r\n <entity-picker-box #entityPickerBox [control]=\"control\" [parentSetting]=\"parentSetting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onChanged)=\"handleChangedEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleDone($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n </ng-template>\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>",
|
|
48565
48544
|
providers: [ComponentContextService],
|
|
48566
|
-
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}}"]
|
|
48545
|
+
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}}"]
|
|
48567
48546
|
},] }
|
|
48568
48547
|
];
|
|
48569
48548
|
UserPickerBoxComponent.ctorParameters = function () { return [
|
|
@@ -52399,7 +52378,7 @@
|
|
|
52399
52378
|
selector: 'workflow-picker',
|
|
52400
52379
|
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 <div class=\"state-machines-container\">\r\n <statemachines-designer #designer [data]=\"dicMachinesData[wfCode]\" [viewOnly]=\"true\">\r\n </statemachines-designer>\r\n </div>\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>",
|
|
52401
52380
|
providers: [ComponentContextService],
|
|
52402
|
-
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.state-machines-container{border:1px solid #ced4da;border-radius:3px}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:sticky;text-align:right;z-index:10}"]
|
|
52381
|
+
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.state-machines-container{border:1px solid #ced4da;border-radius:3px}.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}"]
|
|
52403
52382
|
},] }
|
|
52404
52383
|
];
|
|
52405
52384
|
WorkflowPickerComponent.ctorParameters = function () { return [
|
|
@@ -52657,7 +52636,7 @@
|
|
|
52657
52636
|
selector: 'workflow-setting-new',
|
|
52658
52637
|
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>",
|
|
52659
52638
|
providers: [ComponentContextService],
|
|
52660
|
-
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}::ng-deep workflow-setting-new .crud-form-control div[role=checkbox-alone].taskInsideBusinessForm{margin-top:12px!important}"]
|
|
52639
|
+
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}::ng-deep workflow-setting-new .crud-form-control div[role=checkbox-alone].taskInsideBusinessForm{margin-top:12px!important}"]
|
|
52661
52640
|
},] }
|
|
52662
52641
|
];
|
|
52663
52642
|
WorkflowSettingNewComponent.ctorParameters = function () { return [
|
|
@@ -56556,27 +56535,6 @@
|
|
|
56556
56535
|
value: [{ type: i0.Input }]
|
|
56557
56536
|
};
|
|
56558
56537
|
|
|
56559
|
-
var LoadingPageV1Component = /** @class */ (function () {
|
|
56560
|
-
function LoadingPageV1Component() {
|
|
56561
|
-
}
|
|
56562
|
-
LoadingPageV1Component.prototype.ngOnInit = function () {
|
|
56563
|
-
};
|
|
56564
|
-
LoadingPageV1Component.prototype.clearStorage = function () {
|
|
56565
|
-
localStorage.clear();
|
|
56566
|
-
sessionStorage.clear();
|
|
56567
|
-
top.location.reload();
|
|
56568
|
-
};
|
|
56569
|
-
return LoadingPageV1Component;
|
|
56570
|
-
}());
|
|
56571
|
-
LoadingPageV1Component.decorators = [
|
|
56572
|
-
{ type: i0.Component, args: [{
|
|
56573
|
-
selector: 'loading-page-v1',
|
|
56574
|
-
template: "<div class=\"loading-page\">\r\n <div class=\"wrapper\">\r\n <section id=\"block-loading\">\r\n <div id=\"top\" class=\"mask\">\r\n <div class=\"plane\"></div>\r\n </div>\r\n\r\n <div id=\"middle\" class=\"mask\">\r\n <div class=\"plane\"></div>\r\n </div>\r\n\r\n <div id=\"bottom\" class=\"mask\">\r\n <div class=\"plane\"></div>\r\n </div>\r\n\r\n <p><i>LOADING...</i></p>\r\n </section>\r\n <h3>Vui l\u00F2ng T\u1EA3i l\u1EA1i trang ho\u1EB7c \u0110\u0103ng xu\u1EA5t t\u00E0i kho\u1EA3n n\u1EBFu th\u1EDDi gian ch\u1EDD qu\u00E1 l\u00E2u!</h3>\r\n <div class=\"wrp-btn\">\r\n <button class=\"\" onclick=\"javascript:location.reload(true)\">\r\n T\u1EA3i l\u1EA1i trang\r\n </button>\r\n <button class=\"\" onclick=\"clearStorage()\">\r\n X\u00F3a cache v\u00E0 t\u1EA3i l\u1EA1i trang\r\n </button>\r\n <button class=\"\" onclick=\"javascript:location.href ='/user/main/force-user-logout'\">\r\n \u0110\u0103ng xu\u1EA5t\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"night\">\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n <div class=\"shooting_star\"></div>\r\n </div>\r\n</div>\r\n",
|
|
56575
|
-
styles: [""]
|
|
56576
|
-
},] }
|
|
56577
|
-
];
|
|
56578
|
-
LoadingPageV1Component.ctorParameters = function () { return []; };
|
|
56579
|
-
|
|
56580
56538
|
function coreDeclaration() {
|
|
56581
56539
|
return [
|
|
56582
56540
|
AddressComponent,
|
|
@@ -56742,8 +56700,7 @@
|
|
|
56742
56700
|
TaiLieuComponent,
|
|
56743
56701
|
TaiLieuCuaToiComponent,
|
|
56744
56702
|
KhaiThacTaiLieuDungChungComponent,
|
|
56745
|
-
TnTemplateComponent
|
|
56746
|
-
LoadingPageV1Component
|
|
56703
|
+
TnTemplateComponent
|
|
56747
56704
|
];
|
|
56748
56705
|
}
|
|
56749
56706
|
function coreModuleImport() {
|
|
@@ -59000,7 +58957,6 @@
|
|
|
59000
58957
|
exports.LabelWorkflowCoreStatus = LabelWorkflowCoreStatus;
|
|
59001
58958
|
exports.LengthValidator = LengthValidator;
|
|
59002
58959
|
exports.ListHelperService = ListHelperService;
|
|
59003
|
-
exports.LoadingPageV1Component = LoadingPageV1Component;
|
|
59004
58960
|
exports.LocalCacheService = LocalCacheService;
|
|
59005
58961
|
exports.LowerCorrector = LowerCorrector;
|
|
59006
58962
|
exports.MA_THONG_BAO_PHAN_HE = MA_THONG_BAO_PHAN_HE;
|