tnx-shared 5.1.149 → 5.1.153
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 +188 -65
- 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-list-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/add-news/add-news.component.d.ts +1 -0
- package/components/add-news/add-news.component.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts +7 -2
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/components/file-explorer/file-picker-dialog/file-picker-dialog.component.d.ts +7 -1
- package/components/file-explorer/file-picker-dialog/file-picker-dialog.component.d.ts.map +1 -1
- package/components/tn-tinymce/tn-tinymce.component.d.ts +1 -0
- package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -0
- package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
- package/congviec/congviec/congviec.component.d.ts.map +1 -1
- package/esm2015/classes/base/data-list-base.js +3 -2
- package/esm2015/classes/form-schema.js +1 -1
- package/esm2015/components/add-news/add-news.component.js +10 -3
- package/esm2015/components/avatar-uploader/avatar-uploader.component.js +2 -2
- package/esm2015/components/crud/crud-form/crud-form.component.js +2 -2
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +46 -7
- package/esm2015/components/file-explorer/file-picker-dialog/file-picker-dialog.component.js +46 -8
- package/esm2015/components/tn-tinymce/tn-tinymce.component.js +6 -3
- package/esm2015/congviec/congviec/congviec-form/congviec-form.component.js +3 -2
- package/esm2015/congviec/congviec/congviec.component.js +6 -2
- package/esm2015/models/file-type.js +14 -0
- package/esm2015/services/base.service.js +2 -2
- package/esm2015/services/file-manager.service.js +18 -0
- package/esm2015/tnx-shared.js +39 -38
- package/fesm2015/tnx-shared.js +141 -22
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/file-type.d.ts +11 -0
- package/models/file-type.d.ts.map +1 -0
- package/package.json +2 -2
- package/services/file-manager.service.d.ts +9 -0
- package/services/file-manager.service.d.ts.map +1 -0
- package/services/file-manager.service.ngfactory.d.ts.map +1 -0
- package/tnx-shared.d.ts +38 -37
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -6668,7 +6668,7 @@
|
|
|
6668
6668
|
fields: fields,
|
|
6669
6669
|
pageInfo: {
|
|
6670
6670
|
page: 1,
|
|
6671
|
-
pageSize:
|
|
6671
|
+
pageSize: 999
|
|
6672
6672
|
},
|
|
6673
6673
|
sorts: sorts,
|
|
6674
6674
|
filters: filters ? filters : []
|
|
@@ -16346,7 +16346,7 @@
|
|
|
16346
16346
|
CrudFormComponent.decorators = [
|
|
16347
16347
|
{ type: i0.Component, args: [{
|
|
16348
16348
|
selector: 'crud-form',
|
|
16349
|
-
template: "<div [class]=\"_styleClass\">\r\n <form #formElement autocomplete=\"off\" autocorrect=\"off\" spellcheck=\"false\"\r\n [class]=\"'p-grid form-group crud-form' + (formClass ? ' ' + formClass : '')\"\r\n (keydown.shift.tab)=\"preventBlur($event)\">\r\n <div class=\"p-grid p-col-12\" style=\"margin: 0\">\r\n <ng-container *ngFor=\"let control of setting.schema\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customControl; context: {control: control, data: _modelData, parentPath: '', path: control.field, showLabel: control.showLabel, mdWidth: control.mdWidth}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </form>\r\n</div>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"buttonContexts\">\r\n</p-contextMenu>\r\n<ng-template #customControl let-data=\"data\" let-control=\"control\" let-showLabel=\"showLabel\" let-mdWidth=\"mdWidth\"\r\n let-rowIndex=\"index\" let-path=\"path\" let-parentPath=\"parentPath\" let-tablePath=\"tablePath\">\r\n <div *ngIf=\"!checkHidden(control, data, path)\" id=\"{{path}}-holder\"\r\n class=\"p-col-{{control.gWidth}} p-md-{{mdWidth}} {{control.class}} crud-form-control type-{{control.dataType}}\"\r\n [class.error]=\"data._errors[control.field].length > 0\"\r\n [class.not-show-in-box-holder]=\"control.showInBox === false\"\r\n [class.show-in-box-holder]=\"control.showInBox === true\" [ngStyle]=\"control.style\">\r\n <div class=\"label\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"control.label\" [pTooltip]=\"control.fullLabel\" tooltipPosition=\"top\">{{control.label}}\r\n <span *ngIf=\"control.required\" class=\"star-required\">*</span></label>\r\n <span *ngIf=\"control.description\" class=\"control-description\">({{control.description}})</span>\r\n </div>\r\n <ng-container [ngSwitch]=\"control.controlType\">\r\n <ng-container *ngSwitchCase=\"'label'\">\r\n <ng-container [ngTemplateOutlet]=\"labelControl\"\r\n [ngTemplateOutletContext]=\"{control: control, data: data}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'title'\">\r\n <label *ngIf=\"!control.ishtml\" [for]=\"control.for\">{{control.text | translate}}</label>\r\n <label *ngIf=\"control.ishtml\" [innerHTML]=\"control.text | translate\"></label>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div class=\"p-inputgroup\" *ngIf=\"control.suffFix\">\r\n <input (focus)=\"onFocusTextControl($event)\" [placeholder]=\"control.placeholder\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" pInputText\r\n [type]=\"control.dataFormat\" [(ngModel)]=\"data[control.field]\" [max]=\"control.max\"\r\n [min]=\"control.min\" [maxlength]=\"control.maxLength\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (key.enter)=\"handleFieldValueChange(control, $event, 'enter', data, parentPath)\" />\r\n <span class=\"p-inputgroup-addon\">({{control.suffFix}})</span>\r\n </div>\r\n <input *ngIf=\"!control.suffFix\" (focus)=\"onFocusTextControl($event)\" [placeholder]=\"control.placeholder\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" pInputText [type]=\"control.dataFormat\"\r\n [(ngModel)]=\"data[control.field]\" [max]=\"control.max\" [min]=\"control.min\"\r\n [maxlength]=\"control.maxLength\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (key.enter)=\"handleFieldValueChange(control, $event, 'enter', data, parentPath)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'template'\">\r\n <ng-container [ngTemplateOutlet]=\"control.template\"\r\n [ngTemplateOutletContext]=\"{$implicit: _rootNode, control: control, data: data, tablePath: tablePath, parentPath: parentPath, rowIndex: rowIndex, funcUpdateModel: updateModelFromExternal}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mask'\">\r\n <tn-mask [prefix]=\"control.prefix\" [decimalPlaces]=\"control.decimalPlaces\" [suffix]=\"control.suffix\"\r\n [placeholder]=\"control.placeholder\" [disabled]=\"checkDisabled(data, control)\"\r\n [maskType]=\"control.maskType\" [min]=\"control.min\" [max]=\"control.max\"\r\n [(ngModel)]=\"data[control.field]\" (onFocus)=\"onFocusTextControl($event)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-mask>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'numberrange'\">\r\n <tn-number-picker-range [decimalPlaces]=\"control.decimalPlaces\"\r\n [disabled]=\"checkDisabled(data, control)\" [maskType]=\"control.maskType\"\r\n [(ngModel)]=\"data[control.field]\" [min]=\"control.min\" [max]=\"control.max\"\r\n (search)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (blur)=\"handleFieldValueChange(control, $event, 'blur', data, parentPath)\">\r\n </tn-number-picker-range>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'money'\">\r\n <input currencyMask [attr.disabled]=\"checkDisabled(data, control) ? true : null\" pInputText type=\"tel\"\r\n [(ngModel)]=\"data[control.field]\"\r\n [options]=\"{prefix: '', thousands: '.', decimal: ',',precision:control.dataFormat === 'money'?0:0 }\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (focus)=\"onFocusTextControl($event)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'phoneOrfax'\">\r\n <input [placeholder]=\"control.dataFormat==='phone'?'(999) 999-9999':'999-999-9999'\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" type=\"tel\" pInputText\r\n [(ngModel)]=\"data[control.field]\" (focus)=\"onFocusTextControl($event)\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea pInputTextarea (focus)=\"onFocusTextControl($event)\" [rows]=\"control.rows ? control.rows : 5\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" [(ngModel)]=\"data[control.field]\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"></textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'editor'\">\r\n <tn-tinymce *ngIf=\"!checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n [required]=\"control.validators && control.validators.required\" [mode]=\"control.mode\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n [height]=\"control.height ? control.height : 250\">\r\n </tn-tinymce>\r\n <div *ngIf=\"checkDisabled(data, control)\" class=\"html-box\"\r\n [innerHTML]=\"data[control.field] ? (data[control.field] | safeHtml) : ''\">\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <datetime-picker [(ngModel)]=\"data[control.field]\" [disabled]=\"checkDisabled(data, control)\"\r\n [control]=\"control\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </datetime-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n <app-autocomplete-datasource [control]=\"control\" [(ngModel)]=\"data[control.field]\"\r\n [suggestions]=\"data._source[control.field] || control.dataSource\"\r\n (onValueChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </app-autocomplete-datasource>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datetimerange'\">\r\n <tn-datetime-picker-range [(ngModel)]=\"data[control.field]\" [disabled]=\"control.disabled\"\r\n [control]=\"control\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-datetime-picker-range>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <dropdown [control]=\"control\" [dataSource]=\"getControlDataSource(control, data)\"\r\n [(value)]=\"data[control.field]\"\r\n (onChanged)=\"handleChangeDropdown(control, $event, 'change', data, parentPath)\"\r\n (onHideSmartEvent)=\"handleChangeDropdown(control, $event, 'hide', data, parentPath)\"\r\n (adjustValue)=\"handleAdjustValueDropdownEvent(control, parentPath)\"\r\n (onDataSourceLoaded)=\"handleDataSourceLoaded(control, parentPath, $event)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </dropdown>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fileManager'\">\r\n <file-manager [control]=\"control\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [readonly]=\"control.disabled\" [layout]=\"control.layout\"\r\n [maxFileSize]=\"control.maxFileSize\" [inTaiLieu]=\"control.inTaiLieu\"\r\n [inTaiLieuChung]=\"control.inTaiLieuChung\" [copyToFolderId]=\"control.copyToFolderId\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\"\r\n [(value)]=\"data[control.field]\"\r\n (onSelected)=\"control.onSelected($event)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </file-manager>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'fileUpload'\">\r\n <file-upload [(ngModel)]=\"data[control.field]\" [sharedFolderType]=\"control.sharedFolderType\"\r\n [maxFileSize]=\"control.maxFileSize\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n [readonly]=\"control.readonly\" [accept]=\"control.accept\">\r\n </file-upload>\r\n </span>\r\n <span *ngSwitchCase=\"'serviceFileUpload'\">\r\n <service-file-upload [(ngModel)]=\"data[control.field]\" [parentContext]=\"context\"\r\n [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [control]=\"control\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </service-file-upload>\r\n </span>\r\n <ng-container *ngSwitchCase=\"'user-picker'\">\r\n <user-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [(ngModel)]=\"data[control.field]\" [multiple]=\"control.multiple\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\">\r\n </user-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <p-inputSwitch [(ngModel)]=\"data[control.field]\" [disabled]=\"checkDisabled(data, control)\"\r\n (onChange)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </p-inputSwitch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <div [class]=\"control.class\" role=\"checkbox-alone\">\r\n <p-checkbox [disabled]=\"checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n [label]=\"!control.hiddenLabel ? control.label : null\"\r\n (onChange)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\" binary=\"true\">\r\n </p-checkbox>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button type=\"button\" pButton [class]=\"control.btClass\" [icon]=\"control.icon\"\r\n [label]=\"control.label | translate\" [ngStyle]=\"control.btStyle\"\r\n (click)=\"handleButtonClick(control, $event, parentPath)\"></button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'container'\">\r\n <div class=\"p-grid p-col-12\" style=\"margin: 0\" [class.not-show-in-box]=\"!control.showInBox\"\r\n [class.show-in-box]=\"control.showInBox\" [ngStyle]=\"control.boxStyle\">\r\n <ng-container *ngFor=\"let subControl of control.controls\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customControl; context: {control: subControl, data: data[control.field], parentPath: path, rowIndex: rowIndex, path: path + '.' + subControl.field, showLabel: subControl.showLabel, mdWidth: subControl.mdWidth}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkboxlist'\">\r\n <check-box-list [control]=\"control\" [dataSource]=\"data._source[control.field] || control.dataSource\"\r\n [disabled]=\"checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </check-box-list>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radiobuttonlist'\">\r\n <radio-button-list [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [disabled]=\"checkDisabled(data, control)\" [(value)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (adjustValue)=\"handleAdjustValueDropdownEvent(control, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\"\r\n (onDataSourceLoaded)=\"handleDataSourceLoaded(control, parentPath, $event)\">\r\n </radio-button-list>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'colorPicker'\">\r\n <tn-color-picker [(ngModel)]=\"data[control.field]\" [disabled]=\"checkDisabled(data, control)\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'spanControl'\">\r\n <span *ngIf=\"!control.ishtml\">{{data[control.field]}}</span>\r\n <span *ngIf=\"control.ishtml\" [innerHTML]=\"data[control.field]\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'colorControl'\">\r\n <span class=\"show-color-control\" [ngStyle]=\"{ backgroundColor: data[control.sourceField]}\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <address-picker [control]=\"control\" [showSubLabel]=\"control.showSubLabel\"\r\n [disabled]=\"checkDisabled(data, control)\" [(data)]=\"data[control.field]\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </address-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete-picker'\">\r\n <autocomplete-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\">\r\n </autocomplete-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'entity-picker'\">\r\n <entity-picker [control]=\"control\" [children]=\"children\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </entity-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc'\">\r\n <cocautochuc-picker [control]=\"control\" [parentOrgId]=\"control.parentOrgId\"\r\n [disabled]=\"checkDisabled(data, control)\" [parentOrgCode]=\"control.parentOrgCode\"\r\n [filter]=\"control.filter\" [multiple]=\"control.multiple\" [required]=\"control.required\"\r\n [isUsingId]=\"control.isUsingId\" [disabledParentItem]=\"control.disabledParentItem\"\r\n [rootParentId]=\"control.rootParentId\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </cocautochuc-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc-picker'\">\r\n <cocautochuc-picker-list [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\">\r\n </cocautochuc-picker-list>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'vanban'\">\r\n <vanban-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </vanban-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'congviec'\">\r\n <div>\r\n <congviec-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </congviec-picker>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <div>\r\n <tn-mask [suffix]=\"'%'\" [placeholder]=\"control.placeholder\" [maskType]=\"'int'\" [min]=\"0\" [max]=\"100\"\r\n [disabled]=\"checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-mask>\r\n <p-slider [step]=\"1\" [min]=\"0\" [max]=\"100\" [disabled]=\"checkDisabled(data, control)\"\r\n [(ngModel)]=\"data[control.field]\"\r\n (onSlideEnd)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </p-slider>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <div [class]=\"control.class\">\r\n <tn-custom-scrollbar class=\"--has-border\" [showScrollHorizontal]=\"true\">\r\n <p-table [value]=\"data[control.field]\" [columns]=\"control.headerTemplate\" [responsive]=\"true\"\r\n class=\"new-table scr-table table-control\" [rowTrackBy]=\"trackByFuncId\"\r\n (onRowReorder)=\"handleRowOrdered(control, $event, 'rowReorder', data, parentPath)\">\r\n <ng-template *ngIf=\"getComponentByType(_prefixCustomHeader + control.field)\"\r\n pTemplate=\"header\" let-columns>\r\n <ng-container\r\n *ngTemplateOutlet=\"getComponentByType(_prefixCustomHeader + control.field), context: {$implicit: control.headerTemplate, crudForm: this, containerSticky: containerSticky}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"!getComponentByType(_prefixCustomHeader + control.field)\"\r\n pTemplate=\"header\" let-rowData let-columns>\r\n <tr>\r\n <th *ngIf=\"control.showNumber\" style=\"text-align: center; width: 2.5rem\">\r\n {{ 'TT' |translate}}\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <ng-container *ngFor=\"let subControl of control.rowTemplate\">\r\n <th *ngIf=\"subControl && !subControl.hidden && subControl.visibleInList\"\r\n [pTooltip]=\"subControl.fullLabel || subControl.label\" tooltipPosition=\"top\"\r\n [style.width]=\"subControl.width\" style=\"text-align: center;\">\r\n {{subControl.label}}\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <th *ngIf=\"control.enableReorderRow\" style=\"width: 30px\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <th *ngIf=\"control.showFunction\"\r\n [style.width]=\"getTableFunctionColumnWidth(control)\"\r\n class=\"table-function column-function\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td style=\"text-align: center; padding-left: 0; padding-right: 0;\"\r\n *ngIf=\"control.showNumber\" class=\"stt\">\r\n <span style=\"padding: 12px 5px; display: inline-block;\">{{ri+1}}</span>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <ng-container *ngFor=\"let subControl of control.rowTemplate; let i = index\">\r\n <td *ngIf=\"subControl && !subControl.hidden && subControl.visibleInList\"\r\n [class.control-inside]=\"true\" [class]=\"subControl.class\">\r\n <span class=\"p-column-title\">{{subControl.label}}</span>\r\n <ng-container\r\n *ngTemplateOutlet=\"customControl; context: getContextTd(subControl, rowData, ri, path)\">\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n </ng-container>\r\n <td *ngIf=\"control.enableReorderRow\" class=\"no-padding center v-center\">\r\n <i class=\"fas fa-arrows-alt\" style=\"cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <td style=\"text-align:center\" *ngIf=\"control.showFunction\" class=\"column-function\">\r\n <div class=\"p-toolbar-group-center button-group\">\r\n <button *ngIf=\"control.showSave\" [disabled]=\"rowData._disableSave\"\r\n type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [pTooltip]=\"'L\u01B0u' | translate\" tooltipPosition=\"top\"\r\n style=\"width: 2.143em;\" (click)=\"saveRow(ri, control, path)\"></button>\r\n <button *ngIf=\"control.showEdit\" [disabled]=\"rowData._disableEdit\"\r\n type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-pencil\"\r\n [pTooltip]=\"'S\u1EEDa' | translate\" tooltipPosition=\"top\"\r\n style=\"width: 2.143em;\" (click)=\"editRow(ri, control, path)\"></button>\r\n <button *ngIf=\"control.showDelete\" [disabled]=\"rowData._disableDelete\"\r\n type=\"button\" pButton class=\"p-button-text p-button-danger\"\r\n icon=\"pi pi-trash\" [pTooltip]=\"'X\u00F3a' | translate\" tooltipPosition=\"top\"\r\n style=\"width: 2.143em;\" (click)=\"deleteRow(ri, control, path)\"></button>\r\n <button *ngIf=\"control.rowButtons\" type=\"button\" pButton\r\n icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\"\r\n pTooltip=\"Ch\u1EE9c n\u0103ng kh\u00E1c\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData, control)\"></button>\r\n <!-- <button *ngFor=\"let bt of control.rowButtons\" type=\"button\" pButton\r\n [class]=\"bt.class\" [icon]=\"bt.icon\" [pTooltip]=\"bt.label | translate\"\r\n tooltipPosition=\"top\" style=\"width: 2.143em;\"\r\n (click)=\"messageRow(ri, control, path)\"></button> -->\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"control.showFooter\" class=\"--table-schema-footer\">\r\n <button *ngIf=\"control.showAdd\" type=\"button\" pButton style=\"width:auto\" label=\"Th\u00EAm m\u1EDBi\"\r\n icon=\"pi pi-plus\" class=\"p-button-text\" (click)=\"addNewRow(control, path)\"></button>\r\n <span style=\"font-weight: normal;\">\r\n <p-checkbox label=\"M\u1EDF dialog\" [binary]=\"true\" [(ngModel)]=\"control.showEdit\">\r\n </p-checkbox>\r\n </span>\r\n <button *ngIf=\"control.enableAddMulti\" type=\"button\" pButton\r\n style=\"width:auto; margin-left:10px;\" label=\"Th\u00EAm nhi\u1EC1u\" icon=\"pi pi-clone\"\r\n class=\"p-button-text\" (click)=\"addMultiRow(control, 5, path)\"></button>\r\n <button *ngFor=\"let bt of control.footerButtons\" type=\"button\" pButton [class]=\"bt.class\"\r\n [icon]=\"bt.icon\" [label]=\"bt.label | translate\" style=\"width:auto; margin-left:10px;\"\r\n (click)=\"messageRow( -1, control, path)\"></button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"getComponentByType(control.field)\" [ngTemplateOutletContext]=\"{\r\n crudForm: this, data: data, index: rowIndex, parentPath: parentPath, control: control, changeFunc: handleFieldValueChange\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"validation; context: {control: control, data: data}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #validation let-control=\"control\" let-data=\"data\">\r\n <ng-container *ngIf=\"data._errors[control.field].length > 0\">\r\n <div class=\"error-container\">\r\n <ng-container *ngFor=\"let error of data._errors[control.field]\">\r\n <div class=\"error-item\" *ngIf=\"error\">\r\n <ng-container [ngTemplateOutlet]=\"errorMessage\" [ngTemplateOutletContext]=\"{content: error}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #errorMessage let-content=\"content\">\r\n <div class=\"error-content\">\r\n <i class=\"pi pi-ban\"></i>\r\n <span> {{content}}</span>\r\n </div>\r\n</ng-template>\r\n<ng-template #labelControl let-control=\"control\">\r\n <ng-container>\r\n <label [class]=\"getLabelClass(control)\" *ngIf=\"!control.ishtml\" [attr.label-index]=\"control.indexLabel\"\r\n [pTooltip]=\"control.title\" tooltipPosition=\"top\" tooltipStyleClass=\"wrap\" [escape]=\"false\"\r\n [for]=\"control.for\">{{control.text | translate}}</label>\r\n <label [class]=\"getLabelClass(control)\" *ngIf=\"control.ishtml\" [innerHTML]=\"control.text | safeHtml\"\r\n [attr.label-index]=\"control.indexLabel\"></label>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #containerSticky>\r\n <span class=\"fix-sticky top\"></span>\r\n <span class=\"fix-sticky right\"></span>\r\n <span class=\"fix-sticky left\"></span>\r\n</ng-template>\r\n<ng-template #templateCongViecForm let-control=\"control\">\r\n <base-congviec-form [control]=\"control\" [parentSetting]=\"congViecSetting\" [tenCongViec]=\"control.data.tenCongViec\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<tn-dialog *ngIf=\"tableFormShow\" #dialog [styleClass]=\"'address-form'\" [header]=\"tableFormTitle | translate\"\r\n [popupSize]=\"tableFormPopupSize\" (onHide)=\"tableFormShow = false\">\r\n <table-detail-form #formBase [parentSetting]=\"setting\" [schema]=\"tableFormSchema\" [data]=\"tableFormData\"\r\n (onSaved)=\"handleSavedTableRow($event)\" (onCancel)=\"tableFormShow = false\">\r\n </table-detail-form>\r\n</tn-dialog>\r\n",
|
|
16349
|
+
template: "<div [class]=\"_styleClass\">\r\n <form #formElement autocomplete=\"off\" autocorrect=\"off\" spellcheck=\"false\"\r\n [class]=\"'p-grid form-group crud-form' + (formClass ? ' ' + formClass : '')\"\r\n (keydown.shift.tab)=\"preventBlur($event)\">\r\n <div class=\"p-grid p-col-12\" style=\"margin: 0\">\r\n <ng-container *ngFor=\"let control of setting.schema\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customControl; context: {control: control, data: _modelData, parentPath: '', path: control.field, showLabel: control.showLabel, mdWidth: control.mdWidth}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </form>\r\n</div>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"buttonContexts\">\r\n</p-contextMenu>\r\n<ng-template #customControl let-data=\"data\" let-control=\"control\" let-showLabel=\"showLabel\" let-mdWidth=\"mdWidth\"\r\n let-rowIndex=\"index\" let-path=\"path\" let-parentPath=\"parentPath\" let-tablePath=\"tablePath\">\r\n <div *ngIf=\"!checkHidden(control, data, path)\" id=\"{{path}}-holder\"\r\n class=\"p-col-{{control.gWidth}} p-md-{{mdWidth}} {{control.class}} crud-form-control type-{{control.dataType}}\"\r\n [class.error]=\"data._errors[control.field].length > 0\"\r\n [class.not-show-in-box-holder]=\"control.showInBox === false\"\r\n [class.show-in-box-holder]=\"control.showInBox === true\" [ngStyle]=\"control.style\">\r\n <div class=\"label\" *ngIf=\"showLabel\">\r\n <label *ngIf=\"control.label\" [pTooltip]=\"control.fullLabel\" tooltipPosition=\"top\">{{control.label}}\r\n <span *ngIf=\"control.required\" class=\"star-required\">*</span></label>\r\n <span *ngIf=\"control.description\" class=\"control-description\">({{control.description}})</span>\r\n </div>\r\n <ng-container [ngSwitch]=\"control.controlType\">\r\n <ng-container *ngSwitchCase=\"'label'\">\r\n <ng-container [ngTemplateOutlet]=\"labelControl\"\r\n [ngTemplateOutletContext]=\"{control: control, data: data}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'title'\">\r\n <label *ngIf=\"!control.ishtml\" [for]=\"control.for\">{{control.text | translate}}</label>\r\n <label *ngIf=\"control.ishtml\" [innerHTML]=\"control.text | translate\"></label>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div class=\"p-inputgroup\" *ngIf=\"control.suffFix\">\r\n <input (focus)=\"onFocusTextControl($event)\" [placeholder]=\"control.placeholder\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" pInputText\r\n [type]=\"control.dataFormat\" [(ngModel)]=\"data[control.field]\" [max]=\"control.max\"\r\n [min]=\"control.min\" [maxlength]=\"control.maxLength\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (key.enter)=\"handleFieldValueChange(control, $event, 'enter', data, parentPath)\" />\r\n <span class=\"p-inputgroup-addon\">({{control.suffFix}})</span>\r\n </div>\r\n <input *ngIf=\"!control.suffFix\" (focus)=\"onFocusTextControl($event)\" [placeholder]=\"control.placeholder\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" pInputText [type]=\"control.dataFormat\"\r\n [(ngModel)]=\"data[control.field]\" [max]=\"control.max\" [min]=\"control.min\"\r\n [maxlength]=\"control.maxLength\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (key.enter)=\"handleFieldValueChange(control, $event, 'enter', data, parentPath)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'template'\">\r\n <ng-container [ngTemplateOutlet]=\"control.template\"\r\n [ngTemplateOutletContext]=\"{$implicit: _rootNode, control: control, data: data, tablePath: tablePath, parentPath: parentPath, rowIndex: rowIndex, funcUpdateModel: updateModelFromExternal}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mask'\">\r\n <tn-mask [prefix]=\"control.prefix\" [decimalPlaces]=\"control.decimalPlaces\" [suffix]=\"control.suffix\"\r\n [placeholder]=\"control.placeholder\" [disabled]=\"checkDisabled(data, control)\"\r\n [maskType]=\"control.maskType\" [min]=\"control.min\" [max]=\"control.max\"\r\n [(ngModel)]=\"data[control.field]\" (onFocus)=\"onFocusTextControl($event)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-mask>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'numberrange'\">\r\n <tn-number-picker-range [decimalPlaces]=\"control.decimalPlaces\"\r\n [disabled]=\"checkDisabled(data, control)\" [maskType]=\"control.maskType\"\r\n [(ngModel)]=\"data[control.field]\" [min]=\"control.min\" [max]=\"control.max\"\r\n (search)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (blur)=\"handleFieldValueChange(control, $event, 'blur', data, parentPath)\">\r\n </tn-number-picker-range>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'money'\">\r\n <input currencyMask [attr.disabled]=\"checkDisabled(data, control) ? true : null\" pInputText type=\"tel\"\r\n [(ngModel)]=\"data[control.field]\"\r\n [options]=\"{prefix: '', thousands: '.', decimal: ',',precision:control.dataFormat === 'money'?0:0 }\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (focus)=\"onFocusTextControl($event)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'phoneOrfax'\">\r\n <input [placeholder]=\"control.dataFormat==='phone'?'(999) 999-9999':'999-999-9999'\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" type=\"tel\" pInputText\r\n [(ngModel)]=\"data[control.field]\" (focus)=\"onFocusTextControl($event)\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\" />\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea pInputTextarea (focus)=\"onFocusTextControl($event)\" [rows]=\"control.rows ? control.rows : 5\"\r\n [attr.disabled]=\"checkDisabled(data, control) ? true : null\" [(ngModel)]=\"data[control.field]\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"></textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'editor'\">\r\n <tn-tinymce *ngIf=\"!checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n [required]=\"control.validators && control.validators.required\" [mode]=\"control.mode\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n [height]=\"control.height ? control.height : 250\" [languageCode]=\"control.languageCode\"\r\n [disabled]=\"control.disabled || (control.disableCheck && control.disableCheck(model))\">\r\n </tn-tinymce>\r\n <div *ngIf=\"checkDisabled(data, control)\" class=\"html-box\"\r\n [innerHTML]=\"data[control.field] ? (data[control.field] | safeHtml) : ''\">\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <datetime-picker [(ngModel)]=\"data[control.field]\" [disabled]=\"checkDisabled(data, control)\"\r\n [control]=\"control\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </datetime-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n <app-autocomplete-datasource [control]=\"control\" [(ngModel)]=\"data[control.field]\"\r\n [suggestions]=\"data._source[control.field] || control.dataSource\"\r\n (onValueChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </app-autocomplete-datasource>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datetimerange'\">\r\n <tn-datetime-picker-range [(ngModel)]=\"data[control.field]\" [disabled]=\"control.disabled\"\r\n [control]=\"control\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-datetime-picker-range>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <dropdown [control]=\"control\" [dataSource]=\"getControlDataSource(control, data)\"\r\n [(value)]=\"data[control.field]\"\r\n (onChanged)=\"handleChangeDropdown(control, $event, 'change', data, parentPath)\"\r\n (onHideSmartEvent)=\"handleChangeDropdown(control, $event, 'hide', data, parentPath)\"\r\n (adjustValue)=\"handleAdjustValueDropdownEvent(control, parentPath)\"\r\n (onDataSourceLoaded)=\"handleDataSourceLoaded(control, parentPath, $event)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </dropdown>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fileManager'\">\r\n <file-manager [control]=\"control\" [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [readonly]=\"control.disabled\" [layout]=\"control.layout\"\r\n [maxFileSize]=\"control.maxFileSize\" [inTaiLieu]=\"control.inTaiLieu\"\r\n [inTaiLieuChung]=\"control.inTaiLieuChung\" [copyToFolderId]=\"control.copyToFolderId\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\"\r\n [(value)]=\"data[control.field]\" (onSelected)=\"control.onSelected($event)\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </file-manager>\r\n </ng-container>\r\n <span *ngSwitchCase=\"'fileUpload'\">\r\n <file-upload [(ngModel)]=\"data[control.field]\" [sharedFolderType]=\"control.sharedFolderType\"\r\n [maxFileSize]=\"control.maxFileSize\"\r\n [invalidFileSizeMessageSummary]=\"control.invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"control.invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"control.invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"control.invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"control.invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"control.invalidFileLimitMessageDetail\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n [readonly]=\"control.readonly\" [accept]=\"control.accept\">\r\n </file-upload>\r\n </span>\r\n <span *ngSwitchCase=\"'serviceFileUpload'\">\r\n <service-file-upload [(ngModel)]=\"data[control.field]\" [parentContext]=\"context\"\r\n [serviceCode]=\"control.serviceCode\" [entity]=\"control.entity\"\r\n [entityKey]=\"data[control.entityKeyField]\" [control]=\"control\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </service-file-upload>\r\n </span>\r\n <ng-container *ngSwitchCase=\"'user-picker'\">\r\n <user-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [(ngModel)]=\"data[control.field]\" [multiple]=\"control.multiple\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\">\r\n </user-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <p-inputSwitch [(ngModel)]=\"data[control.field]\" [disabled]=\"checkDisabled(data, control)\"\r\n (onChange)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </p-inputSwitch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <div [class]=\"control.class\" role=\"checkbox-alone\">\r\n <p-checkbox [disabled]=\"checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n [label]=\"!control.hiddenLabel ? control.label : null\"\r\n (onChange)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\" binary=\"true\">\r\n </p-checkbox>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button type=\"button\" pButton [class]=\"control.btClass\" [icon]=\"control.icon\"\r\n [label]=\"control.label | translate\" [ngStyle]=\"control.btStyle\"\r\n (click)=\"handleButtonClick(control, $event, parentPath)\"></button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'container'\">\r\n <div class=\"p-grid p-col-12\" style=\"margin: 0\" [class.not-show-in-box]=\"!control.showInBox\"\r\n [class.show-in-box]=\"control.showInBox\" [ngStyle]=\"control.boxStyle\">\r\n <ng-container *ngFor=\"let subControl of control.controls\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customControl; context: {control: subControl, data: data[control.field], parentPath: path, rowIndex: rowIndex, path: path + '.' + subControl.field, showLabel: subControl.showLabel, mdWidth: subControl.mdWidth}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkboxlist'\">\r\n <check-box-list [control]=\"control\" [dataSource]=\"data._source[control.field] || control.dataSource\"\r\n [disabled]=\"checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </check-box-list>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'radiobuttonlist'\">\r\n <radio-button-list [control]=\"control\" [dataSource]=\"control.dataSource\"\r\n [disabled]=\"checkDisabled(data, control)\" [(value)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (adjustValue)=\"handleAdjustValueDropdownEvent(control, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\"\r\n (onDataSourceLoaded)=\"handleDataSourceLoaded(control, parentPath, $event)\">\r\n </radio-button-list>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'colorPicker'\">\r\n <tn-color-picker [(ngModel)]=\"data[control.field]\" [disabled]=\"checkDisabled(data, control)\"\r\n (change)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-color-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'spanControl'\">\r\n <span *ngIf=\"!control.ishtml\">{{data[control.field]}}</span>\r\n <span *ngIf=\"control.ishtml\" [innerHTML]=\"data[control.field]\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'colorControl'\">\r\n <span class=\"show-color-control\" [ngStyle]=\"{ backgroundColor: data[control.sourceField]}\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <address-picker [control]=\"control\" [showSubLabel]=\"control.showSubLabel\"\r\n [disabled]=\"checkDisabled(data, control)\" [(data)]=\"data[control.field]\"\r\n (onSelect)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleControlReadyEvent(control, parentPath)\">\r\n </address-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete-picker'\">\r\n <autocomplete-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\">\r\n </autocomplete-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'entity-picker'\">\r\n <entity-picker [control]=\"control\" [children]=\"children\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </entity-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc'\">\r\n <cocautochuc-picker [control]=\"control\" [parentOrgId]=\"control.parentOrgId\"\r\n [disabled]=\"checkDisabled(data, control)\" [parentOrgCode]=\"control.parentOrgCode\"\r\n [filter]=\"control.filter\" [multiple]=\"control.multiple\" [required]=\"control.required\"\r\n [isUsingId]=\"control.isUsingId\" [disabledParentItem]=\"control.disabledParentItem\"\r\n [rootParentId]=\"control.rootParentId\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </cocautochuc-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'cocautochuc-picker'\">\r\n <cocautochuc-picker-list [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\"\r\n (onReady)=\"handleReadyControlPicker(control, parentPath)\">\r\n </cocautochuc-picker-list>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'vanban'\">\r\n <vanban-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </vanban-picker>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'congviec'\">\r\n <div>\r\n <congviec-picker [control]=\"control\" [disabled]=\"checkDisabled(data, control)\"\r\n [required]=\"control.required\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </congviec-picker>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <div>\r\n <tn-mask [suffix]=\"'%'\" [placeholder]=\"control.placeholder\" [maskType]=\"'int'\" [min]=\"0\" [max]=\"100\"\r\n [disabled]=\"checkDisabled(data, control)\" [(ngModel)]=\"data[control.field]\"\r\n (onChanged)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </tn-mask>\r\n <p-slider [step]=\"1\" [min]=\"0\" [max]=\"100\" [disabled]=\"checkDisabled(data, control)\"\r\n [(ngModel)]=\"data[control.field]\"\r\n (onSlideEnd)=\"handleFieldValueChange(control, $event, 'change', data, parentPath)\">\r\n </p-slider>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'table'\">\r\n <div [class]=\"control.class\">\r\n <tn-custom-scrollbar class=\"--has-border\" [showScrollHorizontal]=\"true\">\r\n <p-table [value]=\"data[control.field]\" [columns]=\"control.headerTemplate\" [responsive]=\"true\"\r\n class=\"new-table scr-table table-control\" [rowTrackBy]=\"trackByFuncId\"\r\n (onRowReorder)=\"handleRowOrdered(control, $event, 'rowReorder', data, parentPath)\">\r\n <ng-template *ngIf=\"getComponentByType(_prefixCustomHeader + control.field)\"\r\n pTemplate=\"header\" let-columns>\r\n <ng-container\r\n *ngTemplateOutlet=\"getComponentByType(_prefixCustomHeader + control.field), context: {$implicit: control.headerTemplate, crudForm: this, containerSticky: containerSticky}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"!getComponentByType(_prefixCustomHeader + control.field)\"\r\n pTemplate=\"header\" let-rowData let-columns>\r\n <tr>\r\n <th *ngIf=\"control.showNumber\" style=\"text-align: center; width: 2.5rem\">\r\n {{ 'TT' |translate}}\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <ng-container *ngFor=\"let subControl of control.rowTemplate\">\r\n <th *ngIf=\"subControl && !subControl.hidden && subControl.visibleInList\"\r\n [pTooltip]=\"subControl.fullLabel || subControl.label\" tooltipPosition=\"top\"\r\n [style.width]=\"subControl.width\" style=\"text-align: center;\">\r\n {{subControl.label}}\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <th *ngIf=\"control.enableReorderRow\" style=\"width: 30px\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <th *ngIf=\"control.showFunction\"\r\n [style.width]=\"getTableFunctionColumnWidth(control)\"\r\n class=\"table-function column-function\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td style=\"text-align: center; padding-left: 0; padding-right: 0;\"\r\n *ngIf=\"control.showNumber\" class=\"stt\">\r\n <span style=\"padding: 12px 5px; display: inline-block;\">{{ri+1}}</span>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <ng-container *ngFor=\"let subControl of control.rowTemplate; let i = index\">\r\n <td *ngIf=\"subControl && !subControl.hidden && subControl.visibleInList\"\r\n [class.control-inside]=\"true\" [class]=\"subControl.class\">\r\n <span class=\"p-column-title\">{{subControl.label}}</span>\r\n <ng-container\r\n *ngTemplateOutlet=\"customControl; context: getContextTd(subControl, rowData, ri, path)\">\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n </ng-container>\r\n <td *ngIf=\"control.enableReorderRow\" class=\"no-padding center v-center\">\r\n <i class=\"fas fa-arrows-alt\" style=\"cursor:pointer; padding: 8px; color: #555;\"\r\n pReorderableRowHandle></i>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <td style=\"text-align:center\" *ngIf=\"control.showFunction\" class=\"column-function\">\r\n <div class=\"p-toolbar-group-center button-group\">\r\n <button *ngIf=\"control.showSave\" [disabled]=\"rowData._disableSave\"\r\n type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\"\r\n [pTooltip]=\"'L\u01B0u' | translate\" tooltipPosition=\"top\"\r\n style=\"width: 2.143em;\" (click)=\"saveRow(ri, control, path)\"></button>\r\n <button *ngIf=\"control.showEdit\" [disabled]=\"rowData._disableEdit\"\r\n type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-pencil\"\r\n [pTooltip]=\"'S\u1EEDa' | translate\" tooltipPosition=\"top\"\r\n style=\"width: 2.143em;\" (click)=\"editRow(ri, control, path)\"></button>\r\n <button *ngIf=\"control.showDelete\" [disabled]=\"rowData._disableDelete\"\r\n type=\"button\" pButton class=\"p-button-text p-button-danger\"\r\n icon=\"pi pi-trash\" [pTooltip]=\"'X\u00F3a' | translate\" tooltipPosition=\"top\"\r\n style=\"width: 2.143em;\" (click)=\"deleteRow(ri, control, path)\"></button>\r\n <button *ngIf=\"control.rowButtons\" type=\"button\" pButton\r\n icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\"\r\n pTooltip=\"Ch\u1EE9c n\u0103ng kh\u00E1c\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData, control)\"></button>\r\n <!-- <button *ngFor=\"let bt of control.rowButtons\" type=\"button\" pButton\r\n [class]=\"bt.class\" [icon]=\"bt.icon\" [pTooltip]=\"bt.label | translate\"\r\n tooltipPosition=\"top\" style=\"width: 2.143em;\"\r\n (click)=\"messageRow(ri, control, path)\"></button> -->\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"control.showFooter\" class=\"--table-schema-footer\">\r\n <button *ngIf=\"control.showAdd\" type=\"button\" pButton style=\"width:auto\" label=\"Th\u00EAm m\u1EDBi\"\r\n icon=\"pi pi-plus\" class=\"p-button-text\" (click)=\"addNewRow(control, path)\"></button>\r\n <span style=\"font-weight: normal;\">\r\n <p-checkbox label=\"M\u1EDF dialog\" [binary]=\"true\" [(ngModel)]=\"control.showEdit\">\r\n </p-checkbox>\r\n </span>\r\n <button *ngIf=\"control.enableAddMulti\" type=\"button\" pButton\r\n style=\"width:auto; margin-left:10px;\" label=\"Th\u00EAm nhi\u1EC1u\" icon=\"pi pi-clone\"\r\n class=\"p-button-text\" (click)=\"addMultiRow(control, 5, path)\"></button>\r\n <button *ngFor=\"let bt of control.footerButtons\" type=\"button\" pButton [class]=\"bt.class\"\r\n [icon]=\"bt.icon\" [label]=\"bt.label | translate\" style=\"width:auto; margin-left:10px;\"\r\n (click)=\"messageRow( -1, control, path)\"></button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"getComponentByType(control.field)\" [ngTemplateOutletContext]=\"{\r\n crudForm: this, data: data, index: rowIndex, parentPath: parentPath, control: control, changeFunc: handleFieldValueChange\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"validation; context: {control: control, data: data}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #validation let-control=\"control\" let-data=\"data\">\r\n <ng-container *ngIf=\"data._errors[control.field].length > 0\">\r\n <div class=\"error-container\">\r\n <ng-container *ngFor=\"let error of data._errors[control.field]\">\r\n <div class=\"error-item\" *ngIf=\"error\">\r\n <ng-container [ngTemplateOutlet]=\"errorMessage\" [ngTemplateOutletContext]=\"{content: error}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #errorMessage let-content=\"content\">\r\n <div class=\"error-content\">\r\n <i class=\"pi pi-ban\"></i>\r\n <span> {{content}}</span>\r\n </div>\r\n</ng-template>\r\n<ng-template #labelControl let-control=\"control\">\r\n <ng-container>\r\n <label [class]=\"getLabelClass(control)\" *ngIf=\"!control.ishtml\" [attr.label-index]=\"control.indexLabel\"\r\n [pTooltip]=\"control.title\" tooltipPosition=\"top\" tooltipStyleClass=\"wrap\" [escape]=\"false\"\r\n [for]=\"control.for\">{{control.text | translate}}</label>\r\n <label [class]=\"getLabelClass(control)\" *ngIf=\"control.ishtml\" [innerHTML]=\"control.text | safeHtml\"\r\n [attr.label-index]=\"control.indexLabel\"></label>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #containerSticky>\r\n <span class=\"fix-sticky top\"></span>\r\n <span class=\"fix-sticky right\"></span>\r\n <span class=\"fix-sticky left\"></span>\r\n</ng-template>\r\n<ng-template #templateCongViecForm let-control=\"control\">\r\n <base-congviec-form [control]=\"control\" [parentSetting]=\"congViecSetting\" [tenCongViec]=\"control.data.tenCongViec\">\r\n </base-congviec-form>\r\n</ng-template>\r\n<tn-dialog *ngIf=\"tableFormShow\" #dialog [styleClass]=\"'address-form'\" [header]=\"tableFormTitle | translate\"\r\n [popupSize]=\"tableFormPopupSize\" (onHide)=\"tableFormShow = false\">\r\n <table-detail-form #formBase [parentSetting]=\"setting\" [schema]=\"tableFormSchema\" [data]=\"tableFormData\"\r\n (onSaved)=\"handleSavedTableRow($event)\" (onCancel)=\"tableFormShow = false\">\r\n </table-detail-form>\r\n</tn-dialog>",
|
|
16350
16350
|
providers: [ComponentContextService],
|
|
16351
16351
|
styles: [".label-only{font-weight:700;margin-bottom:1em}div.label{position:relative}div.label .star-required{color:red;padding-left:.2em;padding-top:.3em;position:absolute}div.type-container.not-show-in-box-holder{padding:0}.--table-schema-footer{align-items:center;background:#f8f9fa;border:1px solid #e9ecef;color:#495057;display:flex;font-weight:600;padding:.5em}.show-in-box{border:1px solid #ced4da;border-radius:5px}.not-show-in-box{padding:0}.view-mode div.label{padding-bottom:3px}.view-mode div.label label{font-size:.85em;font-weight:700}.view-mode>span:not(:empty){display:inline-block;padding:5px 0;width:100%}.view-mode.type-table div.label+div{padding:5px 0}td>.view-mode{display:inline-block;padding:.25rem .5rem}td>.view-mode .view-mode{padding:0}.crud-form-control div[role=checkbox-alone]{margin-top:24px}.crud-form-control div[role=checkbox-alone].mg-top-0{margin-top:0}.crud-form-control .label+div[role=checkbox-alone]{margin-top:11px}.crud-form-control.type-table div[role=checkbox-alone]{margin-top:6px;text-align:center}.crud-form-control.type-table div[role=checkbox-alone].mg-top-0{margin-top:0}.crud-form-control.type-table div[role=checkbox-alone].align-left{text-align:left}.crud-form-control.type-title{border-bottom:1px solid #cfcfcf;color:#025ba7;font-size:1.2rem;font-weight:700;padding:10px 0 10px 5px;text-transform:uppercase}.crud-form-control.type-title>.label{margin-bottom:0}.control-description{color:#6c757d;font-size:.8rem;margin-bottom:5px;margin-left:10px}::ng-deep .crud-form-control .tn-check-box-list{margin-top:5px}::ng-deep .crud-form-control>div.label{font-size:.9em;height:1.15em;margin-bottom:5px}::ng-deep .crud-form-control>div.label+*{width:100%}::ng-deep .crud-form-control>.error-container .error-item{-webkit-animation:shrink .1s;animation:shrink .1s;min-height:20px;overflow:visible;padding-top:5px}::ng-deep .crud-form-control>.error-container .error-item .error-content{-webkit-animation:fadeIn .1s;animation:fadeIn .1s;color:red;display:flex;font-size:.9em;position:relative}::ng-deep .crud-form-control>.error-container .error-item .error-content i{display:flex;font-size:.9em;padding-top:1px}::ng-deep .crud-form-control>.error-container .error-item .error-content span{display:flex;padding-left:5px}::ng-deep .crud-form-control.no-label>div.label{display:none}::ng-deep .crud-form-control.error .p-dropdown,::ng-deep .crud-form-control.error .p-inputtext,::ng-deep .crud-form-control.error .p-multiselect,::ng-deep .crud-form-control.error .tn-dropdown,::ng-deep .crud-form-control.error input,::ng-deep .crud-form-control.error select,::ng-deep .crud-form-control.error textarea{border-color:#ff5722!important}::ng-deep .crud-form-control.error .p-autocomplete-multiple-container:not(.p-disabled).p-focus,::ng-deep .crud-form-control.error .p-inputtext:enabled:focus,::ng-deep .crud-form-control.error .tn-dropdown:not(.p-disabled).p-focus{box-shadow:0 0 0 .2rem #ffc4b3}::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .p-dropdown,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .p-inputtext,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .p-multiselect,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .tn-dropdown,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) input,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) select,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) textarea{border-color:#ced4da!important}::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .p-autocomplete-multiple-container:not(.p-disabled).p-focus,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .p-dropdown.tn-dropdown.p-focus,::ng-deep .crud-form-control.error div.crud-form-control:not(.error) .p-inputtext:enabled:focus{box-shadow:0 0 0 .2rem #a6d5fa}@-webkit-keyframes fadeIn{0%{opacity:0;top:-25px}to{opacity:1;top:0}}@keyframes fadeIn{0%{opacity:0;top:-25px}to{opacity:1;top:0}}@-webkit-keyframes shrink{0%{height:0}to{height:20px}}@keyframes shrink{0%{height:0}to{height:20px}}@media screen and (min-width:40.063em){.label-right{padding-left:2em}}::ng-deep crud-form .crud-form-container{padding:.5rem .5rem 0}::ng-deep crud-form .p-datatable .p-datatable-tbody tr td.control-inside,::ng-deep crud-form .p-datatable .p-datatable-tbody tr td.control-inside .show-in-box:not(.crud-form-control),::ng-deep crud-form base-congviec-form crud-form>.crud-form-container{padding:0}:host ::ng-deep .tox-tinymce{border:none;border-top:1px solid #ccc;overflow:unset}:host ::ng-deep .tox-tinymce .tox-editor-container{overflow:unset}:host ::ng-deep .tox-tinymce .tox-toolbar{border:1px solid #ccc;border-bottom:none}:host ::ng-deep .tox-tinymce .tox-edit-area{border:1px solid #ccc}:host ::ng-deep .tox-tinymce .tox-edit-area iframe{box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}:host ::ng-deep .tox-tinymce .tox-menubar{border:1px solid #ccc}:host ::ng-deep .tox .tox-edit-area.tinymce-focus{border:1px solid #66afe9;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 3px 0 #66afe9;transition:box-shadow .3s,border-color .3s;transition-delay:0s,0s;transition-duration:.3s,.3s;transition-property:box-shadow,border-color;transition-timing-function:ease,ease}:host ::ng-deep .rq .tox .tox-edit-area{border-left-color:#ff4c46}.no-value{font-size:.8em}:host ::ng-deep .table-schema-paging{display:block;margin-bottom:40px}"]
|
|
16352
16352
|
},] }
|
|
@@ -22254,7 +22254,8 @@
|
|
|
22254
22254
|
this.environment = moduleConfigService.getConfig().environment;
|
|
22255
22255
|
if (this.environment.clientDomain
|
|
22256
22256
|
&& this.setting.baseService
|
|
22257
|
-
&& this.environment.clientDomain[this.setting.baseService.serviceCode]
|
|
22257
|
+
&& this.environment.clientDomain[this.setting.baseService.serviceCode]
|
|
22258
|
+
&& !this.setting.targetPath) {
|
|
22258
22259
|
this.setting.targetPath = this.environment.clientDomain[this.setting.baseService.serviceCode] + "/" + this.setting.baseService.entityName.toLowerCase() + "/detail";
|
|
22259
22260
|
}
|
|
22260
22261
|
this.checkAllowTrinhKy = this.checkAllowTrinhKy.bind(this);
|
|
@@ -23743,6 +23744,7 @@
|
|
|
23743
23744
|
_this._articleService = _articleService;
|
|
23744
23745
|
_this._newsCategoryService = _newsCategoryService;
|
|
23745
23746
|
_this.showChange = new i0.EventEmitter();
|
|
23747
|
+
_this.languageCode = 'vi';
|
|
23746
23748
|
_this.optionArr = ArticleConstants.articleTypeSource;
|
|
23747
23749
|
_this.setting.baseService = _this._articleService;
|
|
23748
23750
|
return _this;
|
|
@@ -23880,7 +23882,12 @@
|
|
|
23880
23882
|
AddNewsComponent.prototype.renderHtml = function (element) {
|
|
23881
23883
|
var result = '';
|
|
23882
23884
|
var html = '<div style="width:100%; margin-bottom: 15px">';
|
|
23883
|
-
|
|
23885
|
+
if (this.languageCode == 'en') {
|
|
23886
|
+
var href = '<a href="/news-detail/' + element.aliasName + '-' + element.persistedId + '.html">';
|
|
23887
|
+
}
|
|
23888
|
+
else {
|
|
23889
|
+
var href = '<a href="/chi-tiet/' + element.aliasName + '-' + element.persistedId + '.html">';
|
|
23890
|
+
}
|
|
23884
23891
|
result = html + href + '</a>' + href + element.name + '</a></div>';
|
|
23885
23892
|
return result;
|
|
23886
23893
|
};
|
|
@@ -23926,7 +23933,8 @@
|
|
|
23926
23933
|
AddNewsComponent.propDecorators = {
|
|
23927
23934
|
contextMenu: [{ type: i0.ViewChild, args: [contextmenu.ContextMenu, { static: false },] }],
|
|
23928
23935
|
showChange: [{ type: i0.Output }],
|
|
23929
|
-
isShow: [{ type: i0.Input }]
|
|
23936
|
+
isShow: [{ type: i0.Input }],
|
|
23937
|
+
languageCode: [{ type: i0.Input }]
|
|
23930
23938
|
};
|
|
23931
23939
|
|
|
23932
23940
|
(function (ENUM_DON_VI_HANH_CHINH) {
|
|
@@ -25299,7 +25307,7 @@
|
|
|
25299
25307
|
{ type: i0.Component, args: [{
|
|
25300
25308
|
// tslint:disable-next-line:component-selector
|
|
25301
25309
|
selector: 'app-avatar-uploader',
|
|
25302
|
-
template: "<!-- Todo: code lom, refactory lai sau -->\r\n<div *ngIf=\"!fileIdUploaded\">\r\n <div class=\"tn-thumbnail\">\r\n <img src=\"{{defaultNoImageUrl}}\" width=\"100%\" height=\"100%\" />\r\n
|
|
25310
|
+
template: "<!-- Todo: code lom, refactory lai sau -->\r\n<div *ngIf=\"!fileIdUploaded\">\r\n <div class=\"tn-thumbnail\">\r\n <img src=\"{{defaultNoImageUrl}}\" width=\"100%\" height=\"100%\" />\r\n\r\n <div class=\"tn-btn-thumbnail text-center\" *ngIf=\"!disabled && !showNoti\" (click)=\"onSelectThumbnailClick()\">\r\n <span class=\"text-center\"><i class=\"fas fa-cloud-upload-alt\"\r\n style=\"margin-right: 5px\"></i>{{chooseLabel}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"showNoti\" class=\"tn-btn-thumbnail noti-container\">\r\n <i class=\"loader-icon pi pi-spin pi-spinner\"></i>\r\n {{notification}}\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!disabled\" style=\"display:none;\">\r\n <p-fileUpload #fileControl (onBeforeUpload)=\"onBeforeUpload($event)\" [multiple]=\"false\" accept=\"image/*\"\r\n [chooseLabel]=\"chooseLabel\" (onUpload)=\"onUploadEvent($event)\" mode=\"basic\" name=\"file\" [url]=\"apiUploadUrl\"\r\n maxFileSize=\"10000000\" auto=\"true\"></p-fileUpload>\r\n </div>\r\n</div>\r\n<div *ngIf=\"fileIdUploaded != null\">\r\n <div class=\"tn-thumbnail\">\r\n <img (error)=\"onError($event)\" [src]=\"getImageUrl()\" width=\"100%\" height=\"100%\" />\r\n <div *ngIf=\"!disabled && !showNoti\" class=\"tn-btn-thumbnail text-center\" (click)=\"deleteAvatar()\">\r\n <a class=\"text-center text-danger\">\r\n <i class=\"pi pi-trash btn-delete\"></i>\r\n X\u00F3a</a>\r\n </div>\r\n <div *ngIf=\"showNoti\" class=\"tn-btn-thumbnail noti-container\">\r\n <i class=\"loader-icon pi pi-spin pi-spinner\"></i>\r\n {{notification}}\r\n </div>\r\n </div>\r\n</div>",
|
|
25303
25311
|
providers: [
|
|
25304
25312
|
{
|
|
25305
25313
|
provide: forms.NG_VALUE_ACCESSOR,
|
|
@@ -35228,6 +35236,37 @@
|
|
|
35228
35236
|
return EditFileCommand;
|
|
35229
35237
|
}());
|
|
35230
35238
|
|
|
35239
|
+
var FileType;
|
|
35240
|
+
(function (FileType) {
|
|
35241
|
+
FileType["VIDEO"] = "VIDEO";
|
|
35242
|
+
FileType["IMAGE"] = "IMAGE";
|
|
35243
|
+
FileType["DOC"] = "DOC";
|
|
35244
|
+
FileType["AUDIO"] = "AUDIO";
|
|
35245
|
+
})(FileType || (FileType = {}));
|
|
35246
|
+
var fileTypeSource = [
|
|
35247
|
+
{ id: 'VIDEO', ten: 'Video' },
|
|
35248
|
+
{ id: 'IMAGE', ten: 'Hình ảnh' },
|
|
35249
|
+
{ id: 'AUDIO', ten: 'Âm thanh' },
|
|
35250
|
+
{ id: 'DOC', ten: 'Văn bản' }
|
|
35251
|
+
];
|
|
35252
|
+
|
|
35253
|
+
var FileManagerService = /** @class */ (function () {
|
|
35254
|
+
function FileManagerService() {
|
|
35255
|
+
this.invokeReloadFunction = new i0.EventEmitter();
|
|
35256
|
+
}
|
|
35257
|
+
FileManagerService.prototype.onReload = function () {
|
|
35258
|
+
this.invokeReloadFunction.emit();
|
|
35259
|
+
};
|
|
35260
|
+
return FileManagerService;
|
|
35261
|
+
}());
|
|
35262
|
+
FileManagerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileManagerService_Factory() { return new FileManagerService(); }, token: FileManagerService, providedIn: "root" });
|
|
35263
|
+
FileManagerService.decorators = [
|
|
35264
|
+
{ type: i0.Injectable, args: [{
|
|
35265
|
+
providedIn: 'root'
|
|
35266
|
+
},] }
|
|
35267
|
+
];
|
|
35268
|
+
FileManagerService.ctorParameters = function () { return []; };
|
|
35269
|
+
|
|
35231
35270
|
var FileExplorerItem = /** @class */ (function () {
|
|
35232
35271
|
function FileExplorerItem() {
|
|
35233
35272
|
}
|
|
@@ -35329,7 +35368,7 @@
|
|
|
35329
35368
|
|
|
35330
35369
|
var FileManagerComponent = /** @class */ (function (_super) {
|
|
35331
35370
|
__extends(FileManagerComponent, _super);
|
|
35332
|
-
function FileManagerComponent(_myDriveService, _injector, _messageService, _translateService, _confirmService, _authenService, _tnClientService, _fileVersionService, _moduleConfigService, _notifierService, _signalrService, _fileExplorerService, _fileExplorerNewService, _deviceDetectorService, _folderService, _fileObjectService, _downloadLinkService) {
|
|
35371
|
+
function FileManagerComponent(_myDriveService, _injector, _messageService, _translateService, _confirmService, _authenService, _tnClientService, _fileVersionService, _moduleConfigService, _notifierService, _signalrService, _fileExplorerService, _fileExplorerNewService, _deviceDetectorService, _folderService, _fileObjectService, _downloadLinkService, _fileManagerService) {
|
|
35333
35372
|
var _this = _super.call(this, _injector) || this;
|
|
35334
35373
|
_this._myDriveService = _myDriveService;
|
|
35335
35374
|
_this._injector = _injector;
|
|
@@ -35348,6 +35387,7 @@
|
|
|
35348
35387
|
_this._folderService = _folderService;
|
|
35349
35388
|
_this._fileObjectService = _fileObjectService;
|
|
35350
35389
|
_this._downloadLinkService = _downloadLinkService;
|
|
35390
|
+
_this._fileManagerService = _fileManagerService;
|
|
35351
35391
|
_this.layout = exports.EnumFileLayout.LIST;
|
|
35352
35392
|
_this.hiddenCreateFolder = false;
|
|
35353
35393
|
_this.maxFileSize = 100000000; // Size in byte
|
|
@@ -35363,6 +35403,7 @@
|
|
|
35363
35403
|
_this.inTaiLieu = false;
|
|
35364
35404
|
_this.inTaiLieuChung = false;
|
|
35365
35405
|
_this.copyToFolderId = _this._commonService.guidEmpty();
|
|
35406
|
+
_this.multipleCheckWhenClickRow = true;
|
|
35366
35407
|
_this.onReady = new i0.EventEmitter();
|
|
35367
35408
|
_this.entityKeyChange = new i0.EventEmitter();
|
|
35368
35409
|
_this.closePopup = new i0.EventEmitter();
|
|
@@ -35374,8 +35415,6 @@
|
|
|
35374
35415
|
_this._layout = exports.EnumFileLayout;
|
|
35375
35416
|
// InstanceId thư mục gốc.
|
|
35376
35417
|
_this.rootFolderId = null;
|
|
35377
|
-
// Tên thư mục gốc.
|
|
35378
|
-
_this.rootFolderName = 'Thư mục gốc';
|
|
35379
35418
|
_this.progressValue = 0;
|
|
35380
35419
|
_this.apiUploadUrl = '';
|
|
35381
35420
|
_this.chooseLabel = 'Chọn';
|
|
@@ -35467,6 +35506,7 @@
|
|
|
35467
35506
|
if (this.fileDataService) {
|
|
35468
35507
|
this.fileDataService.register(this);
|
|
35469
35508
|
}
|
|
35509
|
+
this.reloadData();
|
|
35470
35510
|
};
|
|
35471
35511
|
FileManagerComponent.prototype.getRootFolderContent = function () {
|
|
35472
35512
|
var _this = this;
|
|
@@ -35555,6 +35595,7 @@
|
|
|
35555
35595
|
this.onChanged.emit(this._value);
|
|
35556
35596
|
};
|
|
35557
35597
|
FileManagerComponent.prototype.initGrid = function () {
|
|
35598
|
+
this.setting.multipleCheckWhenClickRow = this.multipleCheckWhenClickRow;
|
|
35558
35599
|
this.setting.modelSchemas = [
|
|
35559
35600
|
new ModelSchema({
|
|
35560
35601
|
field: 'name',
|
|
@@ -35793,7 +35834,7 @@
|
|
|
35793
35834
|
FileManagerComponent.prototype.modifyGridInfo = function (gridInfo) {
|
|
35794
35835
|
return __awaiter(this, void 0, void 0, function () {
|
|
35795
35836
|
return __generator(this, function (_b) {
|
|
35796
|
-
gridInfo.filters.
|
|
35837
|
+
gridInfo.filters.splice(0, 0, this.newFilter('parentFolderId', exports.Operator.equal, this.data.currentFolderId));
|
|
35797
35838
|
return [2 /*return*/];
|
|
35798
35839
|
});
|
|
35799
35840
|
});
|
|
@@ -35825,6 +35866,31 @@
|
|
|
35825
35866
|
for (ind in this.model.dataSource) {
|
|
35826
35867
|
_loop_1(ind);
|
|
35827
35868
|
}
|
|
35869
|
+
if (!this.control) {
|
|
35870
|
+
this.control = new FileManagerControlSchema();
|
|
35871
|
+
}
|
|
35872
|
+
switch (this.dataType) {
|
|
35873
|
+
case FileType.VIDEO: {
|
|
35874
|
+
this.control.accept = '.MP4,.MOV,.AVI,.FLV,.WMV';
|
|
35875
|
+
this.model.dataSource = this.model.dataSource.filter(function (x) { return (x.extension == null || x.extension == '.MP4' || x.extension == '.MOV' || x.extension == '.AVI' || x.extension == '.FLV' || x.extension == '.WMV'); });
|
|
35876
|
+
break;
|
|
35877
|
+
}
|
|
35878
|
+
case FileType.IMAGE: {
|
|
35879
|
+
this.control.accept = '.JPG,.JPEG,.PNG';
|
|
35880
|
+
this.model.dataSource = this.model.dataSource.filter(function (x) { return (x.extension == null || x.extension == '.JPG' || x.extension == '.JPEG' || x.extension == '.PNG'); });
|
|
35881
|
+
break;
|
|
35882
|
+
}
|
|
35883
|
+
case FileType.DOC: {
|
|
35884
|
+
this.control.accept = '.DOC,.DOCX,.PDF,.XLS,.XLSX';
|
|
35885
|
+
this.model.dataSource = this.model.dataSource.filter(function (x) { return (x.extension == null || x.extension == '.DOC' || x.extension == '.DOCX' || x.extension == '.PDF' || x.extension == '.XLS' || x.extension == '.XLSX'); });
|
|
35886
|
+
break;
|
|
35887
|
+
}
|
|
35888
|
+
case FileType.AUDIO: {
|
|
35889
|
+
this.control.accept = '.MP3,.WAV,.M4A';
|
|
35890
|
+
this.model.dataSource = this.model.dataSource.filter(function (x) { return (x.extension == null || x.extension == '.MP3' || x.extension == '.WAV' || x.extension == '.M4A'); });
|
|
35891
|
+
break;
|
|
35892
|
+
}
|
|
35893
|
+
}
|
|
35828
35894
|
this.setDatasource(this.model.dataSource);
|
|
35829
35895
|
return [2 /*return*/];
|
|
35830
35896
|
});
|
|
@@ -36492,6 +36558,13 @@
|
|
|
36492
36558
|
FileManagerComponent.prototype.onRowSelect = function (evt) {
|
|
36493
36559
|
this.onSelected.emit(this.model.selectedItems);
|
|
36494
36560
|
};
|
|
36561
|
+
FileManagerComponent.prototype.reloadData = function () {
|
|
36562
|
+
var _this = this;
|
|
36563
|
+
this._fileManagerService.subsVar = this._fileManagerService.
|
|
36564
|
+
invokeReloadFunction.subscribe(function () {
|
|
36565
|
+
_this._triggerProcessData();
|
|
36566
|
+
});
|
|
36567
|
+
};
|
|
36495
36568
|
FileManagerComponent.prototype.addAttachLink = function () {
|
|
36496
36569
|
return __awaiter(this, void 0, void 0, function () {
|
|
36497
36570
|
var obj, res;
|
|
@@ -36572,7 +36645,7 @@
|
|
|
36572
36645
|
{ type: i0.Component, args: [{
|
|
36573
36646
|
// tslint:disable-next-line: component-selector
|
|
36574
36647
|
selector: 'file-manager',
|
|
36575
|
-
template: "<div *ngIf=\"layout == _layout.LIST\" class=\"full-layout\">\r\n <div class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" pButton pRipple type=\"button\" pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\"\r\n tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\" label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\"\r\n (click)=\"createFolder()\">\r\n </button>\r\n\r\n <button pButton icon=\"pi pi-cloud-upload\" pTooltip=\"T\u1EA3i t\u1EC7p tin t\u1EEB m\u00E1y t\u00EDnh c\u1EE7a b\u1EA1n\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i l\u00EAn\"\r\n (click)=\"selectFile()\"></button>\r\n\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n\r\n <!--<button *ngIf=\"model.selectedItems && model.selectedItems.length > 1\" class=\"p-button-text\" pButton\r\n type=\"button\"\r\n pTooltip=\"N\u00E9n & sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\"\r\n iconPos=\"left\" label=\"N\u00E9n & sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\"\r\n (click)=\"generateZipLinkAndCopy()\">\r\n </button>-->\r\n\r\n <button *ngIf=\"!inTaiLieu && !inTaiLieuChung\" pButton icon=\"pi pi-book\"\r\n pTooltip=\"Sao ch\u00E9p t\u1EEB t\u00E0i li\u1EC7u d\u00F9ng chung ho\u1EB7c c\u00E1 nh\u00E2n\" tooltipPosition=\"top\" type=\"button\"\r\n class=\"p-button-text\" label=\"T\u00E0i li\u1EC7u\" (click)=\"showTaiLieuDungChung = true;\">\r\n </button>\r\n\r\n <button *ngIf=\"canSelect()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" icon=\"fas fa-arrows-alt\"\r\n iconPos=\"left\" label=\"Di chuy\u1EC3n\" (click)=\"moveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn t\u1EDBi \u0111\u00E2y\" tooltipPosition=\"top\" icon=\"far fa-hand-paper\"\r\n iconPos=\"left\" label=\"\u0110\u1EB7t t\u1EA1i \u0111\u00E2y\" (click)=\"setMoveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" icon=\"pi pi-undo\" pButton class=\"p-button-text p-button-secondary\"\r\n type=\"button\" pTooltip=\"B\u1ECF di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" label=\"B\u1ECF qua\"\r\n (click)=\"cancelMove()\">\r\n </button>\r\n\r\n <button *ngIf=\"hasSelect()\" pButton type=\"button\"\r\n pTooltip=\"{{ 'X\u00F3a th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn' | translate }}\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n iconPos=\"left\" class=\"p-button-text p-button-danger\" label=\"X\u00F3a\"\r\n (click)=\"deleteMutiple(model.selectedItems)\"></button>\r\n\r\n <button *ngIf=\"hasSelect()\" class=\"p-button-text p-button-secondary\" pButton type=\"button\"\r\n pTooltip=\"N\u00E9n & t\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\" iconPos=\"left\"\r\n label=\"T\u1EA3i v\u1EC1\" (click)=\"downloadMultiple()\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"fm-grid\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"_dataSource\"\r\n [disableKeypressControl]=\"true\" [showScrollBar]=\"false\" class=\"--auto-height-content --no-wrapper-padding\"\r\n [widthFunctionColumn]=\"'8.2rem'\" (onReload)=\"_triggerProcessData($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\">\r\n\r\n <ng-template #explorerItem let-rowData='rowData' let-col='col'>\r\n <span (click)=\"openObject(rowData)\" class=\"pull-left file-ex-icon\"\r\n [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n\r\n <span (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n {{rowData.name}}\r\n </span>\r\n <span *ngIf=\"rowData.signatures\" class=\"pull-right signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template #fileSize let-rowData='rowData'>\r\n <div *ngIf=\"rowData.isFile\">{{rowData.fileSize | fileSize}}</div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <div class=\"function-list\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" pButton type=\"button\"\r\n tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\" (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\" pButton\r\n type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n (click)=\"deleteFile(rowData)\"></button>\r\n\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"pi pi-cloud-download\"\r\n (click)=\"download(rowData)\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n </div>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div *ngIf=\"!readonly || data.breadcrumbs.length > 0\" class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" (click)=\"createFolder()\" pButton pRipple type=\"button\"\r\n pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\" tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\"\r\n label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\">\r\n </button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-cloud-upload\" (click)=\"selectFile()\" label=\"T\u1EA3i l\u00EAn\"></button>\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n <button *ngIf=\"!inTaiLieu\" pButton icon=\"pi pi-book\" pTooltip=\"T\u00E0i li\u1EC7u d\u00F9ng chung\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text\" label=\"T\u00E0i li\u1EC7u\"\r\n (click)=\"showTaiLieuDungChung = true;\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>\r\n <span>{{rowData.name}}</span>\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"rowData.signatures\" class=\"nfl-signature signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n <div *ngIf=\"rowData.isFile\" class=\"nfl-version\">\r\n v{{rowData.currentFileVersion}}\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" (click)=\"onButtonClick(rowData)\"\r\n pButton type=\"button\" tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\"\r\n (click)=\"deleteFile(rowData)\" pButton type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\"></button>\r\n </ng-container>\r\n\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n (click)=\"download(rowData)\" pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\"\r\n icon=\"pi pi-cloud-download\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE_FOR_LIST\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div *ngIf=\"!readonly || data.breadcrumbs.length > 0\" class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" (click)=\"createFolder()\" pButton pRipple type=\"button\"\r\n pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\" tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\"\r\n label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\">\r\n </button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-cloud-upload\" (click)=\"selectFile()\" label=\"T\u1EA3i l\u00EAn\"></button>\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n <button *ngIf=\"!inTaiLieu\" pButton icon=\"pi pi-book\" pTooltip=\"T\u00E0i li\u1EC7u d\u00F9ng chung\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text\" label=\"T\u00E0i li\u1EC7u\"\r\n (click)=\"showTaiLieuDungChung = true;\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n\r\n <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>\r\n <span>{{rowData.name}}</span>\r\n <!-- <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div> -->\r\n </span>\r\n <!-- <span class=\"file-ex-extension\">{{rowData.extension}}</span> -->\r\n </a>\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" (click)=\"onButtonClick(rowData)\"\r\n pButton type=\"button\" tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\"\r\n (click)=\"deleteFile(rowData)\" pButton type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\"></button>\r\n </ng-container>\r\n <!--\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n (click)=\"download(rowData)\" pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\"\r\n icon=\"pi pi-cloud-download\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button> -->\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #breadCrumb>\r\n <div *ngIf=\"data.breadcrumbs.length > 0\" class=\"fm-toolbar-path\">\r\n <p-breadcrumb class=\"customBreadCrumb\" [model]=\"data.breadcrumbs\"></p-breadcrumb>\r\n </div>\r\n</ng-template>\r\n\r\n<p-fileUpload #fileControl [ngStyle]=\"{'display': 'none'}\" mode=\"basic\" [chooseLabel]=\"chooseLabel\" name=\"file\"\r\n [url]=\"apiUploadUrl\" [maxFileSize]=\"maxFileSize\" auto=\"true\"\r\n [invalidFileSizeMessageSummary]=\"invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"invalidFileLimitMessageDetail\" (onProgress)=\"onUploadProgress($event)\"\r\n (onBeforeUpload)=\"onBeforeUpload($event)\" (onSelect)=\"handleSelectFile($event)\" (onUpload)=\"onUploaded($event)\">\r\n</p-fileUpload>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"data.itemsMenuFile\" styleClass=\"fm-contextMenu-panel\">\r\n</p-contextMenu>\r\n\r\n<!-- T\u1EA1o m\u1EDBi/ \u0111\u1ED5i t\u00EAn th\u01B0 m\u1EE5c -->\r\n<tn-dialog *ngIf=\"forms.createFolder.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.createFolder.header | translate\" [popupSize]=\"forms[formIds.createFolder].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.createFolder)\">\r\n <folder-form #formBase [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms[formIds.createFolder].formData\" (onSaved)=\"onSavedForm(formIds.createFolder)\"\r\n (onCancel)=\"onCancelForm(formIds.createFolder)\">\r\n </folder-form>\r\n</tn-dialog>\r\n\r\n<!-- \u0110\u1ED5i t\u00EAn file -->\r\n<tn-dialog *ngIf=\"forms.renameFile.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.renameFile.header | translate\" [popupSize]=\"forms[formIds.renameFile].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.renameFile)\">\r\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"forms[formIds.renameFile].formData\"\r\n (onSaved)=\"onSavedForm(formIds.renameFile)\" (onCancel)=\"onCancelForm(formIds.renameFile)\">\r\n </file-form>\r\n</tn-dialog>\r\n\r\n<!-- Xem file tr\u1EF1c tuy\u1EBFn -->\r\n<file-viewer *ngIf=\"forms.fileViewer.show\" [parentModel]=\"model\" [parentContext]=\"context\" [readonly]=\"readonly\"\r\n [model]=\"forms.fileViewer.formData\" (onClose)=\"closeFileViewer()\">\r\n</file-viewer>\r\n\r\n<!-- Xem phi\u00EAn b\u1EA3n -->\r\n<tn-dialog *ngIf=\"forms.fileVersionList.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.fileVersionList.header | translate\" [popupSize]=\"forms[formIds.fileVersionList].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.fileVersionList)\">\r\n <file-version-list *ngIf=\"forms.fileVersionList.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [fileId]=\"forms[formIds.fileVersionList].fileId\" [readonly]=\"readonly\">\r\n </file-version-list>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showAttachLinkBox\" #dialog2 [maximizable]=\"false\" [header]=\"'Nh\u1EADp li\u00EAn k\u1EBFt' | translate\"\r\n [popupSize]=\"{ width: 600, height: 50}\" (onHide)=\"showAttachLinkBox = false; typedLink=''\">\r\n <div class=\"p-col-12\">\r\n <div class=\"p-grid\">\r\n <div class=\"p-md-10\">\r\n <input #input type=\"text\" placeholder=\"Nh\u1EADp li\u00EAn k\u1EBFt sao ch\u00E9p t\u1EEB t\u1EC7p tin kh\u00E1c...\"\r\n (keyup.enter)=\"addAttachLink()\" pInputText [(ngModel)]=\"typedLink\" class=\"p-col-12\" />\r\n </div>\r\n <div class=\"p-md-2\">\r\n <button type=\"button\" (click)=\"addAttachLink()\" [disabled]=\"typedLink != ''? null : true\" pButton\r\n class=\"p-button-primary p-col-12\" label=\"Ok\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <after-view-checked (loaded)=\"focusInput(input)\"></after-view-checked>\r\n</tn-dialog>\r\n\r\n<tn-dialog #dialog3 *ngIf=\"showTaiLieuDungChung\" [header]=\"'T\u00E0i li\u1EC7u' |translate\"\r\n [popupSize]=\"{ width:1024, height: 800 }\" (onHide)=\"showTaiLieuDungChung = false\">\r\n <file-tai-lieu #formBase [originalFolderId]=\"data.currentFolderId\"\r\n (onSaved)=\"showTaiLieuDungChung = false; this._triggerProcessData()\" (onCancel)=\"showTaiLieuDungChung = false\">\r\n </file-tai-lieu>\r\n</tn-dialog>\r\n\r\n<!--\r\n\r\n<share-file *ngIf=\"forms.shareFile.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFile.formData\">\r\n</share-file>\r\n\r\n<share-folder *ngIf=\"forms.shareFolder.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFolder.formData\">\r\n</share-folder>\r\n -->\r\n\r\n<!-- Xem ch\u1EEF k\u00FD s\u1ED1 -->\r\n<tn-dialog *ngIf=\"forms.signatureDetail.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.signatureDetail.header | translate\" [popupSize]=\"forms[formIds.signatureDetail].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.signatureDetail)\">\r\n <signature-detail [parentModel]=\"model\" [parentContext]=\"context\">\r\n </signature-detail>\r\n</tn-dialog>\r\n<!--K\u00FD s\u1ED1 sim-->\r\n<tn-dialog *ngIf=\"forms.kySoSim.show\" #dialog [styleClass]=\"'address-form'\" [header]=\"forms.kySoSim.header | translate\"\r\n [popupSize]=\"forms.kySoSim.popupSize\" [showFooter]=\"true\" (onHide)=\"onCancelForm(formIds.kySoSim)\">\r\n <app-file-ky-so-sim #fileKySoSim [parentModel]=\"model\" [parentContext]=\"context\">\r\n </app-file-ky-so-sim>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"fas fa-images\" [disabled]=\"model.submitting\" class=\"p-button-text\"\r\n [label]=\"'Ch\u1ECDn ch\u1EEF k\u00FD' | translate\" (click)=\"chonChuKy()\"></button>\r\n <button type=\"button\" pButton icon=\"fas fa-signature\" class=\"p-button-text ui-button-success\"\r\n [disabled]=\"model.submitting\" [label]=\"'Th\u1EF1c hi\u1EC7n k\u00FD' | translate\" (click)=\"kySo()\"></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)=\"forms.kySoSim.show=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
36648
|
+
template: "<div *ngIf=\"layout == _layout.LIST\" class=\"full-layout\">\r\n <div class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" pButton pRipple type=\"button\" pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\"\r\n tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\" label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\"\r\n (click)=\"createFolder()\">\r\n </button>\r\n\r\n <button pButton icon=\"pi pi-cloud-upload\" pTooltip=\"T\u1EA3i t\u1EC7p tin t\u1EEB m\u00E1y t\u00EDnh c\u1EE7a b\u1EA1n\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i l\u00EAn\"\r\n (click)=\"selectFile()\"></button>\r\n\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n\r\n <!--<button *ngIf=\"model.selectedItems && model.selectedItems.length > 1\" class=\"p-button-text\" pButton\r\n type=\"button\"\r\n pTooltip=\"N\u00E9n & sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\"\r\n iconPos=\"left\" label=\"N\u00E9n & sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\"\r\n (click)=\"generateZipLinkAndCopy()\">\r\n </button>-->\r\n\r\n <button *ngIf=\"!inTaiLieu && !inTaiLieuChung\" pButton icon=\"pi pi-book\"\r\n pTooltip=\"Sao ch\u00E9p t\u1EEB t\u00E0i li\u1EC7u d\u00F9ng chung ho\u1EB7c c\u00E1 nh\u00E2n\" tooltipPosition=\"top\" type=\"button\"\r\n class=\"p-button-text\" label=\"T\u00E0i li\u1EC7u\" (click)=\"showTaiLieuDungChung = true;\">\r\n </button>\r\n\r\n <button *ngIf=\"canSelect()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" icon=\"fas fa-arrows-alt\"\r\n iconPos=\"left\" label=\"Di chuy\u1EC3n\" (click)=\"moveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" class=\"p-button-text p-button-success\" pButton type=\"button\"\r\n pTooltip=\"Di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn t\u1EDBi \u0111\u00E2y\" tooltipPosition=\"top\" icon=\"far fa-hand-paper\"\r\n iconPos=\"left\" label=\"\u0110\u1EB7t t\u1EA1i \u0111\u00E2y\" (click)=\"setMoveExplorerItems()\">\r\n </button>\r\n\r\n <button *ngIf=\"canSetMove()\" icon=\"pi pi-undo\" pButton class=\"p-button-text p-button-secondary\"\r\n type=\"button\" pTooltip=\"B\u1ECF di chuy\u1EC3n th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn\" tooltipPosition=\"top\" label=\"B\u1ECF qua\"\r\n (click)=\"cancelMove()\">\r\n </button>\r\n\r\n <button *ngIf=\"hasSelect()\" pButton type=\"button\"\r\n pTooltip=\"{{ 'X\u00F3a th\u01B0 m\u1EE5c/t\u1EC7p tin \u0111\u00E3 ch\u1ECDn' | translate }}\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n iconPos=\"left\" class=\"p-button-text p-button-danger\" label=\"X\u00F3a\"\r\n (click)=\"deleteMutiple(model.selectedItems)\"></button>\r\n\r\n <button *ngIf=\"hasSelect()\" class=\"p-button-text p-button-secondary\" pButton type=\"button\"\r\n pTooltip=\"N\u00E9n & t\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"fas fa-file-archive\" iconPos=\"left\"\r\n label=\"T\u1EA3i v\u1EC1\" (click)=\"downloadMultiple()\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"fm-grid\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"_dataSource\"\r\n [disableKeypressControl]=\"true\" [showScrollBar]=\"false\" class=\"--auto-height-content --no-wrapper-padding\"\r\n [widthFunctionColumn]=\"'8.2rem'\" (onReload)=\"_triggerProcessData($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\">\r\n\r\n <ng-template #explorerItem let-rowData='rowData' let-col='col'>\r\n <span (click)=\"openObject(rowData)\" class=\"pull-left file-ex-icon\"\r\n [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n\r\n <span (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n {{rowData.name}}\r\n </span>\r\n <span *ngIf=\"rowData.signatures\" class=\"pull-right signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template #fileSize let-rowData='rowData'>\r\n <div *ngIf=\"rowData.isFile\">{{rowData.fileSize | fileSize}}</div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <div class=\"function-list\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" pButton type=\"button\"\r\n tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\" (click)=\"onButtonClick(rowData)\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\" pButton\r\n type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\" icon=\"pi pi-trash\"\r\n (click)=\"deleteFile(rowData)\"></button>\r\n\r\n\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </ng-container>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\" icon=\"pi pi-cloud-download\"\r\n (click)=\"download(rowData)\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n </div>\r\n </ng-template>\r\n </crud-list>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div *ngIf=\"!readonly || data.breadcrumbs.length > 0\" class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" (click)=\"createFolder()\" pButton pRipple type=\"button\"\r\n pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\" tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\"\r\n label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\">\r\n </button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-cloud-upload\" (click)=\"selectFile()\" label=\"T\u1EA3i l\u00EAn\"></button>\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n <button *ngIf=\"!inTaiLieu\" pButton icon=\"pi pi-book\" pTooltip=\"T\u00E0i li\u1EC7u d\u00F9ng chung\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text\" label=\"T\u00E0i li\u1EC7u\"\r\n (click)=\"showTaiLieuDungChung = true;\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"breadCrumb\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>\r\n <span>{{rowData.name}}</span>\r\n </span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"rowData.signatures\" class=\"nfl-signature signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div>\r\n <div *ngIf=\"rowData.isFile\" class=\"nfl-version\">\r\n v{{rowData.currentFileVersion}}\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" (click)=\"onButtonClick(rowData)\"\r\n pButton type=\"button\" tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\"\r\n (click)=\"deleteFile(rowData)\" pButton type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\"></button>\r\n </ng-container>\r\n\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n (click)=\"download(rowData)\" pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\"\r\n icon=\"pi pi-cloud-download\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"layout == _layout.SIMPLE_FOR_LIST\" class=\"not-full-layout\" [class.readonly]=\"readonly\">\r\n <div *ngIf=\"!readonly || data.breadcrumbs.length > 0\" class=\"fm-toolbar\">\r\n <div class=\"fm-toolbar-buttons\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button *ngIf=\"!hiddenCreateFolder\" (click)=\"createFolder()\" pButton pRipple type=\"button\"\r\n pTooltip=\"T\u1EA1o th\u01B0 m\u1EE5c m\u1EDBi\" tooltipPosition=\"top\" icon=\"pi pi-folder\" class=\"p-button-text\"\r\n label=\"T\u1EA1o th\u01B0 m\u1EE5c\" iconPos=\"left\">\r\n </button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-cloud-upload\" (click)=\"selectFile()\" label=\"T\u1EA3i l\u00EAn\"></button>\r\n <button pButton icon=\"pi pi-link\" pTooltip=\"T\u1EA3i t\u1EEB li\u00EAn k\u1EBFt trong h\u1EC7 th\u1ED1ng\" tooltipPosition=\"top\"\r\n type=\"button\" class=\"p-button-text p-button-primary\" label=\"T\u1EA3i li\u00EAn k\u1EBFt\"\r\n (click)=\"showAttachLinkBox = true\"></button>\r\n <button *ngIf=\"!inTaiLieu\" pButton icon=\"pi pi-book\" pTooltip=\"T\u00E0i li\u1EC7u d\u00F9ng chung\"\r\n tooltipPosition=\"top\" type=\"button\" class=\"p-button-text\" label=\"T\u00E0i li\u1EC7u\"\r\n (click)=\"showTaiLieuDungChung = true;\">\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nfl-grid\">\r\n <div *ngFor=\"let rowData of _dataSource; index as i\" class=\"nfl-item\">\r\n <div class=\"nfl-no\">\r\n {{i + 1}}.\r\n </div>\r\n\r\n <div class=\"nfl-name\">\r\n <span class=\"pull-left file-ex-icon\" [innerHTML]=\"rowData.name | fileIcon : !rowData.isFile\">\r\n </span>\r\n\r\n <a (click)=\"openObject(rowData)\" class=\"{{rowData.class}} file-ex-name\">\r\n <span>\r\n <span>{{rowData.name}}</span>\r\n <!-- <div *ngIf=\"rowData.signatures\" class=\"signature\" pTooltip=\"Xem chi ti\u1EBFt k\u00FD s\u1ED1\"\r\n tooltipPosition=\"top\" (click)=\"viewListSign($event, rowData.signatures)\">\r\n <i class=\"fas fa-signature\"></i>\r\n </div> -->\r\n </span>\r\n <!-- <span class=\"file-ex-extension\">{{rowData.extension}}</span> -->\r\n </a>\r\n </div>\r\n\r\n <div class=\"nfl-function\">\r\n <ng-container *ngIf=\"!readonly\">\r\n <button class=\"p-button-rounded p-button-text link-or-action\" (click)=\"onButtonClick(rowData)\"\r\n pButton type=\"button\" tooltipPosition=\"top\" pTooltip=\"{{getButtonTooltip(rowData)}}\"\r\n icon=\"{{getButtonIcon(rowData)}}\"></button>\r\n\r\n <button class=\"p-button-danger p-button-rounded p-button-text link-or-action\"\r\n (click)=\"deleteFile(rowData)\" pButton type=\"button\" pTooltip=\"X\u00F3a\" tooltipPosition=\"top\"\r\n icon=\"pi pi-trash\"></button>\r\n </ng-container>\r\n <!--\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n (click)=\"download(rowData)\" pButton type=\"button\" pTooltip=\"T\u1EA3i v\u1EC1\" tooltipPosition=\"top\"\r\n icon=\"pi pi-cloud-download\"></button>\r\n <button *ngIf=\"readonly\" class=\"p-button-secondary p-button-rounded p-button-text link-or-action\"\r\n pButton type=\"button\" pTooltip=\"Sao ch\u00E9p \u0111\u01B0\u1EDDng d\u1EABn\" tooltipPosition=\"top\" icon=\"pi pi-link\"\r\n (click)=\"copyDownloadLink(rowData)\"></button> -->\r\n <button type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"Th\u00EAm\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!_dataSource || !_dataSource.length\" class=\"nfl-no-item\">\r\n Ch\u01B0a c\u00F3 t\u00E0i li\u1EC7u \u0111\u01B0\u1EE3c t\u1EA3i l\u00EAn\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #breadCrumb>\r\n <div *ngIf=\"data.breadcrumbs.length > 0\" class=\"fm-toolbar-path\">\r\n <p-breadcrumb class=\"customBreadCrumb\" [model]=\"data.breadcrumbs\"></p-breadcrumb>\r\n </div>\r\n</ng-template>\r\n\r\n<p-fileUpload #fileControl [ngStyle]=\"{'display': 'none'}\" mode=\"basic\" [chooseLabel]=\"chooseLabel\" name=\"file\"\r\n [url]=\"apiUploadUrl\" [maxFileSize]=\"maxFileSize\" auto=\"true\"\r\n [invalidFileSizeMessageSummary]=\"invalidFileSizeMessageSummary\"\r\n [invalidFileSizeMessageDetail]=\"invalidFileSizeMessageDetail\"\r\n [invalidFileTypeMessageSummary]=\"invalidFileTypeMessageSummary\"\r\n [invalidFileTypeMessageDetail]=\"invalidFileTypeMessageDetail\"\r\n [invalidFileLimitMessageSummary]=\"invalidFileLimitMessageSummary\"\r\n [invalidFileLimitMessageDetail]=\"invalidFileLimitMessageDetail\" (onProgress)=\"onUploadProgress($event)\"\r\n (onBeforeUpload)=\"onBeforeUpload($event)\" (onSelect)=\"handleSelectFile($event)\" (onUpload)=\"onUploaded($event)\"\r\n [accept]=\"control ? control.accept: null\">\r\n</p-fileUpload>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [model]=\"data.itemsMenuFile\" styleClass=\"fm-contextMenu-panel\">\r\n</p-contextMenu>\r\n\r\n<!-- T\u1EA1o m\u1EDBi/ \u0111\u1ED5i t\u00EAn th\u01B0 m\u1EE5c -->\r\n<tn-dialog *ngIf=\"forms.createFolder.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.createFolder.header | translate\" [popupSize]=\"forms[formIds.createFolder].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.createFolder)\">\r\n <folder-form #formBase [parentModel]=\"model\" [parentContext]=\"context\"\r\n [model]=\"forms[formIds.createFolder].formData\" (onSaved)=\"onSavedForm(formIds.createFolder)\"\r\n (onCancel)=\"onCancelForm(formIds.createFolder)\">\r\n </folder-form>\r\n</tn-dialog>\r\n\r\n<!-- \u0110\u1ED5i t\u00EAn file -->\r\n<tn-dialog *ngIf=\"forms.renameFile.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.renameFile.header | translate\" [popupSize]=\"forms[formIds.renameFile].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.renameFile)\">\r\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"forms[formIds.renameFile].formData\"\r\n (onSaved)=\"onSavedForm(formIds.renameFile)\" (onCancel)=\"onCancelForm(formIds.renameFile)\">\r\n </file-form>\r\n</tn-dialog>\r\n\r\n<!-- Xem file tr\u1EF1c tuy\u1EBFn -->\r\n<file-viewer *ngIf=\"forms.fileViewer.show\" [parentModel]=\"model\" [parentContext]=\"context\" [readonly]=\"readonly\"\r\n [model]=\"forms.fileViewer.formData\" (onClose)=\"closeFileViewer()\">\r\n</file-viewer>\r\n\r\n<!-- Xem phi\u00EAn b\u1EA3n -->\r\n<tn-dialog *ngIf=\"forms.fileVersionList.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.fileVersionList.header | translate\" [popupSize]=\"forms[formIds.fileVersionList].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.fileVersionList)\">\r\n <file-version-list *ngIf=\"forms.fileVersionList.show\" [parentModel]=\"model\" [parentContext]=\"context\"\r\n [fileId]=\"forms[formIds.fileVersionList].fileId\" [readonly]=\"readonly\">\r\n </file-version-list>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"showAttachLinkBox\" #dialog2 [maximizable]=\"false\" [header]=\"'Nh\u1EADp li\u00EAn k\u1EBFt' | translate\"\r\n [popupSize]=\"{ width: 600, height: 50}\" (onHide)=\"showAttachLinkBox = false; typedLink=''\">\r\n <div class=\"p-col-12\">\r\n <div class=\"p-grid\">\r\n <div class=\"p-md-10\">\r\n <input #input type=\"text\" placeholder=\"Nh\u1EADp li\u00EAn k\u1EBFt sao ch\u00E9p t\u1EEB t\u1EC7p tin kh\u00E1c...\"\r\n (keyup.enter)=\"addAttachLink()\" pInputText [(ngModel)]=\"typedLink\" class=\"p-col-12\" />\r\n </div>\r\n <div class=\"p-md-2\">\r\n <button type=\"button\" (click)=\"addAttachLink()\" [disabled]=\"typedLink != ''? null : true\" pButton\r\n class=\"p-button-primary p-col-12\" label=\"Ok\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <after-view-checked (loaded)=\"focusInput(input)\"></after-view-checked>\r\n</tn-dialog>\r\n\r\n<tn-dialog #dialog3 *ngIf=\"showTaiLieuDungChung\" [header]=\"'T\u00E0i li\u1EC7u' |translate\"\r\n [popupSize]=\"{ width:1024, height: 800 }\" (onHide)=\"showTaiLieuDungChung = false\">\r\n <file-tai-lieu #formBase [originalFolderId]=\"data.currentFolderId\"\r\n (onSaved)=\"showTaiLieuDungChung = false; this._triggerProcessData()\" (onCancel)=\"showTaiLieuDungChung = false\">\r\n </file-tai-lieu>\r\n</tn-dialog>\r\n\r\n<!--\r\n\r\n<share-file *ngIf=\"forms.shareFile.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFile.formData\">\r\n</share-file>\r\n\r\n<share-folder *ngIf=\"forms.shareFolder.show\" [parentDataModel]=\"model\" [parentDataContext]=\"context\"\r\n [model]=\"forms.shareFolder.formData\">\r\n</share-folder>\r\n -->\r\n\r\n<!-- Xem ch\u1EEF k\u00FD s\u1ED1 -->\r\n<tn-dialog *ngIf=\"forms.signatureDetail.show\" #dialog [styleClass]=\"'address-form'\"\r\n [header]=\"forms.signatureDetail.header | translate\" [popupSize]=\"forms[formIds.signatureDetail].popupSize\"\r\n (onHide)=\"onCancelForm(formIds.signatureDetail)\">\r\n <signature-detail [parentModel]=\"model\" [parentContext]=\"context\">\r\n </signature-detail>\r\n</tn-dialog>\r\n<!--K\u00FD s\u1ED1 sim-->\r\n<tn-dialog *ngIf=\"forms.kySoSim.show\" #dialog [styleClass]=\"'address-form'\" [header]=\"forms.kySoSim.header | translate\"\r\n [popupSize]=\"forms.kySoSim.popupSize\" [showFooter]=\"true\" (onHide)=\"onCancelForm(formIds.kySoSim)\">\r\n <app-file-ky-so-sim #fileKySoSim [parentModel]=\"model\" [parentContext]=\"context\">\r\n </app-file-ky-so-sim>\r\n <ng-template #footer>\r\n <button type=\"button\" pButton icon=\"fas fa-images\" [disabled]=\"model.submitting\" class=\"p-button-text\"\r\n [label]=\"'Ch\u1ECDn ch\u1EEF k\u00FD' | translate\" (click)=\"chonChuKy()\"></button>\r\n <button type=\"button\" pButton icon=\"fas fa-signature\" class=\"p-button-text ui-button-success\"\r\n [disabled]=\"model.submitting\" [label]=\"'Th\u1EF1c hi\u1EC7n k\u00FD' | translate\" (click)=\"kySo()\"></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)=\"forms.kySoSim.show=false\"></button>\r\n </ng-template>\r\n</tn-dialog>",
|
|
36576
36649
|
providers: [
|
|
36577
36650
|
{
|
|
36578
36651
|
provide: forms.NG_VALUE_ACCESSOR,
|
|
@@ -36601,7 +36674,8 @@
|
|
|
36601
36674
|
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
36602
36675
|
{ type: FolderService },
|
|
36603
36676
|
{ type: FileObjectService },
|
|
36604
|
-
{ type: DownloadLinkService }
|
|
36677
|
+
{ type: DownloadLinkService },
|
|
36678
|
+
{ type: FileManagerService }
|
|
36605
36679
|
]; };
|
|
36606
36680
|
FileManagerComponent.propDecorators = {
|
|
36607
36681
|
fileControl: [{ type: i0.ViewChild, args: ['fileControl',] }],
|
|
@@ -36618,6 +36692,8 @@
|
|
|
36618
36692
|
invalidFileTypeMessageDetail: [{ type: i0.Input }],
|
|
36619
36693
|
invalidFileLimitMessageSummary: [{ type: i0.Input }],
|
|
36620
36694
|
invalidFileLimitMessageDetail: [{ type: i0.Input }],
|
|
36695
|
+
dataType: [{ type: i0.Input }],
|
|
36696
|
+
rootFolderName: [{ type: i0.Input }],
|
|
36621
36697
|
serviceCode: [{ type: i0.Input }],
|
|
36622
36698
|
entity: [{ type: i0.Input }],
|
|
36623
36699
|
entityKey: [{ type: i0.Input }],
|
|
@@ -36626,6 +36702,7 @@
|
|
|
36626
36702
|
inTaiLieuChung: [{ type: i0.Input }],
|
|
36627
36703
|
copyToFolderId: [{ type: i0.Input }],
|
|
36628
36704
|
value: [{ type: i0.Input }],
|
|
36705
|
+
multipleCheckWhenClickRow: [{ type: i0.Input }],
|
|
36629
36706
|
onReady: [{ type: i0.Output }],
|
|
36630
36707
|
entityKeyChange: [{ type: i0.Output }],
|
|
36631
36708
|
closePopup: [{ type: i0.Output }],
|
|
@@ -36636,10 +36713,13 @@
|
|
|
36636
36713
|
|
|
36637
36714
|
var FilePickerDialogComponent = /** @class */ (function (_super) {
|
|
36638
36715
|
__extends(FilePickerDialogComponent, _super);
|
|
36639
|
-
function FilePickerDialogComponent(_injector, _fileObjectService) {
|
|
36716
|
+
function FilePickerDialogComponent(_injector, _fileObjectService, _fileManagerService) {
|
|
36640
36717
|
var _this = _super.call(this, _injector) || this;
|
|
36641
36718
|
_this._injector = _injector;
|
|
36642
36719
|
_this._fileObjectService = _fileObjectService;
|
|
36720
|
+
_this._fileManagerService = _fileManagerService;
|
|
36721
|
+
_this.isFilePicker = false;
|
|
36722
|
+
_this.multipleCheckWhenClickRow = true;
|
|
36643
36723
|
_this.selectedItems = [];
|
|
36644
36724
|
_this.onChanged = new i0.EventEmitter();
|
|
36645
36725
|
_this.setting.baseService = _this._fileObjectService;
|
|
@@ -36647,7 +36727,29 @@
|
|
|
36647
36727
|
return _this;
|
|
36648
36728
|
}
|
|
36649
36729
|
FilePickerDialogComponent.prototype.ngOnInit = function () {
|
|
36730
|
+
var _this = this;
|
|
36650
36731
|
this.setting.schema = [
|
|
36732
|
+
new LabelSchema({
|
|
36733
|
+
field: 'emptyControl',
|
|
36734
|
+
mdWidth: 9
|
|
36735
|
+
}),
|
|
36736
|
+
new DropdownControlSchema({
|
|
36737
|
+
field: 'fileType',
|
|
36738
|
+
showLabel: false,
|
|
36739
|
+
placeholder: 'Chọn loại file',
|
|
36740
|
+
dataSource: fileTypeSource,
|
|
36741
|
+
mdWidth: 3,
|
|
36742
|
+
onChanged: function (evt) {
|
|
36743
|
+
if (evt.value != null) {
|
|
36744
|
+
_this.dataType = evt.value.id;
|
|
36745
|
+
}
|
|
36746
|
+
else {
|
|
36747
|
+
_this.dataType = null;
|
|
36748
|
+
}
|
|
36749
|
+
_this.reloadData();
|
|
36750
|
+
},
|
|
36751
|
+
defaultValue: this.dataType
|
|
36752
|
+
}),
|
|
36651
36753
|
new CustomControlSchema({
|
|
36652
36754
|
field: 'fileManager',
|
|
36653
36755
|
showLabel: false,
|
|
@@ -36660,24 +36762,29 @@
|
|
|
36660
36762
|
FilePickerDialogComponent.prototype.chooseFiles = function (data) {
|
|
36661
36763
|
var e_1, _a;
|
|
36662
36764
|
var result = '';
|
|
36663
|
-
|
|
36664
|
-
|
|
36665
|
-
var item = _c.value;
|
|
36666
|
-
result += this.renderHtml(item);
|
|
36667
|
-
}
|
|
36765
|
+
if (this.isFilePicker) {
|
|
36766
|
+
result = this.selectedItems;
|
|
36668
36767
|
}
|
|
36669
|
-
|
|
36670
|
-
finally {
|
|
36768
|
+
else {
|
|
36671
36769
|
try {
|
|
36672
|
-
|
|
36770
|
+
for (var _b = __values(this.selectedItems), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
36771
|
+
var item = _c.value;
|
|
36772
|
+
result += this.renderHtml(item);
|
|
36773
|
+
}
|
|
36774
|
+
}
|
|
36775
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
36776
|
+
finally {
|
|
36777
|
+
try {
|
|
36778
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
36779
|
+
}
|
|
36780
|
+
finally { if (e_1) throw e_1.error; }
|
|
36673
36781
|
}
|
|
36674
|
-
finally { if (e_1) throw e_1.error; }
|
|
36675
36782
|
}
|
|
36676
36783
|
this.onChanged.emit(result);
|
|
36677
36784
|
};
|
|
36678
36785
|
FilePickerDialogComponent.prototype.renderHtml = function (element) {
|
|
36679
36786
|
var ressult = '';
|
|
36680
|
-
if (element.extension == '.PNG' || element.extension == '.JPG' || element.extension == '.JPEG') {
|
|
36787
|
+
if (element.extension.toUpperCase() == '.PNG' || element.extension == '.JPG' || element.extension == '.JPEG') {
|
|
36681
36788
|
ressult = '<div style="width:100%; margin-bottom: 15px"><img style="display:block; margin:auto" width="500" src="' + this._fileObjectService.endPoint + '/v5/FileObject/public/' + element.id + '/download" /></div>';
|
|
36682
36789
|
}
|
|
36683
36790
|
return ressult;
|
|
@@ -36685,6 +36792,9 @@
|
|
|
36685
36792
|
FilePickerDialogComponent.prototype.selectedFile = function (data) {
|
|
36686
36793
|
this.selectedItems = data;
|
|
36687
36794
|
};
|
|
36795
|
+
FilePickerDialogComponent.prototype.reloadData = function () {
|
|
36796
|
+
this._fileManagerService.onReload();
|
|
36797
|
+
};
|
|
36688
36798
|
return FilePickerDialogComponent;
|
|
36689
36799
|
}(DataFormBase));
|
|
36690
36800
|
FilePickerDialogComponent.decorators = [
|
|
@@ -36697,9 +36807,13 @@
|
|
|
36697
36807
|
];
|
|
36698
36808
|
FilePickerDialogComponent.ctorParameters = function () { return [
|
|
36699
36809
|
{ type: i0.Injector },
|
|
36700
|
-
{ type: FileObjectService }
|
|
36810
|
+
{ type: FileObjectService },
|
|
36811
|
+
{ type: FileManagerService }
|
|
36701
36812
|
]; };
|
|
36702
36813
|
FilePickerDialogComponent.propDecorators = {
|
|
36814
|
+
isFilePicker: [{ type: i0.Input }],
|
|
36815
|
+
multipleCheckWhenClickRow: [{ type: i0.Input }],
|
|
36816
|
+
dataType: [{ type: i0.Input }],
|
|
36703
36817
|
onChanged: [{ type: i0.Output }]
|
|
36704
36818
|
};
|
|
36705
36819
|
|
|
@@ -44916,6 +45030,8 @@
|
|
|
44916
45030
|
imagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage imageoptions',
|
|
44917
45031
|
language: 'vi_VN',
|
|
44918
45032
|
statusbar: false,
|
|
45033
|
+
relative_urls: false,
|
|
45034
|
+
convert_urls: false,
|
|
44919
45035
|
tabfocus_elements: ':prev,:next',
|
|
44920
45036
|
init_instance_callback: callbackFunc,
|
|
44921
45037
|
mobile: {
|
|
@@ -44925,7 +45041,7 @@
|
|
|
44925
45041
|
};
|
|
44926
45042
|
if (mode == 'full') {
|
|
44927
45043
|
config.plugins = [
|
|
44928
|
-
'advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus
|
|
45044
|
+
'advlist autolink lists link image charmap print preview anchor textcolor searchreplace visualblocks code fullscreen insertdatetime media table media code lists colorpicker imagetools tabfocus editFileNew addNews'
|
|
44929
45045
|
];
|
|
44930
45046
|
config.toolbar = 'formatselect | bold italic Strikethrough forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | table link editFileNew addNews | print removeformat undo redo | fullscreen ';
|
|
44931
45047
|
config.mobile.toolbar = 'bold italic Strikethrough forecolor backcolor | bullist numlist | fullscreen';
|
|
@@ -45075,7 +45191,7 @@
|
|
|
45075
45191
|
TnTinymceComponent.decorators = [
|
|
45076
45192
|
{ type: i0.Component, args: [{
|
|
45077
45193
|
selector: 'tn-tinymce',
|
|
45078
|
-
template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <add-news #listBase (showChange)=\"showChanged($event)\"></add-news>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog>\r\n",
|
|
45194
|
+
template: "<input *ngIf=\"!_deviceDetectorService.isDesktop()\" class=\"input-tab-trap\" (focus)=\"focusTrap($event)\" />\r\n<textarea class=\"tinymce-control\" id={{id}} [ngStyle]=\"{height: height+'px'}\">\r\n</textarea>\r\n<tn-dialog #dialog *ngIf=\"equationFormModel.show\" [closeOnEscape]=\"false\"\r\n [header]=\"'C\u00F4ng th\u1EE9c to\u00E1n h\u1ECDc (d\u00F9ng laTex)' | translate\" [popupSize]=\"popupSize\">\r\n <tn-custom-scrollbar #scrollbar>\r\n <equation-editor [data]=\"dataEquation\">\r\n </equation-editor>\r\n </tn-custom-scrollbar>\r\n <ng-template #footer>\r\n <button icon=\"fas fa-check\" [disabled]=\"model.submitting\" pButton type=\"button\" (click)=\"handleOk($event)\"\r\n [label]=\"'Ok' | translate\"></button>\r\n <button icon=\"fas fa-undo\" [disabled]=\"model.submitting\" pButton class=\"ui-button-secondary\" type=\"button\"\r\n (click)=\"equationFormModel.show = false\" [label]=\"'FORM.CANCEL' | translate\"></button>\r\n </ng-template>\r\n</tn-dialog>\r\n\r\n\r\n<tn-dialog *ngIf=\"isAddNews\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddNews = false\">\r\n <add-news #listBase [languageCode]=\"languageCode\" (showChange)=\"showChanged($event)\"></add-news>\r\n</tn-dialog>\r\n\r\n<tn-dialog *ngIf=\"isAddFile\" #dialog [styleClass]=\"'address-form'\" [header]=\"header | translate\" [popupSize]=\"popupSize\"\r\n (onHide)=\"isAddFile = false\">\r\n <file-picker-dialog #formBase [parentModel]=\" model\" [parentContext]=\"context\" (closeForm)=\"isAddFile = false\"\r\n (onCancel)=\"handleRFCancel($event)\" (onChanged)=\"showChanged($event)\">\r\n </file-picker-dialog>\r\n</tn-dialog>\r\n",
|
|
45079
45195
|
providers: [
|
|
45080
45196
|
{
|
|
45081
45197
|
provide: forms.NG_VALUE_ACCESSOR,
|
|
@@ -45100,6 +45216,7 @@
|
|
|
45100
45216
|
required: [{ type: i0.Input }],
|
|
45101
45217
|
height: [{ type: i0.Input }],
|
|
45102
45218
|
field: [{ type: i0.Input }],
|
|
45219
|
+
languageCode: [{ type: i0.Input }],
|
|
45103
45220
|
keydown: [{ type: i0.Output }],
|
|
45104
45221
|
onBlur: [{ type: i0.Output }],
|
|
45105
45222
|
onChanged: [{ type: i0.Output }]
|
|
@@ -50111,6 +50228,7 @@
|
|
|
50111
50228
|
Object.assign(evt.model, this.control.data);
|
|
50112
50229
|
}
|
|
50113
50230
|
if (!evt.model.idLoaiCongViec) return [3 /*break*/, 2];
|
|
50231
|
+
this.idLoaiCongViec = evt.model.idLoaiCongViec;
|
|
50114
50232
|
return [4 /*yield*/, this.loadWorkflowByLoaiCongViec(evt, evt.model.idLoaiCongViec)];
|
|
50115
50233
|
case 1:
|
|
50116
50234
|
_a.sent();
|
|
@@ -50242,7 +50360,7 @@
|
|
|
50242
50360
|
BaseCongViecFormComponent.decorators = [
|
|
50243
50361
|
{ type: i0.Component, args: [{
|
|
50244
50362
|
selector: 'base-congviec-form',
|
|
50245
|
-
template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n [autoFocus]=\"autoFocus\" (onFormReady)=\"_handleFormReady($event)\">\r\n </crud-form>\r\n <base-congviec-dinhkem [loadDetailFromQueryParam]=\"false\" [formState]=\"model.formState\"\r\n [taskId]=\"model.data.id\">\r\n </base-congviec-dinhkem>\r\n <div class=\"tab-child\">\r\n <tn-tabview [data]=\"tabDataChild\" (onTabChange)=\"onTabChange($event)\">\r\n <ng-template #fileDinhKem>\r\n <file-manager [loadDetailFromQueryParam]=\"false\" [serviceCode]=\"setting.baseService.serviceCode\"\r\n [entity]=\"setting.baseService.entityName\" [entityKey]=\"model.data.id\"\r\n [readonly]=\"model.formState == enumFormState.VIEW\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #taskChild>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <ng-template #taskLienQuan>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecLienQuan\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <!-- <ng-template #traoDoiCongViec>\r\n <div style=\"height: 350px;\">\r\n <chat-box [showSendMessageBox]=\"false\" [serviceCode]=\"'congviec'\" [entity]=\"'congviec'\"\r\n [taskId]=\"model.data.id\" [parentModel]=\"model\" [parentContext]=\"context\" [users]=\"users\"></chat-box>\r\n </div>\r\n <chat-send-message-box [parentContext]=\"context\">\r\n </chat-send-message-box>\r\n </ng-template> -->\r\n </tn-tabview>\r\n </div>\r\n </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($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</ng-template>",
|
|
50363
|
+
template: "<!-- <ng-container *ngIf=\"_isFormAddNew()\">\r\n <div style=\"height: 100%; overflow: hidden\">\r\n <tn-tabview [data]=\"tabDataTask\" [allowViewAll]=\"true\">\r\n <ng-template #congviec>\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n </ng-template>\r\n <ng-template #workflow>\r\n <tn-custom-scrollbar>\r\n <congviec-next-first-step [crudListSetting]=\"crudList.setting\"\r\n [workflowCode]=\"model.data._WorkflowCode\" [taskModel]=\"model.data\"></congviec-next-first-step>\r\n </tn-custom-scrollbar>\r\n </ng-template>\r\n </tn-tabview>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!_isFormAddNew()\">\r\n <ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n</ng-container> -->\r\n<ng-container *ngTemplateOutlet=\"contentTask\"></ng-container>\r\n<ng-template #contentTask>\r\n <tn-custom-scrollbar>\r\n <div *ngIf=\"idLoaiCongViec === 'f51ca5f6-d266-4521-a633-e2f9f8528aaf'\" class=\"note\"\r\n style=\"padding: 0.5rem 1rem;\">\r\n <b>Ghi ch\u00FA</b>: Vui l\u00F2ng chuy\u1EC3n sang ph\u00E2n h\u1EC7 V\u0103n b\u1EA3n \u0111\u1EC3 t\u1EA1o D\u1EF1 th\u1EA3o v\u0103n b\u1EA3n \u0111i. Link:\r\n <a href=\"https://usmart.utc.edu.vn/vanban/vanbandi/du-thao\" target=\"_blank\">\r\n https://usmart.utc.edu.vn/vanban/vanbandi/du-thao</a>\r\n </div>\r\n\r\n <crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n [autoFocus]=\"autoFocus\" (onFormReady)=\"_handleFormReady($event)\">\r\n </crud-form>\r\n <base-congviec-dinhkem [loadDetailFromQueryParam]=\"false\" [formState]=\"model.formState\"\r\n [taskId]=\"model.data.id\">\r\n </base-congviec-dinhkem>\r\n <div class=\"tab-child\">\r\n <tn-tabview [data]=\"tabDataChild\" (onTabChange)=\"onTabChange($event)\">\r\n <ng-template #fileDinhKem>\r\n <file-manager [loadDetailFromQueryParam]=\"false\" [serviceCode]=\"setting.baseService.serviceCode\"\r\n [entity]=\"setting.baseService.entityName\" [entityKey]=\"model.data.id\"\r\n [readonly]=\"model.formState == enumFormState.VIEW\">\r\n </file-manager>\r\n </ng-template>\r\n <ng-template #taskChild>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecCon\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <ng-template #taskLienQuan>\r\n <base-congviec [loadDetailFromQueryParam]=\"false\" [isChildView]=\"true\" [formState]=\"model.formState\"\r\n [loaiDanhSach]=\"enumLoaiDanhSachCongViec.CongViecLienQuan\" [idCongViec]=\"model.data.id\">\r\n </base-congviec>\r\n </ng-template>\r\n <!-- <ng-template #traoDoiCongViec>\r\n <div style=\"height: 350px;\">\r\n <chat-box [showSendMessageBox]=\"false\" [serviceCode]=\"'congviec'\" [entity]=\"'congviec'\"\r\n [taskId]=\"model.data.id\" [parentModel]=\"model\" [parentContext]=\"context\" [users]=\"users\"></chat-box>\r\n </div>\r\n <chat-send-message-box [parentContext]=\"context\">\r\n </chat-send-message-box>\r\n </ng-template> -->\r\n </tn-tabview>\r\n </div>\r\n </tn-custom-scrollbar>\r\n</ng-template>\r\n<ng-template #buttonTemplate>\r\n <button *ngFor=\"let butt of this.buttons\" pButton [icon]=\"butt.icon\" [label]=\"butt.label\" class=\"p-button-text\"\r\n (click)=\"butt.command()\">\r\n </button>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\"\r\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($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</ng-template>",
|
|
50246
50364
|
providers: [ComponentContextService],
|
|
50247
50365
|
styles: [".tab-child{padding:1em}"]
|
|
50248
50366
|
},] }
|
|
@@ -50520,9 +50638,13 @@
|
|
|
50520
50638
|
if (this.isFromDashboard) {
|
|
50521
50639
|
var filters = Object.assign(Object.assign({}, this.parentModel.selectedItem.filter), { stateCode: this.parentModel.selectedItem.stateCode, stateCodeByViewDonVi: this.parentModel.selectedItem.stateCodeByViewDonVi, gridInfo: gridInfo });
|
|
50522
50640
|
return this._congViecService.getListTasksDashboard(filters);
|
|
50641
|
+
// gridInfo.filters.push(
|
|
50642
|
+
// this.newFilter(KeyFilterStateByMenuCongViec, Operator.equal, this.parentModel.selectedItem.stateCode)
|
|
50643
|
+
// );
|
|
50644
|
+
// return super.getPromiseGetData(gridInfo);
|
|
50523
50645
|
}
|
|
50524
50646
|
else {
|
|
50525
|
-
return
|
|
50647
|
+
return _super.prototype.getPromiseGetData.call(this, gridInfo);
|
|
50526
50648
|
}
|
|
50527
50649
|
};
|
|
50528
50650
|
BaseCongViecComponent.prototype.getIdsCongViecLienQuan = function () {
|
|
@@ -55985,45 +56107,46 @@
|
|
|
55985
56107
|
exports.ɵdq = MyDriveService;
|
|
55986
56108
|
exports.ɵdr = FileVersionService;
|
|
55987
56109
|
exports.ɵds = FileExplorerNewService;
|
|
55988
|
-
exports.ɵdt =
|
|
55989
|
-
exports.ɵdu =
|
|
55990
|
-
exports.ɵdv =
|
|
55991
|
-
exports.ɵdw =
|
|
55992
|
-
exports.ɵdx =
|
|
55993
|
-
exports.ɵdy =
|
|
55994
|
-
exports.ɵdz =
|
|
56110
|
+
exports.ɵdt = FileManagerService;
|
|
56111
|
+
exports.ɵdu = FolderFormComponent;
|
|
56112
|
+
exports.ɵdv = FileFormComponent;
|
|
56113
|
+
exports.ɵdw = FileViewerComponent;
|
|
56114
|
+
exports.ɵdx = FileVersionListComponent;
|
|
56115
|
+
exports.ɵdy = WorkflowHistoryComponent;
|
|
56116
|
+
exports.ɵdz = EntityWorkflowHistoryService;
|
|
55995
56117
|
exports.ɵe = CanBo_HoSoService;
|
|
55996
|
-
exports.ɵea =
|
|
55997
|
-
exports.ɵeb =
|
|
55998
|
-
exports.ɵec =
|
|
55999
|
-
exports.ɵed =
|
|
56000
|
-
exports.ɵee =
|
|
56001
|
-
exports.ɵef =
|
|
56002
|
-
exports.ɵeg =
|
|
56003
|
-
exports.ɵeh =
|
|
56004
|
-
exports.ɵei =
|
|
56005
|
-
exports.ɵej =
|
|
56006
|
-
exports.ɵek =
|
|
56007
|
-
exports.ɵel =
|
|
56008
|
-
exports.ɵem =
|
|
56009
|
-
exports.ɵen =
|
|
56010
|
-
exports.ɵeo =
|
|
56011
|
-
exports.ɵep =
|
|
56012
|
-
exports.ɵeq =
|
|
56013
|
-
exports.ɵer =
|
|
56014
|
-
exports.ɵes =
|
|
56015
|
-
exports.ɵet =
|
|
56016
|
-
exports.ɵeu =
|
|
56017
|
-
exports.ɵev =
|
|
56018
|
-
exports.ɵew =
|
|
56019
|
-
exports.ɵex =
|
|
56020
|
-
exports.ɵey =
|
|
56021
|
-
exports.ɵez =
|
|
56118
|
+
exports.ɵea = WorkflowHistoryDialogComponent;
|
|
56119
|
+
exports.ɵeb = WorkflowHistoryNewComponent;
|
|
56120
|
+
exports.ɵec = WorkflowSettingComponent;
|
|
56121
|
+
exports.ɵed = EntityWorkflowSettingService;
|
|
56122
|
+
exports.ɵee = WorkflowSettingDialogComponent;
|
|
56123
|
+
exports.ɵef = WorkflowPermissionComponent;
|
|
56124
|
+
exports.ɵeg = WorkflowPermissionFormComponent;
|
|
56125
|
+
exports.ɵeh = QrCodeGeneratorComponent;
|
|
56126
|
+
exports.ɵei = AccessDeniedV1Component;
|
|
56127
|
+
exports.ɵej = AddNewsComponent;
|
|
56128
|
+
exports.ɵek = ArticleService;
|
|
56129
|
+
exports.ɵel = NewsCategoryService;
|
|
56130
|
+
exports.ɵem = NotFoundComponent;
|
|
56131
|
+
exports.ɵen = UniversalLinkProcessorComponent;
|
|
56132
|
+
exports.ɵeo = SignatureDetailComponent;
|
|
56133
|
+
exports.ɵep = ChatService;
|
|
56134
|
+
exports.ɵeq = ContentsService;
|
|
56135
|
+
exports.ɵer = StatusExtendsService;
|
|
56136
|
+
exports.ɵes = MessageBoardService;
|
|
56137
|
+
exports.ɵet = KySoSimDanhSachChuKyComponent;
|
|
56138
|
+
exports.ɵeu = KySoSimChuKyUserService;
|
|
56139
|
+
exports.ɵev = FileKySoSimComponent;
|
|
56140
|
+
exports.ɵew = KySoSimSignPDFService;
|
|
56141
|
+
exports.ɵex = TaiLieuCuaToiComponent;
|
|
56142
|
+
exports.ɵey = KhaiThacTaiLieuDungChungComponent;
|
|
56143
|
+
exports.ɵez = DanhMucDungChungService;
|
|
56022
56144
|
exports.ɵf = AfterViewCheckedComponent;
|
|
56023
|
-
exports.ɵfa =
|
|
56024
|
-
exports.ɵfb =
|
|
56025
|
-
exports.ɵfc =
|
|
56026
|
-
exports.ɵfd =
|
|
56145
|
+
exports.ɵfa = CheckReadyComponent;
|
|
56146
|
+
exports.ɵfb = SendAccessTokenInterceptor;
|
|
56147
|
+
exports.ɵfc = LogInterceptor;
|
|
56148
|
+
exports.ɵfd = PermissionUtilsInterceptor;
|
|
56149
|
+
exports.ɵfe = TraceInterceptor;
|
|
56027
56150
|
exports.ɵg = AdvanceSearchComponent;
|
|
56028
56151
|
exports.ɵh = AppRootMenuComponent;
|
|
56029
56152
|
exports.ɵi = AppTopBarComponent;
|