@rosoftlab/rdict 1.0.1-alpha-11 → 1.0.2-alpha-14
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i6$2 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import {
|
|
4
|
+
import { Inject, Injectable, Component, NgModule, forwardRef, Input, ViewChild, EventEmitter, ElementRef, Output, ViewEncapsulation, InjectionToken } from '@angular/core';
|
|
5
5
|
import * as i1$1 from '@angular/router';
|
|
6
6
|
import { RouterModule, UrlSegment, NavigationStart } from '@angular/router';
|
|
7
7
|
import * as i2 from '@ngx-translate/core';
|
|
@@ -170,10 +170,10 @@ class SocketService {
|
|
|
170
170
|
}
|
|
171
171
|
return obj;
|
|
172
172
|
}
|
|
173
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
174
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
173
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: SocketService, deps: [{ token: SOCKET_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
174
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: SocketService, providedIn: 'root' }); }
|
|
175
175
|
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: SocketService, decorators: [{
|
|
177
177
|
type: Injectable,
|
|
178
178
|
args: [{
|
|
179
179
|
providedIn: 'root'
|
|
@@ -203,31 +203,29 @@ class ReactiveDictionary extends Map {
|
|
|
203
203
|
this._socketService.getDeleteEvent(this);
|
|
204
204
|
await this.asyncInit();
|
|
205
205
|
}
|
|
206
|
-
keys() {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
return filteredIterator;
|
|
230
|
-
}
|
|
206
|
+
// override keys(): IterableIterator<string> {
|
|
207
|
+
// const excludedKeys = ['__guid', '__type']; // Key to exclude
|
|
208
|
+
// const iterator = super.keys();
|
|
209
|
+
// const filteredIterator = {
|
|
210
|
+
// [Symbol.iterator]: () => ({
|
|
211
|
+
// next: () => {
|
|
212
|
+
// let result;
|
|
213
|
+
// // Loop until we find a valid key or run out of keys
|
|
214
|
+
// do {
|
|
215
|
+
// result = iterator.next(); // Get the next entry ([key, value])
|
|
216
|
+
// if (result.done) return { done: true }; // Stop if done
|
|
217
|
+
// const key = result.value; // Destructure the entry
|
|
218
|
+
// const value = super.get(key);
|
|
219
|
+
// // Check if the key is in excludedKeys or if the value is an object
|
|
220
|
+
// if (!excludedKeys.includes(key) && !(typeof value === 'object' && value !== null)) {
|
|
221
|
+
// return { value: key, done: false }; // Return the valid key
|
|
222
|
+
// }
|
|
223
|
+
// } while (true); // Continue until a valid key is found
|
|
224
|
+
// }
|
|
225
|
+
// })
|
|
226
|
+
// };
|
|
227
|
+
// return filteredIterator as IterableIterator<string>;
|
|
228
|
+
// }
|
|
231
229
|
// Asynchronous method to get a value by key
|
|
232
230
|
async asyncGet(key) {
|
|
233
231
|
// console.log('Get key: ', key);
|
|
@@ -369,8 +367,7 @@ class ReactiveDictionary extends Map {
|
|
|
369
367
|
}
|
|
370
368
|
jsonDateReviver(key, value) {
|
|
371
369
|
// Check if the value is a valid ISO date string
|
|
372
|
-
if (typeof value === 'string' &&
|
|
373
|
-
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)) {
|
|
370
|
+
if (typeof value === 'string' && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)) {
|
|
374
371
|
return new Date(value); // Convert to JavaScript Date object
|
|
375
372
|
}
|
|
376
373
|
return value;
|
|
@@ -379,6 +376,19 @@ class ReactiveDictionary extends Map {
|
|
|
379
376
|
return from(this.asyncGet(key));
|
|
380
377
|
}
|
|
381
378
|
getTableAsObservable(key, data = null) {
|
|
379
|
+
return from(this.getTable(key, data)).pipe(mergeMap((dictionaryMap) => {
|
|
380
|
+
if (!(dictionaryMap instanceof Map)) {
|
|
381
|
+
throw new Error('Expected a Map but received something else');
|
|
382
|
+
}
|
|
383
|
+
const values = Array.from(dictionaryMap.values());
|
|
384
|
+
const isValid = values.every((item) => item instanceof ReactiveDictionary);
|
|
385
|
+
if (!isValid) {
|
|
386
|
+
throw new Error('Expected a Map of ReactiveDictionary instances but found invalid entries');
|
|
387
|
+
}
|
|
388
|
+
return from(this.processTableData(values));
|
|
389
|
+
}));
|
|
390
|
+
}
|
|
391
|
+
getTableAsObservable_old(key, data = null) {
|
|
382
392
|
return from(this.getTable(key, data)).pipe(mergeMap((dictionary) => {
|
|
383
393
|
if (!Array.isArray(dictionary)) {
|
|
384
394
|
throw new Error('Expected an array but received something else');
|
|
@@ -392,11 +402,29 @@ class ReactiveDictionary extends Map {
|
|
|
392
402
|
}));
|
|
393
403
|
}
|
|
394
404
|
async getTable(key, data = null) {
|
|
405
|
+
if (!data)
|
|
406
|
+
data = await this.asyncGet(key);
|
|
407
|
+
if (!data)
|
|
408
|
+
return new Map();
|
|
409
|
+
// console.log('getTable', data);
|
|
410
|
+
const entries = await Promise.all(Array.from(data.entries()).map(async ([k, v]) => {
|
|
411
|
+
const entry = (await data.asyncGet(k));
|
|
412
|
+
if (entry instanceof ReactiveDictionary) {
|
|
413
|
+
entry.set('__idx', k);
|
|
414
|
+
return [k, entry];
|
|
415
|
+
}
|
|
416
|
+
return null;
|
|
417
|
+
}));
|
|
418
|
+
// Filter out any nulls (non-ReactiveDictionary entries)
|
|
419
|
+
const validEntries = entries.filter((e) => e !== null);
|
|
420
|
+
return new Map(validEntries);
|
|
421
|
+
}
|
|
422
|
+
async getTable_old(key, data = null) {
|
|
395
423
|
if (!data)
|
|
396
424
|
data = await this.asyncGet(key); // Get rooms from the ReactiveDictionary
|
|
397
425
|
if (!data)
|
|
398
426
|
return []; // Return an empty array if data is undefined
|
|
399
|
-
console.log('getTable', data);
|
|
427
|
+
// console.log('getTable', data);
|
|
400
428
|
// Filter and get only entries that are instances of ReactiveDictionary
|
|
401
429
|
const result = (await Promise.all(Array.from(data.entries()).map(async (key, index) => {
|
|
402
430
|
const entry = (await data.asyncGet(key[0]));
|
|
@@ -482,9 +510,18 @@ class ReactiveDictionary extends Map {
|
|
|
482
510
|
onDelete() {
|
|
483
511
|
return this.deletes$.asObservable();
|
|
484
512
|
}
|
|
513
|
+
getNextOid() {
|
|
514
|
+
const numericKeys = Array.from(this.keys())
|
|
515
|
+
.filter((k) => /^\d+$/.test(k)) // keep only purely numeric keys
|
|
516
|
+
.map((k) => parseInt(k, 10));
|
|
517
|
+
if (numericKeys.length === 0)
|
|
518
|
+
return null;
|
|
519
|
+
const maxKey = Math.max(...numericKeys);
|
|
520
|
+
return (maxKey + 1).toString();
|
|
521
|
+
}
|
|
485
522
|
async update(record, key = null) {
|
|
486
523
|
if (!key)
|
|
487
|
-
key = this.
|
|
524
|
+
key = this.getNextOid();
|
|
488
525
|
const dict = await this.asyncGet(key);
|
|
489
526
|
for (const key in record) {
|
|
490
527
|
if (record.hasOwnProperty(key)) {
|
|
@@ -497,13 +534,14 @@ class ReactiveDictionary extends Map {
|
|
|
497
534
|
modelFormList(property, value) {
|
|
498
535
|
return this.get('__modelFormList');
|
|
499
536
|
}
|
|
500
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
501
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
537
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ReactiveDictionary, deps: [{ token: SocketService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
538
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ReactiveDictionary, providedIn: 'root' // This makes the service a singleton and available throughout the app
|
|
539
|
+
}); }
|
|
502
540
|
}
|
|
503
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ReactiveDictionary, decorators: [{
|
|
504
542
|
type: Injectable,
|
|
505
543
|
args: [{
|
|
506
|
-
providedIn: 'root'
|
|
544
|
+
providedIn: 'root' // This makes the service a singleton and available throughout the app
|
|
507
545
|
}]
|
|
508
546
|
}], ctorParameters: () => [{ type: SocketService }] });
|
|
509
547
|
|
|
@@ -667,10 +705,10 @@ class UserService extends BaseService {
|
|
|
667
705
|
const response = this.datastore.findAll(Menu);
|
|
668
706
|
return response;
|
|
669
707
|
}
|
|
670
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
671
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
708
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: UserService, deps: [{ token: i1.DatastoreCore }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
709
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
672
710
|
}
|
|
673
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: UserService, decorators: [{
|
|
674
712
|
type: Injectable,
|
|
675
713
|
args: [{
|
|
676
714
|
providedIn: 'root'
|
|
@@ -750,10 +788,10 @@ class FullComponent {
|
|
|
750
788
|
});
|
|
751
789
|
return drawerItems;
|
|
752
790
|
}
|
|
753
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
754
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
791
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, deps: [{ token: UserService }, { token: i1$1.Router }, { token: i2.TranslateService }, { token: ReactiveDictionary }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
792
|
+
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\"> \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$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i5.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: ToolBarModule }, { kind: "ngmodule", type: LayoutModule }, { kind: "component", type: i6.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: i6.DrawerContainerComponent, selector: "kendo-drawer-container" }, { kind: "component", type: i6.DrawerContentComponent, selector: "kendo-drawer-content" }] }); }
|
|
755
793
|
}
|
|
756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
794
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: FullComponent, decorators: [{
|
|
757
795
|
type: Component,
|
|
758
796
|
args: [{ selector: 'rdict-full', imports: [
|
|
759
797
|
CommonModule,
|
|
@@ -764,7 +802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
764
802
|
ToolBarModule,
|
|
765
803
|
LayoutModule,
|
|
766
804
|
KENDO_SVGICON
|
|
767
|
-
], template: "<div class=\"custom-toolbar\">\r\n <button kendoButton [svgIcon]=\"menuSvg\" fillMode=\"flat\" (click)=\"drawer.toggle()\"></button>\r\n
|
|
805
|
+
], 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\"> \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"] }]
|
|
768
806
|
}], ctorParameters: () => [{ type: UserService }, { type: i1$1.Router }, { type: i2.TranslateService }, { type: ReactiveDictionary }] });
|
|
769
807
|
|
|
770
808
|
class MaterialDialogService {
|
|
@@ -814,10 +852,10 @@ class MaterialDialogService {
|
|
|
814
852
|
this.state.type = { style: "success", icon: true };
|
|
815
853
|
this.notificationService.show(this.state);
|
|
816
854
|
}
|
|
817
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
818
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
855
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: MaterialDialogService, deps: [{ token: i2.TranslateService }, { token: i2$1.DialogService }, { token: i3.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
856
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: MaterialDialogService, providedIn: 'root' }); }
|
|
819
857
|
}
|
|
820
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
858
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: MaterialDialogService, decorators: [{
|
|
821
859
|
type: Injectable,
|
|
822
860
|
args: [{
|
|
823
861
|
providedIn: 'root'
|
|
@@ -873,13 +911,13 @@ function registerTranslateExtension(translate) {
|
|
|
873
911
|
}
|
|
874
912
|
|
|
875
913
|
class CrudFormlyTransaltionModule {
|
|
876
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
877
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.
|
|
878
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.
|
|
914
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: CrudFormlyTransaltionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
915
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.8", ngImport: i0, type: CrudFormlyTransaltionModule, imports: [CommonModule] }); }
|
|
916
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: CrudFormlyTransaltionModule, providers: [
|
|
879
917
|
{ provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
|
|
880
918
|
], imports: [CommonModule] }); }
|
|
881
919
|
}
|
|
882
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
920
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: CrudFormlyTransaltionModule, decorators: [{
|
|
883
921
|
type: NgModule,
|
|
884
922
|
args: [{
|
|
885
923
|
imports: [
|
|
@@ -1053,10 +1091,10 @@ class RdictCrudComponent {
|
|
|
1053
1091
|
getSelectData(key) {
|
|
1054
1092
|
return this.rdict.getTableAsObservable(key);
|
|
1055
1093
|
}
|
|
1056
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
1057
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
1094
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2.TranslateService }, { token: ReactiveDictionary }, { token: i1.LocalFileService }, { token: MaterialDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1095
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: RdictCrudComponent, isStandalone: true, selector: "app-rdict-crud", ngImport: i0, template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\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", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i6$1.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyKendoModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CrudFormlyTransaltionModule }, { kind: "component", type: i8.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i8.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: i8.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }] }); }
|
|
1058
1096
|
}
|
|
1059
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
1097
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictCrudComponent, decorators: [{
|
|
1060
1098
|
type: Component,
|
|
1061
1099
|
args: [{ selector: 'app-rdict-crud', imports: [
|
|
1062
1100
|
FormlyModule,
|
|
@@ -1065,7 +1103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
1065
1103
|
TranslateModule,
|
|
1066
1104
|
CrudFormlyTransaltionModule,
|
|
1067
1105
|
KENDO_TOOLBAR
|
|
1068
|
-
], template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\r\n [disabled]=\"false\" (click)=\"onSave()\">\r\n </kendo-toolbar-button>\r\n</kendo-toolbar>\r\n<form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\r\n
|
|
1106
|
+
], template: "<kendo-toolbar>\r\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\r\n <kendo-toolbar-button text=\"Save\" showText=\"both\" [svgIcon]=\"saveIcon\" showIcon=\"both\" themeColor=\"primary\"\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", styles: ["::ng-deep formly-field{padding:.3rem;display:block}\n"] }]
|
|
1069
1107
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.TranslateService }, { type: ReactiveDictionary }, { type: i1.LocalFileService }, { type: MaterialDialogService }] });
|
|
1070
1108
|
|
|
1071
1109
|
class RdictTableTitle extends ToolBarToolComponent {
|
|
@@ -1073,14 +1111,14 @@ class RdictTableTitle extends ToolBarToolComponent {
|
|
|
1073
1111
|
super();
|
|
1074
1112
|
this.tabindex = -1;
|
|
1075
1113
|
}
|
|
1076
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
1077
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
1114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictTableTitle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: RdictTableTitle, isStandalone: true, selector: "table-title", inputs: { text: "text" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => RdictTableTitle) }], viewQueries: [{ propertyName: "toolbarTemplate", first: true, predicate: ["toolbarTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
1078
1116
|
<ng-template #toolbarTemplate>
|
|
1079
1117
|
<kendo-label>{{text}}</kendo-label>
|
|
1080
1118
|
</ng-template>
|
|
1081
1119
|
`, isInline: true, dependencies: [{ kind: "component", type: i1$2.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional", "labelCssStyle", "labelCssClass"], exportAs: ["kendoLabel"] }] }); }
|
|
1082
1120
|
}
|
|
1083
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
1121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: RdictTableTitle, decorators: [{
|
|
1084
1122
|
type: Component,
|
|
1085
1123
|
args: [{
|
|
1086
1124
|
providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => RdictTableTitle) }],
|
|
@@ -1126,6 +1164,8 @@ class GenericRdictTableComponent {
|
|
|
1126
1164
|
this.columns = [];
|
|
1127
1165
|
this.tableLayout = {};
|
|
1128
1166
|
this.allColumns = [];
|
|
1167
|
+
this.referenceColumns = [];
|
|
1168
|
+
this.referenceData = new Map();
|
|
1129
1169
|
// ColumnMode = ColumnMode;
|
|
1130
1170
|
// SelectionType = SelectionType;
|
|
1131
1171
|
this.headerHeight = 50;
|
|
@@ -1135,7 +1175,7 @@ class GenericRdictTableComponent {
|
|
|
1135
1175
|
this.svgAdd = plusIcon;
|
|
1136
1176
|
}
|
|
1137
1177
|
async ngOnInit() {
|
|
1138
|
-
this.setValueFromSnapshot(this, this.route.snapshot, 'model',
|
|
1178
|
+
this.setValueFromSnapshot(this, this.route.snapshot, 'model', '');
|
|
1139
1179
|
this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);
|
|
1140
1180
|
this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);
|
|
1141
1181
|
this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);
|
|
@@ -1152,12 +1192,12 @@ class GenericRdictTableComponent {
|
|
|
1152
1192
|
this.setValueFromSnapshot(this, this.route.snapshot, 'editOnDblClick', false);
|
|
1153
1193
|
this.setValueFromSnapshot(this, this.route.snapshot, 'editColumn', null);
|
|
1154
1194
|
this.setValueFromSnapshot(this, this.route.snapshot, 'fileLayout', '');
|
|
1155
|
-
const currentUrlSegments = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));
|
|
1156
|
-
this.basePath = currentUrlSegments.map(segment => segment.path).join('/');
|
|
1157
|
-
const filteredSegments = currentUrlSegments.filter(segment => segment.path !== '');
|
|
1158
|
-
this.dictPath = filteredSegments.map(segment => segment.path).join('.');
|
|
1195
|
+
const currentUrlSegments = this.router.url.split('/').map((segment) => new UrlSegment(segment, {}));
|
|
1196
|
+
this.basePath = currentUrlSegments.map((segment) => segment.path).join('/');
|
|
1197
|
+
const filteredSegments = currentUrlSegments.filter((segment) => segment.path !== '');
|
|
1198
|
+
this.dictPath = filteredSegments.map((segment) => segment.path).join('.');
|
|
1159
1199
|
this.model = filteredSegments.length > 0 ? filteredSegments[filteredSegments.length - 1].path : ''; // Default to empty string if no valid segments
|
|
1160
|
-
this.router.events.subscribe(event => {
|
|
1200
|
+
this.router.events.subscribe((event) => {
|
|
1161
1201
|
if (event instanceof NavigationStart) {
|
|
1162
1202
|
// Navigation to another page is about to occur
|
|
1163
1203
|
this.data = [];
|
|
@@ -1179,28 +1219,28 @@ class GenericRdictTableComponent {
|
|
|
1179
1219
|
}
|
|
1180
1220
|
async loadData() {
|
|
1181
1221
|
this.rdict.getAsObservable(this.dictPath).subscribe({
|
|
1182
|
-
next: rdictData => {
|
|
1222
|
+
next: (rdictData) => {
|
|
1183
1223
|
this.tableRdict = rdictData;
|
|
1184
1224
|
this.tableRdict.onChanges().subscribe({
|
|
1185
1225
|
next: (changes) => {
|
|
1186
|
-
console.log(
|
|
1226
|
+
console.log('Changes detected grid:', changes);
|
|
1187
1227
|
this.onChangeEvent(changes);
|
|
1188
1228
|
}
|
|
1189
1229
|
});
|
|
1190
1230
|
this.tableRdict.onDelete().subscribe({
|
|
1191
1231
|
next: (changes) => {
|
|
1192
|
-
console.log(
|
|
1232
|
+
console.log('Delete detected grid:', changes);
|
|
1193
1233
|
this.ondDeleteEvent(changes);
|
|
1194
1234
|
}
|
|
1195
1235
|
});
|
|
1196
1236
|
this.rdict.getTableAsObservable(this.dictPath, this.tableRdict).subscribe({
|
|
1197
|
-
next: value => {
|
|
1237
|
+
next: (value) => {
|
|
1198
1238
|
this.dataSource = value;
|
|
1199
1239
|
},
|
|
1200
|
-
error: err => console.error('Error:', err.message)
|
|
1240
|
+
error: (err) => console.error('Error:', err.message)
|
|
1201
1241
|
});
|
|
1202
1242
|
},
|
|
1203
|
-
error: err => console.error('Error:', err.message)
|
|
1243
|
+
error: (err) => console.error('Error:', err.message)
|
|
1204
1244
|
});
|
|
1205
1245
|
}
|
|
1206
1246
|
onChangeEvent(changes) {
|
|
@@ -1215,7 +1255,7 @@ class GenericRdictTableComponent {
|
|
|
1215
1255
|
else {
|
|
1216
1256
|
//get the object from rdict
|
|
1217
1257
|
this.tableRdict.getAsObservable(key).subscribe({
|
|
1218
|
-
next: value => {
|
|
1258
|
+
next: (value) => {
|
|
1219
1259
|
var dd = value.getPlainObject();
|
|
1220
1260
|
this.dataSource.push(dd);
|
|
1221
1261
|
}
|
|
@@ -1241,30 +1281,30 @@ class GenericRdictTableComponent {
|
|
|
1241
1281
|
if (this.fileLayout) {
|
|
1242
1282
|
//load from file
|
|
1243
1283
|
this.localFileService.getJsonData(this.fileLayout).subscribe({
|
|
1244
|
-
next: value => {
|
|
1284
|
+
next: (value) => {
|
|
1245
1285
|
if (value) {
|
|
1246
|
-
const layout = value.find(item => item.model === this.model);
|
|
1286
|
+
const layout = value.find((item) => item.model === this.model);
|
|
1247
1287
|
this.setLayout(layout?.tableLayout);
|
|
1248
1288
|
}
|
|
1249
1289
|
},
|
|
1250
|
-
error: err => console.error('Error:', err.message)
|
|
1290
|
+
error: (err) => console.error('Error:', err.message)
|
|
1251
1291
|
});
|
|
1252
1292
|
}
|
|
1293
|
+
//Use rdict layout
|
|
1253
1294
|
else
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
next: value => {
|
|
1295
|
+
this.rdict.getAsObservable('config.models.' + this.model + '.tableLayout').subscribe({
|
|
1296
|
+
next: (value) => {
|
|
1257
1297
|
this.setLayout(value);
|
|
1258
1298
|
},
|
|
1259
|
-
error: err => console.error('Error:', err.message)
|
|
1299
|
+
error: (err) => console.error('Error:', err.message)
|
|
1260
1300
|
});
|
|
1261
1301
|
}
|
|
1262
1302
|
}
|
|
1263
1303
|
setLayout(layout) {
|
|
1264
1304
|
if (layout) {
|
|
1265
1305
|
this.tableLayout = layout;
|
|
1266
|
-
this.title = this.translate.instant(this.tableLayout[
|
|
1267
|
-
this.allColumns = this.tableLayout[
|
|
1306
|
+
this.title = this.translate.instant(this.tableLayout['title']);
|
|
1307
|
+
this.allColumns = this.tableLayout['columns'].map((item) => {
|
|
1268
1308
|
if (!item.isTranslated) {
|
|
1269
1309
|
item.name = this.translate.instant(item.translateKey);
|
|
1270
1310
|
item.isTranslated = true;
|
|
@@ -1272,15 +1312,41 @@ class GenericRdictTableComponent {
|
|
|
1272
1312
|
if (this.editColumn && this.editColumn === item.propertyName) {
|
|
1273
1313
|
item.isEditLink = true;
|
|
1274
1314
|
}
|
|
1315
|
+
if (!item.type) {
|
|
1316
|
+
item.type = 'property';
|
|
1317
|
+
}
|
|
1275
1318
|
}
|
|
1276
1319
|
return item;
|
|
1277
1320
|
});
|
|
1321
|
+
//Get reference columns
|
|
1322
|
+
const referenceColumns = this.allColumns.filter((item) => item.reference !== undefined && item.reference !== null);
|
|
1323
|
+
if (referenceColumns.length > 0) {
|
|
1324
|
+
referenceColumns.forEach((item) => {
|
|
1325
|
+
this.rdict.getTableAsObservable(item.reference).subscribe({
|
|
1326
|
+
next: (value) => {
|
|
1327
|
+
if (value) {
|
|
1328
|
+
console.log('Reference data:', value);
|
|
1329
|
+
this.referenceData.set(item.reference, this.arrayToMap(value, item.referenceKey));
|
|
1330
|
+
}
|
|
1331
|
+
},
|
|
1332
|
+
error: (err) => console.error('Error:', err.message)
|
|
1333
|
+
});
|
|
1334
|
+
});
|
|
1335
|
+
}
|
|
1278
1336
|
this.columns = [];
|
|
1279
1337
|
this.allColumns.sort((a, b) => a.order - b.order);
|
|
1280
1338
|
this.displayedColumns = [];
|
|
1281
|
-
this.displayedColumns.push.apply(this.displayedColumns, this.allColumns.map(x => x.propertyName));
|
|
1339
|
+
this.displayedColumns.push.apply(this.displayedColumns, this.allColumns.map((x) => x.propertyName));
|
|
1282
1340
|
}
|
|
1283
1341
|
}
|
|
1342
|
+
arrayToMap(array, keyProperty) {
|
|
1343
|
+
const map = new Map();
|
|
1344
|
+
for (const item of array) {
|
|
1345
|
+
const key = String(item[keyProperty]); // ensure it's a string
|
|
1346
|
+
map.set(key, item);
|
|
1347
|
+
}
|
|
1348
|
+
return map;
|
|
1349
|
+
}
|
|
1284
1350
|
addHandler() {
|
|
1285
1351
|
this.router.navigate([`${this.basePath}/add`]);
|
|
1286
1352
|
}
|
|
@@ -1306,21 +1372,25 @@ class GenericRdictTableComponent {
|
|
|
1306
1372
|
});
|
|
1307
1373
|
// this.editService.remove(args.dataItem);
|
|
1308
1374
|
}
|
|
1309
|
-
getCellValue(item,
|
|
1310
|
-
if (item
|
|
1311
|
-
|
|
1375
|
+
getCellValue(item, column) {
|
|
1376
|
+
if (typeof item !== 'object' || item === null) {
|
|
1377
|
+
return null; // or `undefined` or some fallback
|
|
1378
|
+
}
|
|
1379
|
+
if (column.type == "reference") {
|
|
1380
|
+
const value = this.referenceData.get(column.reference)?.get(item[column.propertyName])?.[column.referenceProperty] ?? item[column.propertyName];
|
|
1381
|
+
return value;
|
|
1312
1382
|
}
|
|
1313
1383
|
else {
|
|
1314
|
-
return item[propertyName];
|
|
1384
|
+
return item[column.propertyName];
|
|
1315
1385
|
}
|
|
1316
1386
|
}
|
|
1317
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
1318
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
1387
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2.TranslateService }, { token: i0.Injector }, { token: i1.LocalFileService }, { token: ReactiveDictionary }, { token: MaterialDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1388
|
+
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 <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\">\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$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
|
1319
1389
|
// MatPaginatorModule,
|
|
1320
1390
|
// MatTableModule,
|
|
1321
|
-
TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: i7$1.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "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: i7$1.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i7$1.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i7$1.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i7$1.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i7$1.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: i7$1.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i7$1.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "directive", type: i7$1.AddCommandToolbarDirective, selector: "[kendoGridAddTool]" }, { kind: "component", type: i8.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i8.ToolbarCustomMessagesComponent, selector: "kendo-toolbar-messages" }, { kind: "component", type: i8.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: i8.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 }); }
|
|
1391
|
+
TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: i7$1.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: i7$1.GridToolbarFocusableDirective, selector: " [kendoGridToolbarFocusable], [kendoGridAddCommand], [kendoGridCancelCommand], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridExcelCommand], [kendoGridPDFCommand] " }, { kind: "component", type: i7$1.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterable", "editable"] }, { kind: "directive", type: i7$1.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { kind: "component", type: i7$1.CommandColumnComponent, selector: "kendo-grid-command-column" }, { kind: "directive", type: i7$1.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "component", type: i7$1.EditCommandDirective, selector: "[kendoGridEditCommand]" }, { kind: "component", type: i7$1.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { kind: "directive", type: i7$1.AddCommandToolbarDirective, selector: "[kendoGridAddTool]" }, { kind: "component", type: i8.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i8.ToolbarCustomMessagesComponent, selector: "kendo-toolbar-messages" }, { kind: "component", type: i8.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: i8.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 }); }
|
|
1322
1392
|
}
|
|
1323
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
1393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: GenericRdictTableComponent, decorators: [{
|
|
1324
1394
|
type: Component,
|
|
1325
1395
|
args: [{ selector: 'rsl-rdict-generic-table', encapsulation: ViewEncapsulation.None, imports: [
|
|
1326
1396
|
CommonModule,
|
|
@@ -1334,7 +1404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
1334
1404
|
KENDO_BUTTONS,
|
|
1335
1405
|
KENDO_DIALOG,
|
|
1336
1406
|
RdictTableTitle
|
|
1337
|
-
], providers: [], template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\">\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 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\">\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
|
|
1407
|
+
], providers: [], template: "<kendo-grid [data]=\"dataSource\" [sortable]=\"true\" [filterable]=\"showSerach\" [resizable]=\"true\" (add)=\"addHandler()\"\r\n (edit)=\"editHandler($event)\" (remove)=\"removeHandler($event)\">\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\">\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"] }]
|
|
1338
1408
|
}], ctorParameters: () => [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.TranslateService }, { type: i0.Injector }, { type: i1.LocalFileService }, { type: ReactiveDictionary }, { type: MaterialDialogService }], propDecorators: { showSerach: [{
|
|
1339
1409
|
type: Input
|
|
1340
1410
|
}], searchFields: [{
|