@rosoftlab/rdict 1.0.4-alpha-8 → 1.0.4-alpha-10
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/fesm2022/rosoftlab-rdict.mjs +262 -39
- package/fesm2022/rosoftlab-rdict.mjs.map +1 -1
- package/lib/components/layouts/full/full.component.d.ts +11 -3
- package/lib/components/layouts/full/kendo-toolbar-span.d.ts +14 -0
- package/lib/components/rdict-generic-table/rdict-generic-table.component.d.ts +4 -2
- package/lib/services/file.service.d.ts +24 -0
- package/package.json +2 -2
|
@@ -1,39 +1,41 @@
|
|
|
1
|
-
import * as i6
|
|
1
|
+
import * as i6 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Inject, Injectable,
|
|
4
|
+
import { Inject, Injectable, forwardRef, ViewChild, Input, Component, NgModule, HostBinding, EventEmitter, ElementRef, Output, ViewEncapsulation, InjectionToken } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/router';
|
|
6
6
|
import { RouterModule, UrlSegment, NavigationStart } from '@angular/router';
|
|
7
7
|
import * as i2 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
|
-
import * as i5 from '@progress/kendo-angular-buttons';
|
|
10
9
|
import { ButtonsModule, KENDO_BUTTONS } from '@progress/kendo-angular-buttons';
|
|
11
10
|
import { KENDO_SVGICON } from '@progress/kendo-angular-icons';
|
|
12
|
-
import * as
|
|
11
|
+
import * as i7 from '@progress/kendo-angular-layout';
|
|
13
12
|
import { LayoutModule } from '@progress/kendo-angular-layout';
|
|
14
|
-
import * as
|
|
15
|
-
import { ToolBarModule, KENDO_TOOLBAR
|
|
13
|
+
import * as i6$1 from '@progress/kendo-angular-toolbar';
|
|
14
|
+
import { ToolBarToolComponent, ToolBarModule, KENDO_TOOLBAR } from '@progress/kendo-angular-toolbar';
|
|
16
15
|
import * as allIcons from '@progress/kendo-svg-icons';
|
|
17
|
-
import { menuIcon, saveIcon, arrowLeftIcon, pencilIcon, trashIcon, plusIcon } from '@progress/kendo-svg-icons';
|
|
16
|
+
import { menuIcon, userIcon, logoutIcon, saveIcon, arrowLeftIcon, pencilIcon, trashIcon, plusIcon } from '@progress/kendo-svg-icons';
|
|
17
|
+
import * as i4 from '@rosoftlab/core';
|
|
18
|
+
import { BaseModel, Attribute, BaseModelConfig, BaseService } from '@rosoftlab/core';
|
|
18
19
|
import { Subject, fromEvent, Observable, defer, mergeMap, filter, race, first, map, timeout, from, tap, catchError, throwError, BehaviorSubject } from 'rxjs';
|
|
19
20
|
import { v4 } from 'uuid';
|
|
20
21
|
import { io } from 'socket.io-client';
|
|
21
22
|
import * as i2$1 from '@progress/kendo-angular-dialog';
|
|
22
23
|
import { DialogCloseResult, KENDO_DIALOG } from '@progress/kendo-angular-dialog';
|
|
23
24
|
import * as i3 from '@progress/kendo-angular-notification';
|
|
24
|
-
import * as i4 from '@rosoftlab/core';
|
|
25
|
-
import { BaseModel, Attribute, BaseModelConfig, BaseService } from '@rosoftlab/core';
|
|
26
25
|
import { __decorate, __metadata } from 'tslib';
|
|
27
26
|
import * as i8 from '@angular/forms';
|
|
28
27
|
import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
29
|
-
import * as i7 from '@ngx-formly/core';
|
|
28
|
+
import * as i7$1 from '@ngx-formly/core';
|
|
30
29
|
import { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';
|
|
31
30
|
import { FormlyKendoModule } from '@ngx-formly/kendo';
|
|
32
|
-
import * as
|
|
31
|
+
import * as i9 from '@progress/kendo-angular-grid';
|
|
33
32
|
import { KENDO_GRID } from '@progress/kendo-angular-grid';
|
|
34
|
-
import * as i1$
|
|
33
|
+
import * as i1$2 from '@progress/kendo-angular-label';
|
|
35
34
|
import { KENDO_LABEL } from '@progress/kendo-angular-label';
|
|
36
35
|
import * as i6$2 from '@progress/kendo-angular-intl';
|
|
36
|
+
import * as i1$1 from '@angular/common/http';
|
|
37
|
+
import { HttpHeaders, HttpRequest, HttpEventType, HttpResponse } from '@angular/common/http';
|
|
38
|
+
import { filter as filter$1, map as map$1 } from 'rxjs/operators';
|
|
37
39
|
|
|
38
40
|
class SocketService {
|
|
39
41
|
constructor(socketUrl) {
|
|
@@ -877,37 +879,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
877
879
|
}]
|
|
878
880
|
}], ctorParameters: () => [{ type: i4.DatastoreCore }] });
|
|
879
881
|
|
|
882
|
+
class KendoToolbarSpanComponent extends ToolBarToolComponent {
|
|
883
|
+
constructor() {
|
|
884
|
+
super();
|
|
885
|
+
this.tabindex = -1;
|
|
886
|
+
this.text = '';
|
|
887
|
+
this.cssClass = '';
|
|
888
|
+
}
|
|
889
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: KendoToolbarSpanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
890
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: KendoToolbarSpanComponent, isStandalone: true, selector: "kendo-toolbar-span", inputs: { text: "text", cssClass: "cssClass" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => KendoToolbarSpanComponent) }], viewQueries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
891
|
+
<ng-template #toolbarTemplate>
|
|
892
|
+
<span [ngClass]="cssClass" [textContent]="text"></span>
|
|
893
|
+
</ng-template>
|
|
894
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
895
|
+
}
|
|
896
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: KendoToolbarSpanComponent, decorators: [{
|
|
897
|
+
type: Component,
|
|
898
|
+
args: [{
|
|
899
|
+
providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => KendoToolbarSpanComponent) }],
|
|
900
|
+
selector: 'kendo-toolbar-span',
|
|
901
|
+
standalone: true,
|
|
902
|
+
imports: [CommonModule],
|
|
903
|
+
template: `
|
|
904
|
+
<ng-template #toolbarTemplate>
|
|
905
|
+
<span [ngClass]="cssClass" [textContent]="text"></span>
|
|
906
|
+
</ng-template>
|
|
907
|
+
`
|
|
908
|
+
}]
|
|
909
|
+
}], ctorParameters: () => [], propDecorators: { text: [{
|
|
910
|
+
type: Input
|
|
911
|
+
}], cssClass: [{
|
|
912
|
+
type: Input
|
|
913
|
+
}], toolbarTemplate: [{
|
|
914
|
+
type: ViewChild,
|
|
915
|
+
args: ['toolbarTemplate', { static: true }]
|
|
916
|
+
}] } });
|
|
917
|
+
|
|
880
918
|
class FullComponent {
|
|
881
|
-
constructor(userService, router, translate, rdict) {
|
|
919
|
+
constructor(userService, router, translate, rdict, auth_service) {
|
|
882
920
|
this.userService = userService;
|
|
883
921
|
this.router = router;
|
|
884
922
|
this.translate = translate;
|
|
885
923
|
this.rdict = rdict;
|
|
886
|
-
this.
|
|
924
|
+
this.auth_service = auth_service;
|
|
925
|
+
this.selected = 'Inbox';
|
|
887
926
|
this.menuSvg = menuIcon;
|
|
927
|
+
this.userSvg = userIcon;
|
|
888
928
|
this.expandedIndices = [2];
|
|
889
929
|
this.hasItems = false;
|
|
890
930
|
this.items = [];
|
|
891
931
|
this.icons = allIcons;
|
|
892
932
|
//private rdict: ReactiveDictionary | undefined;
|
|
893
|
-
this.apptitle =
|
|
933
|
+
this.apptitle = 'Test';
|
|
934
|
+
this.user_menu = [
|
|
935
|
+
{
|
|
936
|
+
text: 'Logout',
|
|
937
|
+
svgIcon: logoutIcon,
|
|
938
|
+
click: () => {
|
|
939
|
+
this.auth_service.logout();
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
];
|
|
894
943
|
this.isItemExpanded = (item) => {
|
|
895
944
|
return this.expandedIndices.indexOf(item.id) >= 0;
|
|
896
945
|
};
|
|
897
946
|
this.getMenu();
|
|
898
947
|
}
|
|
899
948
|
async ngOnInit() {
|
|
900
|
-
this.apptitle = await this.rdict.asyncGet(
|
|
949
|
+
this.apptitle = await this.rdict.asyncGet('appname');
|
|
901
950
|
}
|
|
902
951
|
getMenu() {
|
|
903
952
|
this.userService.getMenus().subscribe({
|
|
904
|
-
next: value => {
|
|
953
|
+
next: (value) => {
|
|
905
954
|
this.items = this.transformToDrawerItems(value.getModels());
|
|
906
955
|
},
|
|
907
|
-
error: err => console.error('Observable emitted an error: ' + err),
|
|
956
|
+
error: (err) => console.error('Observable emitted an error: ' + err),
|
|
908
957
|
complete: () => console.log('Observable emitted the complete notification')
|
|
909
958
|
});
|
|
910
|
-
this.menu$ = this.userService.getMenus().pipe(map(f => {
|
|
959
|
+
this.menu$ = this.userService.getMenus().pipe(map((f) => {
|
|
911
960
|
const data = f.getModels();
|
|
912
961
|
this.hasItems = data.length > 0;
|
|
913
962
|
return data;
|
|
@@ -926,12 +975,12 @@ class FullComponent {
|
|
|
926
975
|
if (ev.item.path && ev.item.path !== '') {
|
|
927
976
|
this.router.navigate([ev.item.path]);
|
|
928
977
|
// this.router.navigateByUrl(ev.item.path);
|
|
929
|
-
// this.router.navigate(['/import_layout']);
|
|
978
|
+
// this.router.navigate(['/import_layout']);
|
|
930
979
|
}
|
|
931
980
|
}
|
|
932
981
|
transformToDrawerItems(data, parentId) {
|
|
933
982
|
let drawerItems = [];
|
|
934
|
-
data.forEach(item => {
|
|
983
|
+
data.forEach((item) => {
|
|
935
984
|
const drawerItem = {
|
|
936
985
|
id: item.id,
|
|
937
986
|
text: this.translate.instant(item.translationKey),
|
|
@@ -939,7 +988,7 @@ class FullComponent {
|
|
|
939
988
|
svgIcon: this.icons[item.icon],
|
|
940
989
|
selected: false, // Set this based on your application's state or logic
|
|
941
990
|
parentId: parentId,
|
|
942
|
-
path:
|
|
991
|
+
path: item.sublinks && item.sublinks.length > 0 ? '' : item.link
|
|
943
992
|
};
|
|
944
993
|
drawerItems.push(drawerItem);
|
|
945
994
|
// Recursively process children and flatten them
|
|
@@ -950,8 +999,8 @@ class FullComponent {
|
|
|
950
999
|
});
|
|
951
1000
|
return drawerItems;
|
|
952
1001
|
}
|
|
953
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, deps: [{ token: UserService }, { token: i1.Router }, { token: i2.TranslateService }, { token: ReactiveDictionary }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
954
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: FullComponent, isStandalone: true, selector: "rdict-full", ngImport: i0, template: "<div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\"
|
|
1002
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, deps: [{ token: UserService }, { token: i1.Router }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i4.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1003
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: FullComponent, isStandalone: true, selector: "rdict-full", ngImport: i0, template: "<!-- <div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div> -->\r\n<kendo-toolbar>\r\n <kendo-toolbar-span text=\"{{apptitle}}\" cssClass=\"app-title\"></kendo-toolbar-span>\r\n <kendo-toolbar-button [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-dropdownbutton text=\"{{auth_service?.name}}\" [svgIcon]=\"userSvg\" [data]=\"user_menu\"></kendo-toolbar-dropdownbutton>\r\n</kendo-toolbar>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\">\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>", styles: ["html,body,rdict-full{padding:0;height:100%}rdict-full{display:flex;flex-direction:column}kendo-drawer-container{flex:1 1 auto;overflow-y:auto}.k-icon{font-size:20px}.custom-toolbar{width:100%;background-color:#f6f6f6;line-height:10px;border-bottom:inset;border-bottom-width:1px;color:#656565}.custom-toolbar button{margin:3px 0 3px 8px}.app-title{margin-left:20px;font-weight:700;font-size:17px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: ToolBarModule }, { kind: "component", type: i6$1.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i6$1.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i6$1.ToolBarDropDownButtonComponent, selector: "kendo-toolbar-dropdownbutton", inputs: ["arrowIcon", "title", "showText", "showIcon", "text", "icon", "svgIcon", "iconClass", "imageUrl", "popupSettings", "look", "primary", "fillMode", "themeColor", "buttonClass", "textField", "disabled", "data"], outputs: ["itemClick", "open", "close"], exportAs: ["kendoToolBarDropDownButton"] }, { kind: "component", type: i6$1.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "ngmodule", type: LayoutModule }, { kind: "component", type: i7.DrawerComponent, selector: "kendo-drawer", inputs: ["mode", "position", "mini", "expanded", "width", "miniWidth", "autoCollapse", "items", "isItemExpanded", "animation"], outputs: ["expand", "collapse", "select", "expandedChange"], exportAs: ["kendoDrawer"] }, { kind: "component", type: i7.DrawerContainerComponent, selector: "kendo-drawer-container" }, { kind: "component", type: i7.DrawerContentComponent, selector: "kendo-drawer-content" }, { kind: "component", type: KendoToolbarSpanComponent, selector: "kendo-toolbar-span", inputs: ["text", "cssClass"] }] }); }
|
|
955
1004
|
}
|
|
956
1005
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, decorators: [{
|
|
957
1006
|
type: Component,
|
|
@@ -963,9 +1012,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
963
1012
|
ButtonsModule,
|
|
964
1013
|
ToolBarModule,
|
|
965
1014
|
LayoutModule,
|
|
966
|
-
KENDO_SVGICON
|
|
967
|
-
|
|
968
|
-
|
|
1015
|
+
KENDO_SVGICON,
|
|
1016
|
+
KENDO_TOOLBAR,
|
|
1017
|
+
KendoToolbarSpanComponent
|
|
1018
|
+
], template: "<!-- <div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n <span class=\"app-title\">{{apptitle}}</span>\r\n</div> -->\r\n<kendo-toolbar>\r\n <kendo-toolbar-span text=\"{{apptitle}}\" cssClass=\"app-title\"></kendo-toolbar-span>\r\n <kendo-toolbar-button [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-dropdownbutton text=\"{{auth_service?.name}}\" [svgIcon]=\"userSvg\" [data]=\"user_menu\"></kendo-toolbar-dropdownbutton>\r\n</kendo-toolbar>\r\n<kendo-drawer-container>\r\n <kendo-drawer #drawer [items]=\"items\" mode=\"push\" [mini]=\"true\" [expanded]=\"true\" (select)=\"onSelect($event)\"\r\n [autoCollapse]=\"false\" [isItemExpanded]=\"isItemExpanded\">\r\n </kendo-drawer>\r\n\r\n <kendo-drawer-content>\r\n <router-outlet></router-outlet>\r\n </kendo-drawer-content>\r\n</kendo-drawer-container>", styles: ["html,body,rdict-full{padding:0;height:100%}rdict-full{display:flex;flex-direction:column}kendo-drawer-container{flex:1 1 auto;overflow-y:auto}.k-icon{font-size:20px}.custom-toolbar{width:100%;background-color:#f6f6f6;line-height:10px;border-bottom:inset;border-bottom-width:1px;color:#656565}.custom-toolbar button{margin:3px 0 3px 8px}.app-title{margin-left:20px;font-weight:700;font-size:17px}\n"] }]
|
|
1019
|
+
}], ctorParameters: () => [{ type: UserService }, { type: i1.Router }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i4.AuthService }] });
|
|
969
1020
|
|
|
970
1021
|
class TranslateExtension {
|
|
971
1022
|
constructor(translate) {
|
|
@@ -1244,8 +1295,8 @@ class RdictCrudComponent {
|
|
|
1244
1295
|
this.router.navigate([this.routeHistory.getPreviousUrl() || '/']);
|
|
1245
1296
|
}
|
|
1246
1297
|
}
|
|
1247
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i4.LocalFileService }, { token: MaterialDialogService }, { token: i4.RouteHistoryService }, { token: i6
|
|
1248
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-button text=\"Back\" showText=\"both\" [svgIcon]=\"backIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onBack()\">\r\n </kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"success\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n<div kendoDialogContainer></div>", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyKendoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CrudFormlyTransaltionModule }, { kind: "component", type:
|
|
1298
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i4.LocalFileService }, { token: MaterialDialogService }, { token: i4.RouteHistoryService }, { token: i6.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1299
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-button text=\"Back\" showText=\"both\" [svgIcon]=\"backIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onBack()\">\r\n </kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"success\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n<div kendoDialogContainer></div>", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i7$1.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyKendoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CrudFormlyTransaltionModule }, { kind: "component", type: i6$1.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i6$1.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i6$1.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "directive", type: i2$1.DialogContainerDirective, selector: "[kendoDialogContainer]" }] }); }
|
|
1249
1300
|
}
|
|
1250
1301
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, decorators: [{
|
|
1251
1302
|
type: Component,
|
|
@@ -1261,11 +1312,153 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
1261
1312
|
KENDO_BUTTONS,
|
|
1262
1313
|
KENDO_DIALOG
|
|
1263
1314
|
], template: "<kendo-toolbar>\r\n <kendo-toolbar-button text=\"Back\" showText=\"both\" [svgIcon]=\"backIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onBack()\">\r\n </kendo-toolbar-button>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"success\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n\r\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\r\n </form>\r\n<div kendoDialogContainer></div>", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"] }]
|
|
1264
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i4.LocalFileService }, { type: MaterialDialogService }, { type: i4.RouteHistoryService }, { type: i6
|
|
1315
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i4.LocalFileService }, { type: MaterialDialogService }, { type: i4.RouteHistoryService }, { type: i6.Location }], propDecorators: { hostClasses: [{
|
|
1265
1316
|
type: HostBinding,
|
|
1266
1317
|
args: ['class']
|
|
1267
1318
|
}] } });
|
|
1268
1319
|
|
|
1320
|
+
class FileService {
|
|
1321
|
+
// private baseUrl ='http://localhost:5200';
|
|
1322
|
+
constructor(http, socketUrl) {
|
|
1323
|
+
this.http = http;
|
|
1324
|
+
this.baseUrl = '';
|
|
1325
|
+
this.baseUrl = socketUrl;
|
|
1326
|
+
}
|
|
1327
|
+
// uploadFile(file: File | Blob, filename?: string): Observable<UploadProgress> {
|
|
1328
|
+
// const url = `${this.baseUrl}/upload`;
|
|
1329
|
+
// const totalSize = file instanceof File ? file.size : file.size;
|
|
1330
|
+
// // determine the filename
|
|
1331
|
+
// const name =
|
|
1332
|
+
// file instanceof File ? file.name : filename ?? 'upload.bin';
|
|
1333
|
+
// const formData = new FormData();
|
|
1334
|
+
// formData.append('file', file, file.name);
|
|
1335
|
+
// // capture total size for the final event
|
|
1336
|
+
// const totalSize = file.size;
|
|
1337
|
+
// const req = new HttpRequest('POST', url, formData, {
|
|
1338
|
+
// reportProgress: true,
|
|
1339
|
+
// });
|
|
1340
|
+
// return this.http.request<{ file_id: string }>(req).pipe(
|
|
1341
|
+
// // only let through progress events or the final response
|
|
1342
|
+
// filter(
|
|
1343
|
+
// (
|
|
1344
|
+
// evt: HttpEvent<{ file_id: string }>
|
|
1345
|
+
// ): evt is HttpUploadProgressEvent | HttpResponse<{ file_id: string }> =>
|
|
1346
|
+
// evt.type === HttpEventType.UploadProgress ||
|
|
1347
|
+
// evt instanceof HttpResponse
|
|
1348
|
+
// ),
|
|
1349
|
+
// map((evt) => {
|
|
1350
|
+
// if (evt.type === HttpEventType.UploadProgress) {
|
|
1351
|
+
// // ✔️ safe to read loaded/total here
|
|
1352
|
+
// return {
|
|
1353
|
+
// type: 'progress',
|
|
1354
|
+
// loaded: evt.loaded,
|
|
1355
|
+
// total: evt.total ?? undefined,
|
|
1356
|
+
// } as UploadProgress;
|
|
1357
|
+
// } else {
|
|
1358
|
+
// // ✔️ evt is HttpResponse<{file_id:string}>
|
|
1359
|
+
// return {
|
|
1360
|
+
// type: 'response',
|
|
1361
|
+
// loaded: totalSize,
|
|
1362
|
+
// total: totalSize,
|
|
1363
|
+
// fileId: evt.body?.file_id,
|
|
1364
|
+
// } as UploadProgress;
|
|
1365
|
+
// }
|
|
1366
|
+
// })
|
|
1367
|
+
// );
|
|
1368
|
+
// }
|
|
1369
|
+
uploadFile(file, filename, fileId) {
|
|
1370
|
+
const url = `${this.baseUrl}/upload`;
|
|
1371
|
+
const totalSize = file instanceof File ? file.size : file.size;
|
|
1372
|
+
// determine the filename
|
|
1373
|
+
const name = file instanceof File ? file.name : filename ?? 'upload.bin';
|
|
1374
|
+
const fd = new FormData();
|
|
1375
|
+
fd.append('file', file, name);
|
|
1376
|
+
fd.append('filename', name);
|
|
1377
|
+
if (fileId !== undefined && fileId !== null) {
|
|
1378
|
+
fd.append('fileId', fileId);
|
|
1379
|
+
}
|
|
1380
|
+
// build headers
|
|
1381
|
+
const headers = new HttpHeaders({
|
|
1382
|
+
'Content-Type': 'application/octet-stream',
|
|
1383
|
+
'X-Filename': name
|
|
1384
|
+
});
|
|
1385
|
+
// raw-body POST
|
|
1386
|
+
const req = new HttpRequest('POST', url, fd, {
|
|
1387
|
+
// headers,
|
|
1388
|
+
reportProgress: true
|
|
1389
|
+
// responseType: 'json',
|
|
1390
|
+
// withCredentials: false,
|
|
1391
|
+
});
|
|
1392
|
+
return this.http.request(req).pipe(
|
|
1393
|
+
// only let through progress events or the final response
|
|
1394
|
+
filter$1((evt) => evt.type === HttpEventType.UploadProgress || evt instanceof HttpResponse), map$1((evt) => {
|
|
1395
|
+
if (evt.type === HttpEventType.UploadProgress) {
|
|
1396
|
+
// live progress
|
|
1397
|
+
return {
|
|
1398
|
+
type: 'progress',
|
|
1399
|
+
loaded: evt.loaded,
|
|
1400
|
+
total: evt.total ?? undefined
|
|
1401
|
+
};
|
|
1402
|
+
}
|
|
1403
|
+
else {
|
|
1404
|
+
// final response, emit 100%
|
|
1405
|
+
return {
|
|
1406
|
+
type: 'response',
|
|
1407
|
+
loaded: totalSize,
|
|
1408
|
+
total: totalSize,
|
|
1409
|
+
fileId: evt.body?.file_id
|
|
1410
|
+
};
|
|
1411
|
+
}
|
|
1412
|
+
}));
|
|
1413
|
+
}
|
|
1414
|
+
downloadFile(fileId) {
|
|
1415
|
+
const url = `${this.baseUrl}/download/${fileId}`;
|
|
1416
|
+
console.log('Download URL:', url);
|
|
1417
|
+
const req = new HttpRequest('GET', url, {
|
|
1418
|
+
reportProgress: true,
|
|
1419
|
+
responseType: 'blob'
|
|
1420
|
+
});
|
|
1421
|
+
return this.http.request(req).pipe(
|
|
1422
|
+
// Only let through DownloadProgressEvent or the final HttpResponse<Blob>
|
|
1423
|
+
filter$1((evt) => evt.type === HttpEventType.DownloadProgress || evt instanceof HttpResponse), map$1((evt) => {
|
|
1424
|
+
if (evt.type === HttpEventType.DownloadProgress) {
|
|
1425
|
+
// A progress event
|
|
1426
|
+
return {
|
|
1427
|
+
type: 'progress',
|
|
1428
|
+
loaded: evt.loaded,
|
|
1429
|
+
total: evt.total ?? undefined
|
|
1430
|
+
};
|
|
1431
|
+
}
|
|
1432
|
+
else {
|
|
1433
|
+
// The full response
|
|
1434
|
+
const cd = evt.headers.get('Content-Disposition') || '';
|
|
1435
|
+
const m = /filename="?(.+?)"?($|;)/.exec(cd);
|
|
1436
|
+
const filename = m ? m[1] : 'download.bin';
|
|
1437
|
+
// build a File from the blob
|
|
1438
|
+
const file = new File([evt.body], filename, {
|
|
1439
|
+
type: evt.body.type
|
|
1440
|
+
});
|
|
1441
|
+
const size = evt.body.size;
|
|
1442
|
+
return {
|
|
1443
|
+
type: 'response',
|
|
1444
|
+
loaded: size,
|
|
1445
|
+
total: size,
|
|
1446
|
+
file
|
|
1447
|
+
};
|
|
1448
|
+
}
|
|
1449
|
+
}));
|
|
1450
|
+
}
|
|
1451
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FileService, deps: [{ token: i1$1.HttpClient }, { token: SOCKET_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1452
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FileService, providedIn: 'root' }); }
|
|
1453
|
+
}
|
|
1454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FileService, decorators: [{
|
|
1455
|
+
type: Injectable,
|
|
1456
|
+
args: [{ providedIn: 'root' }]
|
|
1457
|
+
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
|
|
1458
|
+
type: Inject,
|
|
1459
|
+
args: [SOCKET_URL]
|
|
1460
|
+
}] }] });
|
|
1461
|
+
|
|
1269
1462
|
/** Main mapper */
|
|
1270
1463
|
function kendoToFilterRequest(e) {
|
|
1271
1464
|
const { skip = 0, take = 0, sort, filter, group } = e ?? e;
|
|
@@ -1475,7 +1668,7 @@ class RdictTableTitle extends ToolBarToolComponent {
|
|
|
1475
1668
|
<ng-template #toolbarTemplate>
|
|
1476
1669
|
<kendo-label>{{text}}</kendo-label>
|
|
1477
1670
|
</ng-template>
|
|
1478
|
-
`, isInline: true, dependencies: [{ kind: "component", type: i1$
|
|
1671
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i1$2.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }] }); }
|
|
1479
1672
|
}
|
|
1480
1673
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictTableTitle, decorators: [{
|
|
1481
1674
|
type: Component,
|
|
@@ -1500,7 +1693,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
1500
1693
|
}] } });
|
|
1501
1694
|
|
|
1502
1695
|
class GenericRdictTableComponent {
|
|
1503
|
-
constructor(router, route, translate, injector, localFileService, rdict, dialogService, intl) {
|
|
1696
|
+
constructor(router, route, translate, injector, localFileService, rdict, dialogService, intl, fileService) {
|
|
1504
1697
|
this.router = router;
|
|
1505
1698
|
this.route = route;
|
|
1506
1699
|
this.translate = translate;
|
|
@@ -1509,6 +1702,7 @@ class GenericRdictTableComponent {
|
|
|
1509
1702
|
this.rdict = rdict;
|
|
1510
1703
|
this.dialogService = dialogService;
|
|
1511
1704
|
this.intl = intl;
|
|
1705
|
+
this.fileService = fileService;
|
|
1512
1706
|
this.editOnClick = false;
|
|
1513
1707
|
this.editOnDblClick = false;
|
|
1514
1708
|
this.data = [];
|
|
@@ -1779,8 +1973,37 @@ class GenericRdictTableComponent {
|
|
|
1779
1973
|
// this.editDataItem = args.dataItem;
|
|
1780
1974
|
// this.isNew = false;
|
|
1781
1975
|
}
|
|
1782
|
-
edit(dataItem) {
|
|
1783
|
-
|
|
1976
|
+
edit(dataItem, column) {
|
|
1977
|
+
if (column.type == 'file') {
|
|
1978
|
+
const fileId = dataItem[column.file_id_property];
|
|
1979
|
+
const file_name = dataItem[column.propertyName];
|
|
1980
|
+
this.fileService.downloadFile(fileId).subscribe({
|
|
1981
|
+
next: (evt) => {
|
|
1982
|
+
if (evt.type === 'progress') {
|
|
1983
|
+
// optional: show progress
|
|
1984
|
+
// this.progress = evt.total ? Math.round(100 * evt.loaded / evt.total) : null;
|
|
1985
|
+
return;
|
|
1986
|
+
}
|
|
1987
|
+
// evt.type === 'response'
|
|
1988
|
+
const file = evt.file;
|
|
1989
|
+
const url = URL.createObjectURL(file);
|
|
1990
|
+
const a = document.createElement('a');
|
|
1991
|
+
a.href = url;
|
|
1992
|
+
a.download = file_name; // suggested filename
|
|
1993
|
+
a.style.display = 'none';
|
|
1994
|
+
document.body.appendChild(a);
|
|
1995
|
+
a.click();
|
|
1996
|
+
a.remove();
|
|
1997
|
+
URL.revokeObjectURL(url);
|
|
1998
|
+
},
|
|
1999
|
+
error: (err) => {
|
|
2000
|
+
console.error('Download failed', err);
|
|
2001
|
+
}
|
|
2002
|
+
});
|
|
2003
|
+
}
|
|
2004
|
+
else {
|
|
2005
|
+
this.router.navigate([`${this.basePath}/edit/${dataItem.__idx}`]);
|
|
2006
|
+
}
|
|
1784
2007
|
}
|
|
1785
2008
|
removeHandler(args) {
|
|
1786
2009
|
this.dialogService.confirmDelete().subscribe({
|
|
@@ -1862,11 +2085,11 @@ class GenericRdictTableComponent {
|
|
|
1862
2085
|
return 'boolean';
|
|
1863
2086
|
return 'text';
|
|
1864
2087
|
}
|
|
1865
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i0.Injector }, { token: i4.LocalFileService }, { token: ReactiveDictionary }, { token: MaterialDialogService }, { token: i6$2.IntlService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1866
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: GenericRdictTableComponent, isStandalone: true, selector: "rsl-rdict-generic-table", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", hasAdd: "hasAdd", canDelete: "canDelete", canEdit: "canEdit", editOnClick: "editOnClick", editOnDblClick: "editOnDblClick" }, outputs: { selectedObject: "selectedObject", click: "click", editModel: "editModel" }, providers: [], viewQueries: [{ propertyName: "filter", first: true, predicate: ElementRef, descendants: true }], ngImport: i0, template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6
|
|
2088
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i0.Injector }, { token: i4.LocalFileService }, { token: ReactiveDictionary }, { token: MaterialDialogService }, { token: i6$2.IntlService }, { token: FileService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2089
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: GenericRdictTableComponent, isStandalone: true, selector: "rsl-rdict-generic-table", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", hasAdd: "hasAdd", canDelete: "canDelete", canEdit: "canEdit", editOnClick: "editOnClick", editOnDblClick: "editOnDblClick" }, outputs: { selectedObject: "selectedObject", click: "click", editModel: "editModel" }, providers: [], viewQueries: [{ propertyName: "filter", first: true, predicate: ElementRef, descendants: true }], ngImport: i0, template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem,column)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
|
1867
2090
|
// MatPaginatorModule,
|
|
1868
2091
|
// MatTableModule,
|
|
1869
|
-
TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type:
|
|
2092
|
+
TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: i9.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "navigatable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "isDetailExpanded", "isGroupExpanded"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i9.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i9.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i9.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i9.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i9.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: i9.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i9.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "directive", type: i9.AddCommandToolbarDirective, selector: "[kendoGridAddTool]" }, { kind: "component", type: i6$1.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i6$1.ToolbarCustomMessagesComponent, selector: "kendo-toolbar-messages" }, { kind: "component", type: i6$1.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i6$1.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "directive", type: i2$1.DialogContainerDirective, selector: "[kendoDialogContainer]" }, { kind: "component", type: RdictTableTitle, selector: "table-title", inputs: ["text"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1870
2093
|
}
|
|
1871
2094
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, decorators: [{
|
|
1872
2095
|
type: Component,
|
|
@@ -1882,8 +2105,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
1882
2105
|
KENDO_BUTTONS,
|
|
1883
2106
|
KENDO_DIALOG,
|
|
1884
2107
|
RdictTableTitle
|
|
1885
|
-
], providers: [], template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"] }]
|
|
1886
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i0.Injector }, { type: i4.LocalFileService }, { type: ReactiveDictionary }, { type: MaterialDialogService }, { type: i6$2.IntlService }], propDecorators: { showSerach: [{
|
|
2108
|
+
], providers: [], template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (dataStateChange)=\"dataStateChange($event)\"\r\n \r\n [pageable]=\"{pageSizes:pageSizes}\" [pageSize]=\"state.take\"\r\n [skip]=\"state.skip\" [sort]=\"state.sort\" >\r\n <kendo-toolbar>\r\n <table-title text=\"{{title}}\"></table-title>\r\n <kendo-toolbar-messages>Test</kendo-toolbar-messages>\r\n <!-- <kendo-toolbar-separator></kendo-toolbar-separator> -->\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button *ngIf=\"hasAdd\" kendoButton [svgIcon]=\"svgAdd\" text=\"Add new\" kendoGridAddTool></kendo-toolbar-button>\r\n </kendo-toolbar>\r\n\r\n <!-- <kendo-toolbar>\r\n \r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <button kendoGridAddCommand type=\"button\">Add new</button>\r\n </kendo-toolbar> -->\r\n <!-- <kendo-grid-column *ngFor=\"let column of allColumns\" field=\"{{ column.propertyName }}\"\r\n title=\" {{column.translateKey | translate}}\">\r\n </kendo-grid-column> -->\r\n\r\n <kendo-grid-column *ngFor=\"let column of allColumns\" [field]=\"column.propertyName\"\r\n [title]=\"column.translateKey | translate\" [format]=\"column.format\" [filter]=\"inferFilterType(column)\">\r\n <!-- Use ng-template to customize the column content -->\r\n <ng-template *ngIf=\"column.isEditLink; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <!-- Create a link that calls editHandler(dataItem) -->\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem,column)\" class=\"edit-link\">\r\n {{ getCellValue(dataItem,column) }}\r\n </a>\r\n </ng-template>\r\n \r\n <!-- <ng-template *ngIf=\"column.type=='reference'; else defaultTemplate\" kendoGridCellTemplate let-dataItem>\r\n <a href=\"javascript:void(0)\" (click)=\"edit(dataItem)\" class=\"edit-link\">\r\n {{ getCellValue$(dataItem,column) | async }}\r\n </a>\r\n </ng-template> -->\r\n <!-- Default template for non-link columns -->\r\n <ng-template #defaultTemplate kendoGridCellTemplate let-dataItem>\r\n {{ getCellValue(dataItem,column) }}\r\n </ng-template>\r\n </kendo-grid-column>\r\n\r\n\r\n <kendo-grid-command-column *ngIf=\"canEdit && canDelete\" title=\"\" [width]=\"100\">\r\n <ng-template kendoGridCellTemplate>\r\n <!-- <button kendoButton kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\" ></button>\r\n <button kendoButton kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button> -->\r\n <button *ngIf=\"canEdit\" kendoGridEditCommand [svgIcon]=\"svgEdit\" themeColor=\"light\"></button>\r\n <button *ngIf=\"canDelete\" kendoGridRemoveCommand [svgIcon]=\"svgDelete\" themeColor=\"error\"></button>\r\n </ng-template>\r\n </kendo-grid-command-column>\r\n</kendo-grid>\r\n<div kendoDialogContainer></div>", styles: [".edit-link{color:#00f!important;text-decoration:underline!important;cursor:pointer!important}\n"] }]
|
|
2109
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i0.Injector }, { type: i4.LocalFileService }, { type: ReactiveDictionary }, { type: MaterialDialogService }, { type: i6$2.IntlService }, { type: FileService }], propDecorators: { showSerach: [{
|
|
1887
2110
|
type: Input
|
|
1888
2111
|
}], searchFields: [{
|
|
1889
2112
|
type: Input
|