@masterteam/dashboard-builder 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/dashboard-builder.css +2 -2
- package/fesm2022/{masterteam-dashboard-builder-dashboard-dialog.component-D1JNWQMI.mjs → masterteam-dashboard-builder-dashboard-dialog.component-697C4AOo.mjs} +10 -10
- package/fesm2022/{masterteam-dashboard-builder-dashboard-dialog.component-D1JNWQMI.mjs.map → masterteam-dashboard-builder-dashboard-dialog.component-697C4AOo.mjs.map} +1 -1
- package/fesm2022/masterteam-dashboard-builder.mjs +5492 -4392
- package/fesm2022/masterteam-dashboard-builder.mjs.map +1 -1
- package/package.json +1 -1
- package/types/masterteam-dashboard-builder.d.ts +1310 -1056
|
@@ -327,6 +327,15 @@ interface DashboardDialogItem {
|
|
|
327
327
|
chartTypeId?: string;
|
|
328
328
|
loading?: boolean;
|
|
329
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Standalone dashboard builder data payload
|
|
332
|
+
*/
|
|
333
|
+
interface DashboardBuilderData {
|
|
334
|
+
page?: DashboardPage | null;
|
|
335
|
+
charts?: DashboardChartItem[];
|
|
336
|
+
dialogs?: DashboardDialogItem[];
|
|
337
|
+
filters?: any[];
|
|
338
|
+
}
|
|
330
339
|
/**
|
|
331
340
|
* Dashboard page configuration
|
|
332
341
|
* Alias for Report with Dashboard type - used for backwards compatibility
|
|
@@ -650,6 +659,10 @@ declare class DashboardBuilder implements OnInit, OnDestroy {
|
|
|
650
659
|
readonly backButton: _angular_core.InputSignal<boolean>;
|
|
651
660
|
/** Dashboard/Page ID to load */
|
|
652
661
|
readonly pageId: _angular_core.InputSignal<string | number | null>;
|
|
662
|
+
/** Standalone mode (when true, builder runs without API calls) */
|
|
663
|
+
readonly standalone: _angular_core.InputSignal<boolean>;
|
|
664
|
+
/** Standalone dashboard data model */
|
|
665
|
+
readonly dashboardData: _angular_core.ModelSignal<DashboardBuilderData | null>;
|
|
653
666
|
/** Read-only mode */
|
|
654
667
|
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
655
668
|
/** Emit when page config changes */
|
|
@@ -690,13 +703,15 @@ declare class DashboardBuilder implements OnInit, OnDestroy {
|
|
|
690
703
|
/** Reference to chart settings drawer */
|
|
691
704
|
private chartSettingsRef;
|
|
692
705
|
readonly languageCode: _angular_core.Signal<string>;
|
|
693
|
-
readonly direction: _angular_core.Signal<"
|
|
706
|
+
readonly direction: _angular_core.Signal<"ltr" | "rtl">;
|
|
694
707
|
readonly chartActionsContext: ChartActionsContext;
|
|
695
708
|
readonly options: GridsterConfig;
|
|
696
709
|
private subscription;
|
|
697
710
|
private isDragging;
|
|
698
711
|
private scrollInterval;
|
|
699
712
|
private dragStartY;
|
|
713
|
+
private applyingDashboardData;
|
|
714
|
+
private emittingDashboardData;
|
|
700
715
|
readonly menuItems: _angular_core.Signal<MenuItem[]>;
|
|
701
716
|
ngOnInit(): void;
|
|
702
717
|
ngOnDestroy(): void;
|
|
@@ -760,8 +775,11 @@ declare class DashboardBuilder implements OnInit, OnDestroy {
|
|
|
760
775
|
private handleDragEnd;
|
|
761
776
|
private startAutoScroll;
|
|
762
777
|
private stopAutoScroll;
|
|
778
|
+
constructor();
|
|
779
|
+
private applyDashboardData;
|
|
780
|
+
private emitDashboardDataChange;
|
|
763
781
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DashboardBuilder, never>;
|
|
764
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardBuilder, "mt-dashboard-builder", never, { "isPage": { "alias": "isPage"; "required": false; "isSignal": true; }; "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; "backButton": { "alias": "backButton"; "required": false; "isSignal": true; }; "pageId": { "alias": "pageId"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "chartsChange": "chartsChange"; "onSave": "onSave"; "onBack": "onBack"; "onAddChart": "onAddChart"; "onEditChart": "onEditChart"; }, never, never, true, never>;
|
|
782
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardBuilder, "mt-dashboard-builder", never, { "isPage": { "alias": "isPage"; "required": false; "isSignal": true; }; "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; "backButton": { "alias": "backButton"; "required": false; "isSignal": true; }; "pageId": { "alias": "pageId"; "required": false; "isSignal": true; }; "standalone": { "alias": "standalone"; "required": false; "isSignal": true; }; "dashboardData": { "alias": "dashboardData"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "dashboardData": "dashboardDataChange"; "pageChange": "pageChange"; "chartsChange": "chartsChange"; "onSave": "onSave"; "onBack": "onBack"; "onAddChart": "onAddChart"; "onEditChart": "onEditChart"; }, never, never, true, never>;
|
|
765
783
|
}
|
|
766
784
|
|
|
767
785
|
/**
|
|
@@ -813,16 +831,16 @@ declare class DashboardViewer implements OnInit, OnDestroy {
|
|
|
813
831
|
readonly dialogs: _angular_core.WritableSignal<DashboardDialogItem[]>;
|
|
814
832
|
readonly filters: _angular_core.WritableSignal<any[]>;
|
|
815
833
|
readonly languageCode: _angular_core.Signal<string>;
|
|
816
|
-
readonly direction: _angular_core.Signal<"
|
|
834
|
+
readonly direction: _angular_core.Signal<"ltr" | "rtl">;
|
|
817
835
|
readonly options: GridsterConfig;
|
|
818
836
|
private subscription;
|
|
819
837
|
private chartsDataEffect;
|
|
820
838
|
private dialogsDataEffect;
|
|
821
839
|
private filtersDataEffect;
|
|
840
|
+
private pageIdEffect;
|
|
822
841
|
ngOnInit(): void;
|
|
823
842
|
ngOnDestroy(): void;
|
|
824
843
|
private setupSubscriptions;
|
|
825
|
-
private loadPageIfNeeded;
|
|
826
844
|
loadPage(id: string | number): void;
|
|
827
845
|
reloadPage(): void;
|
|
828
846
|
/**
|
|
@@ -1135,8 +1153,31 @@ interface FilterConfig {
|
|
|
1135
1153
|
* Filter option
|
|
1136
1154
|
*/
|
|
1137
1155
|
interface FilterOption {
|
|
1138
|
-
|
|
1156
|
+
key?: string;
|
|
1157
|
+
label: string | Record<string, string>;
|
|
1158
|
+
value: any;
|
|
1159
|
+
icon?: string;
|
|
1160
|
+
color?: string;
|
|
1161
|
+
}
|
|
1162
|
+
/**
|
|
1163
|
+
* Static filter configuration for button-group style filtering
|
|
1164
|
+
*/
|
|
1165
|
+
interface StaticFilterConfig {
|
|
1166
|
+
show: boolean;
|
|
1167
|
+
filters: StaticFilterItem[];
|
|
1168
|
+
defaultIndex?: number;
|
|
1169
|
+
style?: 'buttons' | 'pills' | 'tabs';
|
|
1170
|
+
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Static filter item
|
|
1173
|
+
*/
|
|
1174
|
+
interface StaticFilterItem {
|
|
1175
|
+
key: string;
|
|
1139
1176
|
value: any;
|
|
1177
|
+
label: {
|
|
1178
|
+
en: string;
|
|
1179
|
+
ar: string;
|
|
1180
|
+
};
|
|
1140
1181
|
icon?: string;
|
|
1141
1182
|
color?: string;
|
|
1142
1183
|
}
|
|
@@ -1239,6 +1280,9 @@ interface HeaderCardConfig$1 {
|
|
|
1239
1280
|
showHeader?: boolean;
|
|
1240
1281
|
isHeaderHidden?: boolean;
|
|
1241
1282
|
headerClickable?: boolean;
|
|
1283
|
+
isHeaderCentered?: boolean;
|
|
1284
|
+
headerFontSize?: number;
|
|
1285
|
+
headerColor?: string;
|
|
1242
1286
|
icon?: string;
|
|
1243
1287
|
iconColor?: string;
|
|
1244
1288
|
titleColor?: string;
|
|
@@ -1256,6 +1300,10 @@ interface CardBorderStyleConfig {
|
|
|
1256
1300
|
'background-color'?: string;
|
|
1257
1301
|
'box-shadow'?: string;
|
|
1258
1302
|
'border-radius'?: number;
|
|
1303
|
+
color?: string;
|
|
1304
|
+
'font-size'?: string;
|
|
1305
|
+
iconColor?: string;
|
|
1306
|
+
iconBgColor?: string;
|
|
1259
1307
|
}
|
|
1260
1308
|
interface CardStyleConfig$1 {
|
|
1261
1309
|
backgroundColor?: string;
|
|
@@ -1280,9 +1328,9 @@ declare class CardContentComponent {
|
|
|
1280
1328
|
/** Card style configuration (background, shadows, border radius) */
|
|
1281
1329
|
readonly cardStyleConfig: _angular_core.InputSignal<CardStyleConfig$1 | null>;
|
|
1282
1330
|
/** Whether to show header */
|
|
1283
|
-
readonly
|
|
1331
|
+
readonly showHeader: _angular_core.InputSignal<boolean>;
|
|
1284
1332
|
/** Whether header is clickable */
|
|
1285
|
-
readonly
|
|
1333
|
+
readonly headerClickable: _angular_core.InputSignal<boolean>;
|
|
1286
1334
|
/** No top end content flag */
|
|
1287
1335
|
readonly isNoTopEnd: _angular_core.InputSignal<boolean>;
|
|
1288
1336
|
/** Whether this card contains a chart (disables horizontal scroll) */
|
|
@@ -1290,16 +1338,18 @@ declare class CardContentComponent {
|
|
|
1290
1338
|
/** Header click event */
|
|
1291
1339
|
readonly headerClick: _angular_core.OutputEmitterRef<void>;
|
|
1292
1340
|
/** Computed show header */
|
|
1293
|
-
readonly
|
|
1341
|
+
readonly showHeaderState: _angular_core.Signal<boolean>;
|
|
1294
1342
|
/** Computed header clickable */
|
|
1295
|
-
readonly
|
|
1343
|
+
readonly headerClickableState: _angular_core.Signal<boolean>;
|
|
1344
|
+
/** Computed header row styles from StyleConfig (color, font-size passed through) */
|
|
1345
|
+
readonly headerRowStyles: _angular_core.Signal<Record<string, string> | null>;
|
|
1296
1346
|
/** Computed card styles from StyleConfig and cardStyleConfig */
|
|
1297
1347
|
readonly cardStyles: _angular_core.Signal<Record<string, string>>;
|
|
1298
1348
|
/** Computed border radius style */
|
|
1299
1349
|
readonly borderRadiusStyle: _angular_core.Signal<string>;
|
|
1300
1350
|
onHeaderClick(): void;
|
|
1301
1351
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardContentComponent, never>;
|
|
1302
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardContentComponent, "
|
|
1352
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardContentComponent, "mt-card-content", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "headerConfig": { "alias": "headerConfig"; "required": false; "isSignal": true; }; "styleConfig": { "alias": "styleConfig"; "required": false; "isSignal": true; }; "cardStyleConfig": { "alias": "cardStyleConfig"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "headerClickable": { "alias": "headerClickable"; "required": false; "isSignal": true; }; "isNoTopEnd": { "alias": "isNoTopEnd"; "required": false; "isSignal": true; }; "isChart": { "alias": "isChart"; "required": false; "isSignal": true; }; }, { "headerClick": "headerClick"; }, never, ["[topEnd]", "[body]", "[footer]"], true, never>;
|
|
1303
1353
|
}
|
|
1304
1354
|
|
|
1305
1355
|
declare class CardFilterComponent implements OnInit {
|
|
@@ -1323,7 +1373,7 @@ declare class CardFilterComponent implements OnInit {
|
|
|
1323
1373
|
/** Filter type */
|
|
1324
1374
|
readonly filterType: _angular_core.Signal<"date" | "text" | "select" | "multiselect" | "multiSelect" | "daterange">;
|
|
1325
1375
|
/** Filter options */
|
|
1326
|
-
readonly options: _angular_core.Signal<FilterOption[]>;
|
|
1376
|
+
readonly options: _angular_core.Signal<_masterteam_dashboard_builder.FilterOption[]>;
|
|
1327
1377
|
/** Placeholder text */
|
|
1328
1378
|
readonly placeholder: _angular_core.Signal<string>;
|
|
1329
1379
|
ngOnInit(): void;
|
|
@@ -1331,7 +1381,207 @@ declare class CardFilterComponent implements OnInit {
|
|
|
1331
1381
|
onMultiFilterChange(values: any[]): void;
|
|
1332
1382
|
onDateChange(): void;
|
|
1333
1383
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardFilterComponent, never>;
|
|
1334
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardFilterComponent, "
|
|
1384
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardFilterComponent, "mt-card-filter", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "dashboardId": { "alias": "dashboardId"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; }, never, never, true, never>;
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
declare class StaticFiltersComponent implements OnInit {
|
|
1388
|
+
private readonly storeService;
|
|
1389
|
+
private readonly transloco;
|
|
1390
|
+
/** Static filter configuration */
|
|
1391
|
+
readonly config: _angular_core.InputSignal<StaticFilterConfig | null>;
|
|
1392
|
+
/** Dashboard ID for store updates */
|
|
1393
|
+
readonly dashboardId: _angular_core.InputSignal<string | number | undefined>;
|
|
1394
|
+
/** Filter change event */
|
|
1395
|
+
readonly filterChange: _angular_core.OutputEmitterRef<{
|
|
1396
|
+
key: string;
|
|
1397
|
+
value: any;
|
|
1398
|
+
}>;
|
|
1399
|
+
/** Currently active filter index */
|
|
1400
|
+
readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
1401
|
+
/** Language code */
|
|
1402
|
+
readonly langCode: _angular_core.Signal<string>;
|
|
1403
|
+
/** Filter items */
|
|
1404
|
+
readonly filters: _angular_core.Signal<StaticFilterItem[]>;
|
|
1405
|
+
/**
|
|
1406
|
+
* Get localized label for filter
|
|
1407
|
+
*/
|
|
1408
|
+
getLabel(filter: StaticFilterItem): string;
|
|
1409
|
+
/**
|
|
1410
|
+
* Handle filter button click
|
|
1411
|
+
*/
|
|
1412
|
+
onFilterClick(filter: StaticFilterItem, index: number): void;
|
|
1413
|
+
/**
|
|
1414
|
+
* Initialize with default filter if configured
|
|
1415
|
+
*/
|
|
1416
|
+
ngOnInit(): void;
|
|
1417
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StaticFiltersComponent, never>;
|
|
1418
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StaticFiltersComponent, "mt-static-filters", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "dashboardId": { "alias": "dashboardId"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; }, never, never, true, never>;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
/**
|
|
1422
|
+
* Filter Field Models
|
|
1423
|
+
*
|
|
1424
|
+
* Defines the structure for dynamic filter fields configuration
|
|
1425
|
+
* used in dashboard page filtering.
|
|
1426
|
+
*/
|
|
1427
|
+
/** Localized text with English and Arabic translations */
|
|
1428
|
+
interface LocalizedText {
|
|
1429
|
+
en: string;
|
|
1430
|
+
ar: string;
|
|
1431
|
+
}
|
|
1432
|
+
/** Filter field types supported by the system */
|
|
1433
|
+
type FilterFieldType = 'dropdownTVService' | 'lookup' | 'status' | 'phaseGate' | 'user' | 'date' | 'section' | 'separator' | 'year' | 'month' | 'quarter' | 'checkbox' | 'schemaSettings' | 'schemaSettingsLeafs';
|
|
1434
|
+
/** Selection item for dropdown configuration */
|
|
1435
|
+
interface FilterSelectionItem {
|
|
1436
|
+
id: number;
|
|
1437
|
+
moduleType?: string;
|
|
1438
|
+
moduleId?: number;
|
|
1439
|
+
filters?: any[];
|
|
1440
|
+
modules?: any[];
|
|
1441
|
+
properties?: any[];
|
|
1442
|
+
}
|
|
1443
|
+
/** Filter field configuration details */
|
|
1444
|
+
interface FilterFieldConfiguration {
|
|
1445
|
+
payload?: {
|
|
1446
|
+
dashboardId: number;
|
|
1447
|
+
selection: FilterSelectionItem[];
|
|
1448
|
+
chartType: string;
|
|
1449
|
+
query: {
|
|
1450
|
+
selectedProperties: string[];
|
|
1451
|
+
};
|
|
1452
|
+
};
|
|
1453
|
+
lookupId?: number;
|
|
1454
|
+
schemaLevelId?: number;
|
|
1455
|
+
logId?: number;
|
|
1456
|
+
isRequird?: boolean;
|
|
1457
|
+
isMultiple?: boolean;
|
|
1458
|
+
checked?: boolean;
|
|
1459
|
+
minYear?: number;
|
|
1460
|
+
maxYear?: number;
|
|
1461
|
+
}
|
|
1462
|
+
/** Filter field definition */
|
|
1463
|
+
interface FilterField {
|
|
1464
|
+
key?: string;
|
|
1465
|
+
name?: LocalizedText;
|
|
1466
|
+
type: FilterFieldType;
|
|
1467
|
+
configuration?: FilterFieldConfiguration;
|
|
1468
|
+
}
|
|
1469
|
+
/** Filter field type option for dropdown */
|
|
1470
|
+
interface FilterFieldTypeOption {
|
|
1471
|
+
value: FilterFieldType;
|
|
1472
|
+
label: string;
|
|
1473
|
+
products: string[];
|
|
1474
|
+
}
|
|
1475
|
+
/**
|
|
1476
|
+
* Dynamic Filter Field
|
|
1477
|
+
*
|
|
1478
|
+
* An extended filter definition with options and loading state
|
|
1479
|
+
* for chart-level dynamic filtering.
|
|
1480
|
+
*/
|
|
1481
|
+
interface DynamicFilterField extends FilterField {
|
|
1482
|
+
/** Options loaded from API */
|
|
1483
|
+
options?: DynamicFilterOption[];
|
|
1484
|
+
/** Loading state for async options */
|
|
1485
|
+
loading?: boolean;
|
|
1486
|
+
/** Currently selected value(s) */
|
|
1487
|
+
selectedValue?: any;
|
|
1488
|
+
}
|
|
1489
|
+
/**
|
|
1490
|
+
* Dynamic Filter Option
|
|
1491
|
+
*
|
|
1492
|
+
* A single option in a dynamic filter dropdown.
|
|
1493
|
+
*/
|
|
1494
|
+
interface DynamicFilterOption {
|
|
1495
|
+
id: number | string;
|
|
1496
|
+
name: string | LocalizedText;
|
|
1497
|
+
value?: any;
|
|
1498
|
+
color?: string;
|
|
1499
|
+
icon?: string;
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
declare class DynamicFiltersComponent implements OnInit {
|
|
1503
|
+
private readonly storeService;
|
|
1504
|
+
private readonly transloco;
|
|
1505
|
+
/** Dynamic filter fields configuration */
|
|
1506
|
+
readonly fields: _angular_core.InputSignal<DynamicFilterField[]>;
|
|
1507
|
+
/** Dashboard ID for store updates */
|
|
1508
|
+
readonly dashboardId: _angular_core.InputSignal<string | number | undefined>;
|
|
1509
|
+
/** Whether to show labels above filters */
|
|
1510
|
+
readonly showLabels: _angular_core.InputSignal<boolean>;
|
|
1511
|
+
/** Filter change event */
|
|
1512
|
+
readonly filterChange: _angular_core.OutputEmitterRef<{
|
|
1513
|
+
key: string;
|
|
1514
|
+
value: any;
|
|
1515
|
+
}>;
|
|
1516
|
+
/** All filters change event - emitted with all current values */
|
|
1517
|
+
readonly filtersChange: _angular_core.OutputEmitterRef<Record<string, any>>;
|
|
1518
|
+
/** Current filter values */
|
|
1519
|
+
private currentValues;
|
|
1520
|
+
/** Language code */
|
|
1521
|
+
readonly langCode: _angular_core.Signal<string>;
|
|
1522
|
+
/** Month options */
|
|
1523
|
+
readonly months: {
|
|
1524
|
+
value: number;
|
|
1525
|
+
labelEn: string;
|
|
1526
|
+
labelAr: string;
|
|
1527
|
+
}[];
|
|
1528
|
+
/** Quarter options */
|
|
1529
|
+
readonly quarters: {
|
|
1530
|
+
value: number;
|
|
1531
|
+
labelEn: string;
|
|
1532
|
+
labelAr: string;
|
|
1533
|
+
}[];
|
|
1534
|
+
ngOnInit(): void;
|
|
1535
|
+
/**
|
|
1536
|
+
* Get localized field label
|
|
1537
|
+
*/
|
|
1538
|
+
getFieldLabel(field: DynamicFilterField): string;
|
|
1539
|
+
/**
|
|
1540
|
+
* Get localized option label
|
|
1541
|
+
*/
|
|
1542
|
+
getOptionLabel(option: any): string;
|
|
1543
|
+
/**
|
|
1544
|
+
* Get selected value for a field
|
|
1545
|
+
*/
|
|
1546
|
+
getSelectedValue(field: DynamicFilterField): any;
|
|
1547
|
+
/**
|
|
1548
|
+
* Get year options based on configuration
|
|
1549
|
+
*/
|
|
1550
|
+
getYearOptions(field: DynamicFilterField): number[];
|
|
1551
|
+
/**
|
|
1552
|
+
* Handle field value change
|
|
1553
|
+
*/
|
|
1554
|
+
onFieldChange(field: DynamicFilterField, value: any): void;
|
|
1555
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFiltersComponent, never>;
|
|
1556
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFiltersComponent, "mt-dynamic-filters", never, { "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "dashboardId": { "alias": "dashboardId"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; "filtersChange": "filtersChange"; }, never, never, true, never>;
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1559
|
+
interface CardInfoConfig$1 {
|
|
1560
|
+
show?: boolean;
|
|
1561
|
+
type?: 'text' | 'html';
|
|
1562
|
+
value?: string | {
|
|
1563
|
+
html?: string;
|
|
1564
|
+
keys?: Array<{
|
|
1565
|
+
key: string;
|
|
1566
|
+
en?: string;
|
|
1567
|
+
ar?: string;
|
|
1568
|
+
}>;
|
|
1569
|
+
};
|
|
1570
|
+
}
|
|
1571
|
+
declare class CardInfoComponent {
|
|
1572
|
+
private readonly transloco;
|
|
1573
|
+
readonly cardInfo: _angular_core.InputSignal<CardInfoConfig$1 | null>;
|
|
1574
|
+
readonly showInfo: _angular_core.Signal<string | false | {
|
|
1575
|
+
html?: string;
|
|
1576
|
+
keys?: Array<{
|
|
1577
|
+
key: string;
|
|
1578
|
+
en?: string;
|
|
1579
|
+
ar?: string;
|
|
1580
|
+
}>;
|
|
1581
|
+
} | undefined>;
|
|
1582
|
+
readonly tooltipContent: _angular_core.Signal<string>;
|
|
1583
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardInfoComponent, never>;
|
|
1584
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardInfoComponent, "mt-card-info", never, { "cardInfo": { "alias": "cardInfo"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1335
1585
|
}
|
|
1336
1586
|
|
|
1337
1587
|
declare class ChartCardComponent implements OnInit, OnDestroy {
|
|
@@ -1358,19 +1608,29 @@ declare class ChartCardComponent implements OnInit, OnDestroy {
|
|
|
1358
1608
|
readonly title: _angular_core.Signal<string>;
|
|
1359
1609
|
/** Show filter flag */
|
|
1360
1610
|
readonly showFilter: _angular_core.Signal<any>;
|
|
1361
|
-
/** Show top end section (filter or extra filters) */
|
|
1611
|
+
/** Show top end section (filter or extra filters or cardInfo or static/dynamic filters) */
|
|
1362
1612
|
readonly showTopEnd: _angular_core.Signal<any>;
|
|
1613
|
+
/** Card info configuration */
|
|
1614
|
+
readonly cardInfoConfig: _angular_core.Signal<any>;
|
|
1363
1615
|
/** Filter configuration */
|
|
1364
1616
|
readonly filterConfig: _angular_core.Signal<{
|
|
1365
1617
|
[key: string]: any;
|
|
1366
1618
|
configs?: any[];
|
|
1367
1619
|
} | undefined>;
|
|
1620
|
+
/** Static filter configuration */
|
|
1621
|
+
readonly staticFilterConfig: _angular_core.Signal<StaticFilterConfig | null>;
|
|
1622
|
+
/** Dynamic filter fields */
|
|
1623
|
+
readonly dynamicFilterFields: _angular_core.Signal<DynamicFilterField[]>;
|
|
1624
|
+
/** Show static filters */
|
|
1625
|
+
readonly showStaticFilters: _angular_core.Signal<boolean | undefined>;
|
|
1626
|
+
/** Show dynamic filters */
|
|
1627
|
+
readonly showDynamicFilters: _angular_core.Signal<boolean>;
|
|
1368
1628
|
ngOnInit(): void;
|
|
1369
1629
|
ngOnDestroy(): void;
|
|
1370
1630
|
onChartClick(event: any): void;
|
|
1371
1631
|
onHeaderClick(): void;
|
|
1372
1632
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartCardComponent, never>;
|
|
1373
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartCardComponent, "
|
|
1633
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartCardComponent, "mt-chart-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "isConfigMode": { "alias": "isConfigMode"; "required": false; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
|
|
1374
1634
|
}
|
|
1375
1635
|
|
|
1376
1636
|
type EChartsType = any;
|
|
@@ -1472,7 +1732,7 @@ declare class EChartComponent implements OnInit, AfterViewInit, OnChanges, OnDes
|
|
|
1472
1732
|
*/
|
|
1473
1733
|
getChartInstance(): EChartsType | null;
|
|
1474
1734
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EChartComponent, never>;
|
|
1475
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EChartComponent, "
|
|
1735
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EChartComponent, "mt-echart", never, { "dashboardId": { "alias": "dashboardId"; "required": false; "isSignal": true; }; "chartConfig": { "alias": "chartConfig"; "required": false; "isSignal": true; }; "configurationItem": { "alias": "configurationItem"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; "headerHidden": { "alias": "headerHidden"; "required": false; "isSignal": true; }; }, { "chartClick": "chartClick"; }, never, never, true, never>;
|
|
1476
1736
|
}
|
|
1477
1737
|
|
|
1478
1738
|
interface EntityData {
|
|
@@ -1573,7 +1833,11 @@ declare class EntityPreviewCardComponent implements OnInit, OnDestroy {
|
|
|
1573
1833
|
interface StatusItem {
|
|
1574
1834
|
label: string;
|
|
1575
1835
|
color: string;
|
|
1576
|
-
shape?: 'circle' | 'square';
|
|
1836
|
+
shape?: 'circle' | 'square' | 'rectangul' | 'rhombic' | 'rect';
|
|
1837
|
+
borderColor?: string;
|
|
1838
|
+
borderBottomColor?: string;
|
|
1839
|
+
iconClass?: string;
|
|
1840
|
+
iconSize?: number;
|
|
1577
1841
|
}
|
|
1578
1842
|
declare class HeaderCardComponent implements OnInit, OnDestroy {
|
|
1579
1843
|
private readonly storeService;
|
|
@@ -1631,7 +1895,7 @@ declare class HeaderCardComponent implements OnInit, OnDestroy {
|
|
|
1631
1895
|
onArrowClick(): void;
|
|
1632
1896
|
onClick(): void;
|
|
1633
1897
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderCardComponent, never>;
|
|
1634
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderCardComponent, "
|
|
1898
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderCardComponent, "mt-header-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
|
|
1635
1899
|
}
|
|
1636
1900
|
|
|
1637
1901
|
interface LevelCardData$1 {
|
|
@@ -1729,7 +1993,7 @@ declare class ListStatisticCardComponent implements OnInit, OnDestroy {
|
|
|
1729
1993
|
*/
|
|
1730
1994
|
doActions(event: any, type: string): void;
|
|
1731
1995
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListStatisticCardComponent, never>;
|
|
1732
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListStatisticCardComponent, "
|
|
1996
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListStatisticCardComponent, "mt-list-statistic-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1733
1997
|
}
|
|
1734
1998
|
|
|
1735
1999
|
interface SkeletonConfig {
|
|
@@ -1749,7 +2013,7 @@ declare class SkeletonCardComponent implements OnInit, OnDestroy {
|
|
|
1749
2013
|
ngOnDestroy(): void;
|
|
1750
2014
|
private getSkeletonsForComponent;
|
|
1751
2015
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonCardComponent, never>;
|
|
1752
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonCardComponent, "
|
|
2016
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonCardComponent, "mt-skeleton-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1753
2017
|
}
|
|
1754
2018
|
|
|
1755
2019
|
declare class StatisticCardComponent implements OnInit {
|
|
@@ -1900,7 +2164,7 @@ declare class TableCardComponent implements OnInit, OnDestroy {
|
|
|
1900
2164
|
*/
|
|
1901
2165
|
onHeaderClick(): void;
|
|
1902
2166
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCardComponent, never>;
|
|
1903
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCardComponent, "
|
|
2167
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableCardComponent, "mt-table-card", never, { "dashboardId": { "alias": "dashboardId"; "required": true; "isSignal": true; }; "inGroup": { "alias": "inGroup"; "required": false; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
|
|
1904
2168
|
}
|
|
1905
2169
|
|
|
1906
2170
|
declare class DashboardItemStoreService {
|
|
@@ -2112,15 +2376,16 @@ declare class ChartDataService {
|
|
|
2112
2376
|
}
|
|
2113
2377
|
|
|
2114
2378
|
declare class BarChartHandler {
|
|
2379
|
+
private readonly storeService;
|
|
2115
2380
|
/**
|
|
2116
2381
|
* handleBarChart - matches functionName from CHART_TYPES
|
|
2117
2382
|
* Returns ECharts option directly (exactly like old BarChartService.handleBarChart)
|
|
2118
2383
|
*/
|
|
2119
2384
|
handleBarChart(dataResponse: any, config: ItemConfig): any;
|
|
2120
2385
|
/**
|
|
2121
|
-
* Format X axis value
|
|
2386
|
+
* Format X axis value using the formatXAxis utility
|
|
2122
2387
|
*/
|
|
2123
|
-
private
|
|
2388
|
+
private formatXAxisValue;
|
|
2124
2389
|
/**
|
|
2125
2390
|
* Apply bar override configurations
|
|
2126
2391
|
*/
|
|
@@ -2129,6 +2394,11 @@ declare class BarChartHandler {
|
|
|
2129
2394
|
* Build grouped bar chart
|
|
2130
2395
|
*/
|
|
2131
2396
|
private buildGroupedBarChart;
|
|
2397
|
+
/**
|
|
2398
|
+
* handleEntityPreviewWithFormula - matches old entityPreviewWithFormula component
|
|
2399
|
+
* Transforms bar chart data into entity preview format (flat array of properties)
|
|
2400
|
+
*/
|
|
2401
|
+
handleEntityPreviewWithFormula(dataResponse: any, config: ItemConfig): any;
|
|
2132
2402
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarChartHandler, never>;
|
|
2133
2403
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<BarChartHandler>;
|
|
2134
2404
|
}
|
|
@@ -2152,6 +2422,7 @@ declare class PieChartHandler {
|
|
|
2152
2422
|
}
|
|
2153
2423
|
|
|
2154
2424
|
declare class StackBarChartHandler {
|
|
2425
|
+
private readonly storeService;
|
|
2155
2426
|
/**
|
|
2156
2427
|
* Helper method to convert legend position based on language
|
|
2157
2428
|
*/
|
|
@@ -2226,7 +2497,7 @@ declare class OverviewCardHandler {
|
|
|
2226
2497
|
* handleHeader - for header component
|
|
2227
2498
|
* Extracts title from first value (same as old PropertiesService.handleHeader)
|
|
2228
2499
|
*/
|
|
2229
|
-
handleHeader(data: any,
|
|
2500
|
+
handleHeader(data: any, _config: ItemConfig): any;
|
|
2230
2501
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverviewCardHandler, never>;
|
|
2231
2502
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<OverviewCardHandler>;
|
|
2232
2503
|
}
|
|
@@ -2394,18 +2665,18 @@ declare class LevelCardHandler {
|
|
|
2394
2665
|
* Returns data directly like old LevelCardService:
|
|
2395
2666
|
* result?.map(data => data?.details?.map(...).sort(...))
|
|
2396
2667
|
*/
|
|
2397
|
-
handlelevelCards(result: any,
|
|
2668
|
+
handlelevelCards(result: any, _config: ItemConfig): any;
|
|
2398
2669
|
/**
|
|
2399
2670
|
* handlelevelCardsWithFilter - matches functionName from CHART_TYPES
|
|
2400
2671
|
* Returns data directly like old LevelCardService:
|
|
2401
2672
|
* [[{ data: levelProps }]]
|
|
2402
2673
|
*/
|
|
2403
|
-
handlelevelCardsWithFilter(result: any,
|
|
2674
|
+
handlelevelCardsWithFilter(result: any, _config: ItemConfig): any;
|
|
2404
2675
|
/**
|
|
2405
2676
|
* Handle grouped level cards (multiple selections)
|
|
2406
2677
|
* Returns data directly
|
|
2407
2678
|
*/
|
|
2408
|
-
handleGrouped(dataResponse: any[],
|
|
2679
|
+
handleGrouped(dataResponse: any[], _config: ItemConfig): any;
|
|
2409
2680
|
/**
|
|
2410
2681
|
* Parse level cards from details array (standard API response)
|
|
2411
2682
|
*/
|
|
@@ -2642,10 +2913,32 @@ declare function createTooltipFormatter(config?: {
|
|
|
2642
2913
|
}): (value: number) => string;
|
|
2643
2914
|
/**
|
|
2644
2915
|
* Format words with underscores for display
|
|
2916
|
+
* Matches old formatterWordsUnderBar from Formatters.ts
|
|
2645
2917
|
* @param text - Text to format
|
|
2646
|
-
* @param
|
|
2918
|
+
* @param maxCharsPerLine - Max characters per line before wrapping
|
|
2919
|
+
* @param insideReport - When true, return full text with line breaks (no truncation)
|
|
2920
|
+
*/
|
|
2921
|
+
declare function formatWordsUnderBar(text: string, maxCharsPerLine?: number, insideReport?: boolean): string;
|
|
2922
|
+
/**
|
|
2923
|
+
* Format X Axis Configuration
|
|
2924
|
+
*/
|
|
2925
|
+
interface FormatXAxisConfig$1 {
|
|
2926
|
+
/** Format type: dateToMonth, month, date, custom */
|
|
2927
|
+
type?: 'dateToMonth' | 'month' | 'date' | 'custom';
|
|
2928
|
+
/** Use short month format (Jan vs January) */
|
|
2929
|
+
shortFormate?: boolean;
|
|
2930
|
+
/** Custom date format string (for 'date' type) */
|
|
2931
|
+
customDateFormat?: string;
|
|
2932
|
+
/** Custom text suffix (for 'custom' type) */
|
|
2933
|
+
customText?: string;
|
|
2934
|
+
}
|
|
2935
|
+
/**
|
|
2936
|
+
* Format X-axis value based on configuration
|
|
2937
|
+
* Matches old FormaterXAxis function from dashboardBuilder
|
|
2938
|
+
* @param value - The X-axis category value (typically a date string)
|
|
2939
|
+
* @param configFormat - Configuration object with type and format options
|
|
2647
2940
|
*/
|
|
2648
|
-
declare function
|
|
2941
|
+
declare function formatXAxis(value: string | Date, configFormat?: FormatXAxisConfig$1): string;
|
|
2649
2942
|
|
|
2650
2943
|
/**
|
|
2651
2944
|
* Chart Helpers
|
|
@@ -3022,7 +3315,10 @@ declare class DashboardStoreService {
|
|
|
3022
3315
|
/** Language code */
|
|
3023
3316
|
readonly languageCode: _angular_core.WritableSignal<string>;
|
|
3024
3317
|
/** Direction */
|
|
3025
|
-
readonly direction: _angular_core.WritableSignal<"
|
|
3318
|
+
readonly direction: _angular_core.WritableSignal<"ltr" | "rtl">;
|
|
3319
|
+
/** Inside Report Viewer flag - controls text truncation in charts */
|
|
3320
|
+
private insideReportViewerSignal;
|
|
3321
|
+
readonly insideReportViewer: _angular_core.Signal<boolean>;
|
|
3026
3322
|
/** Reload current page subject */
|
|
3027
3323
|
private reloadCurrentPageSubject;
|
|
3028
3324
|
readonly reloadCurrentPage$: rxjs.Observable<void>;
|
|
@@ -3038,6 +3334,11 @@ declare class DashboardStoreService {
|
|
|
3038
3334
|
* Update stop actions flag
|
|
3039
3335
|
*/
|
|
3040
3336
|
updateStopActions(value: boolean): void;
|
|
3337
|
+
/**
|
|
3338
|
+
* Set inside report viewer mode
|
|
3339
|
+
* When true, axis labels won't be truncated and custom legends may be skipped
|
|
3340
|
+
*/
|
|
3341
|
+
setInsideReportViewer(value: boolean): void;
|
|
3041
3342
|
/**
|
|
3042
3343
|
* Update dynamic key in store
|
|
3043
3344
|
*/
|
|
@@ -3119,61 +3420,6 @@ declare class ManageBreadcrumb implements OnInit {
|
|
|
3119
3420
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageBreadcrumb, "mt-manage-breadcrumb", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3120
3421
|
}
|
|
3121
3422
|
|
|
3122
|
-
/**
|
|
3123
|
-
* Filter Field Models
|
|
3124
|
-
*
|
|
3125
|
-
* Defines the structure for dynamic filter fields configuration
|
|
3126
|
-
* used in dashboard page filtering.
|
|
3127
|
-
*/
|
|
3128
|
-
/** Localized text with English and Arabic translations */
|
|
3129
|
-
interface LocalizedText {
|
|
3130
|
-
en: string;
|
|
3131
|
-
ar: string;
|
|
3132
|
-
}
|
|
3133
|
-
/** Filter field types supported by the system */
|
|
3134
|
-
type FilterFieldType = 'dropdownTVService' | 'lookup' | 'status' | 'phaseGate' | 'user' | 'date' | 'section' | 'separator' | 'year' | 'month' | 'quarter' | 'checkbox' | 'schemaSettings' | 'schemaSettingsLeafs';
|
|
3135
|
-
/** Selection item for dropdown configuration */
|
|
3136
|
-
interface FilterSelectionItem {
|
|
3137
|
-
id: number;
|
|
3138
|
-
moduleType?: string;
|
|
3139
|
-
moduleId?: number;
|
|
3140
|
-
filters?: any[];
|
|
3141
|
-
modules?: any[];
|
|
3142
|
-
properties?: any[];
|
|
3143
|
-
}
|
|
3144
|
-
/** Filter field configuration details */
|
|
3145
|
-
interface FilterFieldConfiguration {
|
|
3146
|
-
payload?: {
|
|
3147
|
-
dashboardId: number;
|
|
3148
|
-
selection: FilterSelectionItem[];
|
|
3149
|
-
chartType: string;
|
|
3150
|
-
query: {
|
|
3151
|
-
selectedProperties: string[];
|
|
3152
|
-
};
|
|
3153
|
-
};
|
|
3154
|
-
lookupId?: number;
|
|
3155
|
-
schemaLevelId?: number;
|
|
3156
|
-
logId?: number;
|
|
3157
|
-
isRequird?: boolean;
|
|
3158
|
-
isMultiple?: boolean;
|
|
3159
|
-
checked?: boolean;
|
|
3160
|
-
minYear?: number;
|
|
3161
|
-
maxYear?: number;
|
|
3162
|
-
}
|
|
3163
|
-
/** Filter field definition */
|
|
3164
|
-
interface FilterField {
|
|
3165
|
-
key?: string;
|
|
3166
|
-
name?: LocalizedText;
|
|
3167
|
-
type: FilterFieldType;
|
|
3168
|
-
configuration?: FilterFieldConfiguration;
|
|
3169
|
-
}
|
|
3170
|
-
/** Filter field type option for dropdown */
|
|
3171
|
-
interface FilterFieldTypeOption {
|
|
3172
|
-
value: FilterFieldType;
|
|
3173
|
-
label: string;
|
|
3174
|
-
products: string[];
|
|
3175
|
-
}
|
|
3176
|
-
|
|
3177
3423
|
/**
|
|
3178
3424
|
* Manage Filter On Page Component
|
|
3179
3425
|
*
|
|
@@ -3274,6 +3520,18 @@ declare class ChartSettingsDrawer {
|
|
|
3274
3520
|
/** The chart item signal - reactive for proper change detection */
|
|
3275
3521
|
readonly item: _angular_core.WritableSignal<DashboardChartItem | null>;
|
|
3276
3522
|
constructor();
|
|
3523
|
+
/** Active tab: 'display' or 'chartControls' */
|
|
3524
|
+
readonly activeTab: _angular_core.WritableSignal<string>;
|
|
3525
|
+
/** Tab options - always show Display, show Chart Controls only when a chart control UI exists */
|
|
3526
|
+
readonly tabOptions: _angular_core.Signal<{
|
|
3527
|
+
label: string;
|
|
3528
|
+
value: string;
|
|
3529
|
+
icon: string;
|
|
3530
|
+
}[]>;
|
|
3531
|
+
/** Resolve ChartTypeConfig from CHART_TYPES based on item config */
|
|
3532
|
+
readonly resolvedChartType: _angular_core.Signal<ChartTypeConfig | null>;
|
|
3533
|
+
/** ItemConfig computed for DisplaySettings input */
|
|
3534
|
+
readonly itemConfig: _angular_core.Signal<ItemConfig | null>;
|
|
3277
3535
|
/** Determine the type of manage UI to show */
|
|
3278
3536
|
readonly manageType: _angular_core.Signal<QuickManageType>;
|
|
3279
3537
|
/** Default config (full config for DefaultControlUi) */
|
|
@@ -3296,6 +3554,8 @@ declare class ChartSettingsDrawer {
|
|
|
3296
3554
|
onStackBarConfigChange(config: any): void;
|
|
3297
3555
|
/** Update snapshot bar chart config */
|
|
3298
3556
|
onSnapshotBarConfigChange(config: any): void;
|
|
3557
|
+
/** Update client config from DisplaySettings */
|
|
3558
|
+
onClientConfigUpdate(partialClientConfig: Partial<ClientConfig>): void;
|
|
3299
3559
|
/** Apply changes and close drawer */
|
|
3300
3560
|
apply(): void;
|
|
3301
3561
|
/** Close without changes */
|
|
@@ -3304,130 +3564,605 @@ declare class ChartSettingsDrawer {
|
|
|
3304
3564
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartSettingsDrawer, "mt-chart-settings-drawer", never, {}, {}, never, never, true, never>;
|
|
3305
3565
|
}
|
|
3306
3566
|
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
subtitleColor: string;
|
|
3315
|
-
backgroundColor: string;
|
|
3316
|
-
borderColor: string;
|
|
3317
|
-
borderRadius: number;
|
|
3318
|
-
padding: number;
|
|
3567
|
+
/** Shadow configuration */
|
|
3568
|
+
interface ShadowConfig {
|
|
3569
|
+
x: number;
|
|
3570
|
+
y: number;
|
|
3571
|
+
blur: number;
|
|
3572
|
+
spread: number;
|
|
3573
|
+
color: string;
|
|
3319
3574
|
}
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
value: number;
|
|
3325
|
-
}[];
|
|
3326
|
-
private onChange;
|
|
3327
|
-
private onTouched;
|
|
3328
|
-
writeValue(value: DefaultControlConfig): void;
|
|
3329
|
-
registerOnChange(fn: (value: DefaultControlConfig) => void): void;
|
|
3330
|
-
registerOnTouched(fn: () => void): void;
|
|
3331
|
-
updateConfig(partial: Partial<DefaultControlConfig>): void;
|
|
3332
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DefaultControlUi, never>;
|
|
3333
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DefaultControlUi, "mt-default-control-ui", never, {}, {}, never, never, true, never>;
|
|
3575
|
+
/** Override label configuration */
|
|
3576
|
+
interface OverrideLabel {
|
|
3577
|
+
en: string;
|
|
3578
|
+
ar: string;
|
|
3334
3579
|
}
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
* Pie Chart Configuration - Matches old implementation exactly
|
|
3338
|
-
*/
|
|
3339
|
-
interface PieControlConfig {
|
|
3340
|
-
radius?: number;
|
|
3341
|
-
thickness?: number;
|
|
3342
|
-
padAngle?: number;
|
|
3580
|
+
/** Card style configuration */
|
|
3581
|
+
interface CardStyleConfig {
|
|
3343
3582
|
borderRadius?: number;
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
startAngle?: number;
|
|
3347
|
-
endAngle?: number;
|
|
3348
|
-
roseType?: boolean | 'radius' | 'area';
|
|
3349
|
-
useEnhancedLegend?: boolean;
|
|
3350
|
-
legendPosition?: 'left' | 'right' | 'top' | 'bottom';
|
|
3351
|
-
legendVerticalAlign?: 'top' | 'middle' | 'bottom';
|
|
3352
|
-
legendOrientation?: 'horizontal' | 'vertical';
|
|
3353
|
-
legendType?: 'scroll' | 'plain';
|
|
3354
|
-
legendFontSize?: number;
|
|
3355
|
-
legendFontColor?: string;
|
|
3356
|
-
legendIcon?: string;
|
|
3357
|
-
labelFontSize?: number;
|
|
3358
|
-
totalValueFontSize?: number;
|
|
3359
|
-
labelFontColor?: string;
|
|
3360
|
-
labelFormatter?: string;
|
|
3361
|
-
tooltipTrigger?: 'item' | 'axis' | 'none';
|
|
3362
|
-
labelPosition?: string;
|
|
3363
|
-
showLabelLine?: boolean;
|
|
3364
|
-
explode?: number;
|
|
3365
|
-
animation?: boolean;
|
|
3366
|
-
animationDuration?: number;
|
|
3367
|
-
tooltipBackgroundColor?: string;
|
|
3368
|
-
tooltipBorderColor?: string;
|
|
3369
|
-
tooltipBorderWidth?: number;
|
|
3583
|
+
backgroundColor?: string;
|
|
3584
|
+
shadows?: ShadowConfig[];
|
|
3370
3585
|
}
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3586
|
+
/** Header card configuration */
|
|
3587
|
+
interface HeaderCardConfig {
|
|
3588
|
+
isHeaderCentered?: boolean;
|
|
3589
|
+
isHeaderHidden?: boolean;
|
|
3590
|
+
headerColor?: string;
|
|
3591
|
+
headerFontSize?: number;
|
|
3592
|
+
}
|
|
3593
|
+
/** Label center configuration */
|
|
3594
|
+
interface LabelCenterConfig {
|
|
3595
|
+
hide?: boolean;
|
|
3596
|
+
text?: {
|
|
3597
|
+
en?: string;
|
|
3598
|
+
ar?: string;
|
|
3599
|
+
};
|
|
3600
|
+
}
|
|
3601
|
+
/** Sort data bars configuration */
|
|
3602
|
+
interface SortDataBarsConfig {
|
|
3603
|
+
enable?: boolean;
|
|
3604
|
+
sortBy?: string;
|
|
3605
|
+
order?: 'asc' | 'desc' | string;
|
|
3606
|
+
direction?: 'asc' | 'desc' | string;
|
|
3607
|
+
}
|
|
3608
|
+
/** Card info configuration */
|
|
3609
|
+
interface CardInfoConfig {
|
|
3610
|
+
show?: boolean;
|
|
3611
|
+
value?: any;
|
|
3612
|
+
type?: string;
|
|
3613
|
+
}
|
|
3614
|
+
/** Format configuration */
|
|
3615
|
+
interface FormatConfig {
|
|
3616
|
+
type?: string | null;
|
|
3617
|
+
showCurrency?: boolean;
|
|
3618
|
+
handleLang?: boolean;
|
|
3619
|
+
customText?: string | null;
|
|
3620
|
+
customDateFormat?: string | null;
|
|
3621
|
+
showCurrencyTooltip?: boolean;
|
|
3622
|
+
hideSuffixes?: boolean;
|
|
3623
|
+
}
|
|
3624
|
+
/** Table format configuration */
|
|
3625
|
+
interface TableFormatConfig {
|
|
3626
|
+
thTextColor?: string | null;
|
|
3627
|
+
thBackgroundColor?: string | null;
|
|
3628
|
+
tdTextColor?: string | null;
|
|
3629
|
+
groupBackgroundColor?: string | null;
|
|
3630
|
+
groupTextColor?: string | null;
|
|
3631
|
+
thFontBold?: boolean;
|
|
3632
|
+
tdFontBold?: boolean;
|
|
3633
|
+
thFontSize?: number | null;
|
|
3634
|
+
tdFontSize?: number | null;
|
|
3635
|
+
hideTableSubheader?: boolean;
|
|
3636
|
+
disableCurrencyFormat?: boolean;
|
|
3637
|
+
showPercentageAsProgressBar?: boolean;
|
|
3638
|
+
showPercentageStatus?: boolean;
|
|
3639
|
+
hiddenColumns?: string[];
|
|
3640
|
+
sortConfig?: {
|
|
3641
|
+
column: string;
|
|
3642
|
+
direction: 'asc' | 'desc';
|
|
3643
|
+
};
|
|
3644
|
+
}
|
|
3645
|
+
/** Color condition configuration */
|
|
3646
|
+
interface ColorCondition {
|
|
3647
|
+
color: string;
|
|
3648
|
+
type: 'equal' | 'greaterThan' | 'greaterThanOrEqual' | 'lessThan' | 'lessThanOrEqual' | 'between';
|
|
3649
|
+
value1?: number;
|
|
3650
|
+
value2?: number;
|
|
3651
|
+
labelEn?: string;
|
|
3652
|
+
labelAr?: string;
|
|
3653
|
+
}
|
|
3654
|
+
/** Color conditions by bar index */
|
|
3655
|
+
interface ColorConditionsByIndex {
|
|
3656
|
+
[key: number]: ColorCondition[];
|
|
3657
|
+
}
|
|
3658
|
+
/** Ring gauge configuration */
|
|
3659
|
+
interface RingGaugeConfig {
|
|
3660
|
+
centerProperty?: string;
|
|
3661
|
+
statusProperty?: string;
|
|
3662
|
+
hiddenProperties?: string[];
|
|
3663
|
+
}
|
|
3664
|
+
/** Order configuration */
|
|
3665
|
+
interface OrderConfig {
|
|
3666
|
+
order?: string[];
|
|
3667
|
+
operation?: string;
|
|
3668
|
+
orderBy?: string;
|
|
3669
|
+
}
|
|
3670
|
+
/** Card list configuration */
|
|
3671
|
+
interface CardListConfig {
|
|
3672
|
+
hideProperties?: string[];
|
|
3673
|
+
}
|
|
3674
|
+
/** Property translation entry */
|
|
3675
|
+
interface PropertyTranslation {
|
|
3676
|
+
ar: string;
|
|
3677
|
+
en: string;
|
|
3678
|
+
}
|
|
3679
|
+
/** Property translations map */
|
|
3680
|
+
interface PropertyTranslationsMap {
|
|
3681
|
+
[key: string]: PropertyTranslation;
|
|
3682
|
+
}
|
|
3683
|
+
/** Property color entry */
|
|
3684
|
+
interface PropertyColorEntry {
|
|
3685
|
+
selectedKey: string;
|
|
3686
|
+
}
|
|
3687
|
+
/** Property colors map */
|
|
3688
|
+
interface PropertyColorsMap {
|
|
3689
|
+
[key: string]: PropertyColorEntry;
|
|
3690
|
+
}
|
|
3691
|
+
/** Props config as index item */
|
|
3692
|
+
interface PropsConfigAsIndexItem {
|
|
3693
|
+
width?: string;
|
|
3694
|
+
colorAsProperty?: string;
|
|
3695
|
+
hidden?: boolean;
|
|
3696
|
+
border?: string[];
|
|
3697
|
+
}
|
|
3698
|
+
/** Format X-Axis configuration */
|
|
3699
|
+
interface FormatXAxisConfig {
|
|
3700
|
+
type?: string | null;
|
|
3701
|
+
shortFormate?: boolean;
|
|
3702
|
+
}
|
|
3703
|
+
/** Extra column from lookup configuration */
|
|
3704
|
+
interface ExtraColumnFromLookupConfig {
|
|
3705
|
+
extraCoulmnFromLookup?: boolean;
|
|
3706
|
+
lookupId?: number | null;
|
|
3707
|
+
groupedBy?: string | null;
|
|
3708
|
+
propKey?: string | null;
|
|
3709
|
+
}
|
|
3710
|
+
/** Timeline header colors config (single) */
|
|
3711
|
+
interface TimelineHeaderSingleConfig {
|
|
3712
|
+
bgColor?: string;
|
|
3713
|
+
color?: string;
|
|
3714
|
+
}
|
|
3715
|
+
/**
|
|
3716
|
+
* Display Settings Component
|
|
3717
|
+
*
|
|
3718
|
+
* Comprehensive visual/display configuration with chart-type-aware field visibility.
|
|
3719
|
+
* Shows only relevant settings based on the selected chart type.
|
|
3720
|
+
*/
|
|
3721
|
+
declare class DisplaySettings {
|
|
3722
|
+
/** Current configuration */
|
|
3723
|
+
readonly config: _angular_core.InputSignal<ItemConfig | null>;
|
|
3724
|
+
/** Selected chart type */
|
|
3725
|
+
readonly chartType: _angular_core.InputSignal<ChartTypeConfig | null>;
|
|
3726
|
+
/** Available properties (for property-based configs) */
|
|
3727
|
+
readonly availableProperties: _angular_core.InputSignal<any[]>;
|
|
3728
|
+
/** Selected properties from query */
|
|
3729
|
+
readonly selectedProperties: _angular_core.InputSignal<string[]>;
|
|
3730
|
+
/** Available lookups for extra column from lookup */
|
|
3731
|
+
readonly lookups: _angular_core.InputSignal<any[]>;
|
|
3732
|
+
/** Emit client config changes */
|
|
3733
|
+
readonly clientConfigChange: _angular_core.OutputEmitterRef<Partial<ClientConfig>>;
|
|
3734
|
+
/** Color condition expansion state */
|
|
3735
|
+
readonly colorConditionExpanded: _angular_core.WritableSignal<Record<number, boolean>>;
|
|
3736
|
+
/** Property translations paste state */
|
|
3737
|
+
readonly showPropertyTranslationsPaste: _angular_core.WritableSignal<boolean>;
|
|
3738
|
+
readonly propertyTranslationsPasteText: _angular_core.WritableSignal<string>;
|
|
3739
|
+
readonly propertyTranslationsPasteError: _angular_core.WritableSignal<string>;
|
|
3740
|
+
/** Property colors paste state */
|
|
3741
|
+
readonly showPropertyColorsPaste: _angular_core.WritableSignal<boolean>;
|
|
3742
|
+
readonly propertyColorsPasteText: _angular_core.WritableSignal<string>;
|
|
3743
|
+
readonly propertyColorsPasteError: _angular_core.WritableSignal<string>;
|
|
3744
|
+
/**
|
|
3745
|
+
* Chart type to fields mapping
|
|
3746
|
+
* Each chart type maps to comma-separated list of visible fields
|
|
3747
|
+
*/
|
|
3748
|
+
private readonly chartTypeFieldsMap;
|
|
3749
|
+
/** Computed fields to show based on chart type */
|
|
3750
|
+
readonly fieldsToShow: _angular_core.Signal<string>;
|
|
3751
|
+
/** Check if a field should be shown */
|
|
3752
|
+
shouldShowField(fieldName: string): boolean;
|
|
3753
|
+
/** Position options */
|
|
3754
|
+
readonly positionOptions: {
|
|
3381
3755
|
label: string;
|
|
3382
3756
|
value: string;
|
|
3383
3757
|
}[];
|
|
3758
|
+
/** Legend position options */
|
|
3384
3759
|
readonly legendPositionOptions: {
|
|
3385
3760
|
label: string;
|
|
3386
3761
|
value: string;
|
|
3387
3762
|
}[];
|
|
3388
|
-
|
|
3763
|
+
/** Legend icon type options */
|
|
3764
|
+
readonly legendIconOptions: {
|
|
3389
3765
|
label: string;
|
|
3390
3766
|
value: string;
|
|
3391
3767
|
}[];
|
|
3392
|
-
|
|
3768
|
+
/** Label position options */
|
|
3769
|
+
readonly labelPositionOptions: {
|
|
3393
3770
|
label: string;
|
|
3394
3771
|
value: string;
|
|
3395
3772
|
}[];
|
|
3396
|
-
|
|
3773
|
+
/** Map options */
|
|
3774
|
+
readonly mapOptions: {
|
|
3397
3775
|
label: string;
|
|
3398
3776
|
value: string;
|
|
3399
3777
|
}[];
|
|
3400
|
-
|
|
3778
|
+
/** Order type options */
|
|
3779
|
+
readonly orderTypeOptions: {
|
|
3401
3780
|
label: string;
|
|
3402
3781
|
value: string;
|
|
3403
3782
|
}[];
|
|
3404
|
-
|
|
3783
|
+
/** Order operation options */
|
|
3784
|
+
readonly orderOperationOptions: {
|
|
3405
3785
|
label: string;
|
|
3406
3786
|
value: string;
|
|
3407
3787
|
}[];
|
|
3408
|
-
|
|
3788
|
+
/** Border options for props config */
|
|
3789
|
+
readonly borderOptions: {
|
|
3409
3790
|
label: string;
|
|
3410
3791
|
value: string;
|
|
3411
3792
|
}[];
|
|
3412
|
-
|
|
3793
|
+
/** Color condition type options */
|
|
3794
|
+
readonly colorConditionTypeOptions: {
|
|
3413
3795
|
label: string;
|
|
3414
|
-
value:
|
|
3796
|
+
value: string;
|
|
3415
3797
|
}[];
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3421
|
-
|
|
3422
|
-
|
|
3423
|
-
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
|
|
3430
|
-
|
|
3798
|
+
/** Format type options */
|
|
3799
|
+
readonly formatTypeOptions: ({
|
|
3800
|
+
label: string;
|
|
3801
|
+
value: null;
|
|
3802
|
+
} | {
|
|
3803
|
+
label: string;
|
|
3804
|
+
value: string;
|
|
3805
|
+
})[];
|
|
3806
|
+
/** Format X-Axis type options */
|
|
3807
|
+
readonly formatXAxisTypeOptions: ({
|
|
3808
|
+
label: string;
|
|
3809
|
+
value: null;
|
|
3810
|
+
} | {
|
|
3811
|
+
label: string;
|
|
3812
|
+
value: string;
|
|
3813
|
+
})[];
|
|
3814
|
+
/** Default color palette */
|
|
3815
|
+
readonly defaultColorPalette: string[];
|
|
3816
|
+
/** Current style config */
|
|
3817
|
+
readonly styleConfig: _angular_core.Signal<StyleConfig>;
|
|
3818
|
+
/** Current config as type */
|
|
3819
|
+
readonly configAsType: _angular_core.Signal<{
|
|
3820
|
+
[key: string]: any;
|
|
3821
|
+
icon?: string;
|
|
3822
|
+
breadcrumb?: any[];
|
|
3823
|
+
}>;
|
|
3824
|
+
/** Current card info */
|
|
3825
|
+
readonly cardInfo: _angular_core.Signal<CardInfoConfig>;
|
|
3826
|
+
/** Current header card config */
|
|
3827
|
+
readonly headerCardConfig: _angular_core.Signal<HeaderCardConfig>;
|
|
3828
|
+
/** Current card style config */
|
|
3829
|
+
readonly cardStyleConfig: _angular_core.Signal<CardStyleConfig>;
|
|
3830
|
+
/** Current label config */
|
|
3831
|
+
readonly labelConfig: _angular_core.Signal<{
|
|
3832
|
+
show?: boolean;
|
|
3833
|
+
showTotalInTop?: boolean;
|
|
3834
|
+
position?: string;
|
|
3835
|
+
}>;
|
|
3836
|
+
/** Current legend config */
|
|
3837
|
+
readonly legendConfig: _angular_core.Signal<{
|
|
3838
|
+
show?: boolean;
|
|
3839
|
+
position?: string;
|
|
3840
|
+
iconType?: string;
|
|
3841
|
+
}>;
|
|
3842
|
+
/** Current label center config */
|
|
3843
|
+
readonly labelCenterConfig: _angular_core.Signal<LabelCenterConfig>;
|
|
3844
|
+
/** Current sort data bars config */
|
|
3845
|
+
readonly sortDataBarsConfig: _angular_core.Signal<SortDataBarsConfig>;
|
|
3846
|
+
/** Current override labels */
|
|
3847
|
+
readonly overrideLabels: _angular_core.Signal<OverrideLabel[]>;
|
|
3848
|
+
/** Current default colors */
|
|
3849
|
+
readonly defaultColors: _angular_core.Signal<string[]>;
|
|
3850
|
+
/** Current order config */
|
|
3851
|
+
readonly orderConfig: _angular_core.Signal<any>;
|
|
3852
|
+
/** Current format config */
|
|
3853
|
+
readonly formatConfig: _angular_core.Signal<FormatConfig>;
|
|
3854
|
+
/** Current table format config */
|
|
3855
|
+
readonly tableFormatConfig: _angular_core.Signal<TableFormatConfig>;
|
|
3856
|
+
/** Current color by condition */
|
|
3857
|
+
readonly colorByCondition: _angular_core.Signal<ColorConditionsByIndex>;
|
|
3858
|
+
/** Current ring gauge config */
|
|
3859
|
+
readonly ringGaugeConfig: _angular_core.Signal<RingGaugeConfig>;
|
|
3860
|
+
/** Current card list config */
|
|
3861
|
+
readonly cardListConfig: _angular_core.Signal<CardListConfig>;
|
|
3862
|
+
/** Props config as index */
|
|
3863
|
+
readonly propsConfigAsIndex: _angular_core.Signal<PropsConfigAsIndexItem[]>;
|
|
3864
|
+
/** Property translations map */
|
|
3865
|
+
readonly propertyTranslations: _angular_core.Signal<PropertyTranslationsMap>;
|
|
3866
|
+
/** Property colors map */
|
|
3867
|
+
readonly propertyColors: _angular_core.Signal<PropertyColorsMap>;
|
|
3868
|
+
/** Format X-Axis config */
|
|
3869
|
+
readonly formatXAxisConfig: _angular_core.Signal<FormatXAxisConfig>;
|
|
3870
|
+
/** Table columns config (extra column from lookup) */
|
|
3871
|
+
readonly tableColumnsConfig: _angular_core.Signal<ExtraColumnFromLookupConfig>;
|
|
3872
|
+
/** Timeline header colors config (single object for old format) */
|
|
3873
|
+
readonly timelineHeaderColorsSingle: _angular_core.Signal<TimelineHeaderSingleConfig>;
|
|
3874
|
+
/** Toggle association */
|
|
3875
|
+
readonly toggleAssociation: _angular_core.Signal<boolean>;
|
|
3876
|
+
/** Selected properties resolved from input or config */
|
|
3877
|
+
readonly resolvedSelectedProperties: _angular_core.Signal<any[]>;
|
|
3878
|
+
/** Available properties resolved from input or selected properties */
|
|
3879
|
+
readonly resolvedAvailableProperties: _angular_core.Signal<any[]>;
|
|
3880
|
+
/** Available properties as options */
|
|
3881
|
+
readonly propertyOptions: _angular_core.Signal<{
|
|
3882
|
+
label: any;
|
|
3883
|
+
value: any;
|
|
3884
|
+
}[]>;
|
|
3885
|
+
/** Available translation options (exclude used) */
|
|
3886
|
+
readonly availableTranslationOptions: _angular_core.Signal<{
|
|
3887
|
+
label: any;
|
|
3888
|
+
value: any;
|
|
3889
|
+
}[]>;
|
|
3890
|
+
/** Available color options (exclude used) */
|
|
3891
|
+
readonly availableColorOptions: _angular_core.Signal<{
|
|
3892
|
+
label: any;
|
|
3893
|
+
value: any;
|
|
3894
|
+
}[]>;
|
|
3895
|
+
/** All property options (full list) */
|
|
3896
|
+
readonly allPropertyKeyOptions: _angular_core.Signal<{
|
|
3897
|
+
label: any;
|
|
3898
|
+
value: any;
|
|
3899
|
+
}[]>;
|
|
3900
|
+
/** Ring gauge hidden properties options */
|
|
3901
|
+
readonly ringGaugeHiddenOptions: _angular_core.Signal<{
|
|
3902
|
+
label: any;
|
|
3903
|
+
value: any;
|
|
3904
|
+
}[]>;
|
|
3905
|
+
/** Update style config property */
|
|
3906
|
+
updateStyleConfig(key: keyof StyleConfig | string, value: any): void;
|
|
3907
|
+
/** Update configAsType property */
|
|
3908
|
+
updateConfigAsType(key: string, value: any): void;
|
|
3909
|
+
/** Update nested configAsType property */
|
|
3910
|
+
updateNestedConfigAsType(parentKey: string, key: string, value: any): void;
|
|
3911
|
+
/** Update header card config */
|
|
3912
|
+
updateHeaderCardConfig(key: keyof HeaderCardConfig, value: any): void;
|
|
3913
|
+
/** Update legend settings */
|
|
3914
|
+
updateLegend(key: string, value: unknown): void;
|
|
3915
|
+
/** Update label settings */
|
|
3916
|
+
updateLabel(key: string, value: unknown): void;
|
|
3917
|
+
/** Update label center config */
|
|
3918
|
+
updateLabelCenterConfig(key: string, value: any): void;
|
|
3919
|
+
/** Update label center text */
|
|
3920
|
+
updateLabelCenterText(lang: 'en' | 'ar', value: string): void;
|
|
3921
|
+
/** Update card style config */
|
|
3922
|
+
updateCardStyleConfig(key: keyof CardStyleConfig, value: any): void;
|
|
3923
|
+
/** Update sort data bars config */
|
|
3924
|
+
updateSortDataBarsConfig(key: string, value: any): void;
|
|
3925
|
+
/** Update card info config */
|
|
3926
|
+
updateCardInfoConfig(key: string, value: any): void;
|
|
3927
|
+
/** Update border top visibility */
|
|
3928
|
+
updateBorderTopShow(show: boolean): void;
|
|
3929
|
+
/** Update border top color */
|
|
3930
|
+
updateBorderTopColor(color: string): void;
|
|
3931
|
+
/** Update map type */
|
|
3932
|
+
updateMapType(value: string): void;
|
|
3933
|
+
/** Add a new shadow */
|
|
3934
|
+
addShadow(): void;
|
|
3935
|
+
/** Remove a shadow */
|
|
3936
|
+
removeShadow(index: number): void;
|
|
3937
|
+
/** Update a shadow property */
|
|
3938
|
+
updateShadow(index: number, key: keyof ShadowConfig, value: any): void;
|
|
3939
|
+
/** Add override label */
|
|
3940
|
+
addOverrideLabel(): void;
|
|
3941
|
+
/** Remove override label */
|
|
3942
|
+
removeOverrideLabel(index: number): void;
|
|
3943
|
+
/** Update override label */
|
|
3944
|
+
updateOverrideLabel(index: number, lang: 'en' | 'ar', value: string): void;
|
|
3945
|
+
/** Add a default color */
|
|
3946
|
+
addDefaultColor(color: string): void;
|
|
3947
|
+
/** Remove a default color */
|
|
3948
|
+
removeDefaultColor(index: number): void;
|
|
3949
|
+
/** Update a default color */
|
|
3950
|
+
updateDefaultColor(index: number, color: string): void;
|
|
3951
|
+
trackByIndex(index: number): number;
|
|
3952
|
+
/** Update format config */
|
|
3953
|
+
updateFormatConfig(key: keyof FormatConfig, value: any): void;
|
|
3954
|
+
/** Update table format config */
|
|
3955
|
+
updateTableFormatConfig(key: keyof TableFormatConfig, value: any): void;
|
|
3956
|
+
/** Update table format sort config */
|
|
3957
|
+
updateTableFormatSortConfig(key: 'column' | 'direction', value: string): void;
|
|
3958
|
+
/** Reset table format to default */
|
|
3959
|
+
resetTableFormat(): void;
|
|
3960
|
+
/** Get color condition indexes */
|
|
3961
|
+
getColorConditionIndexes(): number[];
|
|
3962
|
+
/** Check if a bar index is expanded */
|
|
3963
|
+
isColorConditionExpanded(index: number): boolean;
|
|
3964
|
+
/** Toggle bar index expansion */
|
|
3965
|
+
toggleColorConditionExpanded(index: number): void;
|
|
3966
|
+
/** Add bar index for color conditions */
|
|
3967
|
+
addColorConditionIndex(): void;
|
|
3968
|
+
/** Remove bar index */
|
|
3969
|
+
removeColorConditionIndex(index: number): void;
|
|
3970
|
+
/** Add condition to bar index */
|
|
3971
|
+
addColorCondition(index: number): void;
|
|
3972
|
+
/** Remove condition from bar index */
|
|
3973
|
+
removeColorCondition(index: number, conditionIndex: number): void;
|
|
3974
|
+
/** Update color condition */
|
|
3975
|
+
updateColorCondition(index: number, conditionIndex: number, key: keyof ColorCondition, value: any): void;
|
|
3976
|
+
/** Update ring gauge config */
|
|
3977
|
+
updateRingGaugeConfig(key: keyof RingGaugeConfig, value: any): void;
|
|
3978
|
+
/** Update card list hide properties */
|
|
3979
|
+
updateCardListHideProperties(properties: string[]): void;
|
|
3980
|
+
/** Add props config item */
|
|
3981
|
+
addPropsConfigItem(): void;
|
|
3982
|
+
/** Remove props config item */
|
|
3983
|
+
removePropsConfigItem(index: number): void;
|
|
3984
|
+
/** Update props config item */
|
|
3985
|
+
updatePropsConfigItem(index: number, key: keyof PropsConfigAsIndexItem, value: any): void;
|
|
3986
|
+
/** Update order config field */
|
|
3987
|
+
updateOrderConfig(key: keyof OrderConfig, value: any): void;
|
|
3988
|
+
/** Add order item */
|
|
3989
|
+
addOrderItem(): void;
|
|
3990
|
+
/** Remove order item */
|
|
3991
|
+
removeOrderItem(index: number): void;
|
|
3992
|
+
/** Update order item */
|
|
3993
|
+
updateOrderItem(index: number, value: string): void;
|
|
3994
|
+
/** Move order item up */
|
|
3995
|
+
moveOrderItemUp(index: number): void;
|
|
3996
|
+
/** Move order item down */
|
|
3997
|
+
moveOrderItemDown(index: number): void;
|
|
3998
|
+
/** Get property translation keys */
|
|
3999
|
+
getPropertyTranslationKeys(): string[];
|
|
4000
|
+
/** Add property translation */
|
|
4001
|
+
addPropertyTranslation(propertyKey: string): void;
|
|
4002
|
+
/** Remove property translation */
|
|
4003
|
+
removePropertyTranslation(propertyKey: string): void;
|
|
4004
|
+
/** Update property translation */
|
|
4005
|
+
updatePropertyTranslation(propertyKey: string, lang: 'ar' | 'en', value: string): void;
|
|
4006
|
+
/** Get property color keys */
|
|
4007
|
+
getPropertyColorKeys(): string[];
|
|
4008
|
+
/** Add property color */
|
|
4009
|
+
addPropertyColor(propertyKey: string): void;
|
|
4010
|
+
/** Copy property translations */
|
|
4011
|
+
copyPropertyTranslations(): void;
|
|
4012
|
+
/** Toggle property translations paste area */
|
|
4013
|
+
togglePropertyTranslationsPaste(): void;
|
|
4014
|
+
/** Apply pasted property translations */
|
|
4015
|
+
applyPropertyTranslationsPaste(): void;
|
|
4016
|
+
/** Remove property color */
|
|
4017
|
+
removePropertyColor(propertyKey: string): void;
|
|
4018
|
+
/** Update property color */
|
|
4019
|
+
updatePropertyColor(propertyKey: string, selectedKey: string): void;
|
|
4020
|
+
/** Copy property colors */
|
|
4021
|
+
copyPropertyColors(): void;
|
|
4022
|
+
/** Toggle property colors paste area */
|
|
4023
|
+
togglePropertyColorsPaste(): void;
|
|
4024
|
+
/** Apply pasted property colors */
|
|
4025
|
+
applyPropertyColorsPaste(): void;
|
|
4026
|
+
/** Update format X-Axis config */
|
|
4027
|
+
updateFormatXAxisConfig(key: keyof FormatXAxisConfig, value: any): void;
|
|
4028
|
+
/** Update table columns config */
|
|
4029
|
+
updateTableColumnsConfig(key: keyof ExtraColumnFromLookupConfig, value: any): void;
|
|
4030
|
+
/** Update timeline header colors (single config) */
|
|
4031
|
+
updateTimelineHeaderColorSingle(key: 'bgColor' | 'color', value: string): void;
|
|
4032
|
+
/** Update toggle association */
|
|
4033
|
+
updateToggleAssociation(value: boolean): void;
|
|
4034
|
+
/** Selected property for adding translations */
|
|
4035
|
+
readonly selectedPropertyForTranslation: _angular_core.WritableSignal<string>;
|
|
4036
|
+
/** Selected property for adding colors */
|
|
4037
|
+
readonly selectedPropertyForColor: _angular_core.WritableSignal<string>;
|
|
4038
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DisplaySettings, never>;
|
|
4039
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DisplaySettings, "mt-display-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "chartType": { "alias": "chartType"; "required": false; "isSignal": true; }; "availableProperties": { "alias": "availableProperties"; "required": false; "isSignal": true; }; "selectedProperties": { "alias": "selectedProperties"; "required": false; "isSignal": true; }; "lookups": { "alias": "lookups"; "required": false; "isSignal": true; }; }, { "clientConfigChange": "clientConfigChange"; }, never, never, true, never>;
|
|
4040
|
+
}
|
|
4041
|
+
|
|
4042
|
+
interface DefaultControlConfig {
|
|
4043
|
+
title: string;
|
|
4044
|
+
titleFontSize: number;
|
|
4045
|
+
titleColor: string;
|
|
4046
|
+
showSubtitle: boolean;
|
|
4047
|
+
subtitle: string;
|
|
4048
|
+
subtitleFontSize: number;
|
|
4049
|
+
subtitleColor: string;
|
|
4050
|
+
backgroundColor: string;
|
|
4051
|
+
borderColor: string;
|
|
4052
|
+
borderRadius: number;
|
|
4053
|
+
padding: number;
|
|
4054
|
+
}
|
|
4055
|
+
declare class DefaultControlUi implements ControlValueAccessor {
|
|
4056
|
+
readonly config: _angular_core.WritableSignal<DefaultControlConfig>;
|
|
4057
|
+
readonly fontSizeOptions: {
|
|
4058
|
+
label: string;
|
|
4059
|
+
value: number;
|
|
4060
|
+
}[];
|
|
4061
|
+
private onChange;
|
|
4062
|
+
private onTouched;
|
|
4063
|
+
writeValue(value: DefaultControlConfig): void;
|
|
4064
|
+
registerOnChange(fn: (value: DefaultControlConfig) => void): void;
|
|
4065
|
+
registerOnTouched(fn: () => void): void;
|
|
4066
|
+
updateConfig(partial: Partial<DefaultControlConfig>): void;
|
|
4067
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DefaultControlUi, never>;
|
|
4068
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DefaultControlUi, "mt-default-control-ui", never, {}, {}, never, never, true, never>;
|
|
4069
|
+
}
|
|
4070
|
+
|
|
4071
|
+
/**
|
|
4072
|
+
* Pie Chart Configuration - Matches old implementation exactly
|
|
4073
|
+
*/
|
|
4074
|
+
interface PieControlConfig {
|
|
4075
|
+
radius?: number;
|
|
4076
|
+
thickness?: number;
|
|
4077
|
+
padAngle?: number;
|
|
4078
|
+
borderRadius?: number;
|
|
4079
|
+
centerX?: number;
|
|
4080
|
+
centerY?: number;
|
|
4081
|
+
startAngle?: number;
|
|
4082
|
+
endAngle?: number;
|
|
4083
|
+
roseType?: boolean | 'radius' | 'area';
|
|
4084
|
+
useEnhancedLegend?: boolean;
|
|
4085
|
+
legendPosition?: 'left' | 'right' | 'top' | 'bottom';
|
|
4086
|
+
legendVerticalAlign?: 'top' | 'middle' | 'bottom';
|
|
4087
|
+
legendOrientation?: 'horizontal' | 'vertical';
|
|
4088
|
+
legendType?: 'scroll' | 'plain';
|
|
4089
|
+
legendFontSize?: number;
|
|
4090
|
+
legendFontColor?: string;
|
|
4091
|
+
legendIcon?: string;
|
|
4092
|
+
labelFontSize?: number;
|
|
4093
|
+
totalValueFontSize?: number;
|
|
4094
|
+
labelFontColor?: string;
|
|
4095
|
+
labelFormatter?: string;
|
|
4096
|
+
tooltipTrigger?: 'item' | 'axis' | 'none';
|
|
4097
|
+
labelPosition?: string;
|
|
4098
|
+
showLabelLine?: boolean;
|
|
4099
|
+
explode?: number;
|
|
4100
|
+
animation?: boolean;
|
|
4101
|
+
animationDuration?: number;
|
|
4102
|
+
tooltipBackgroundColor?: string;
|
|
4103
|
+
tooltipBorderColor?: string;
|
|
4104
|
+
tooltipBorderWidth?: number;
|
|
4105
|
+
}
|
|
4106
|
+
declare class PieControlUi implements ControlValueAccessor {
|
|
4107
|
+
readonly config: _angular_core.WritableSignal<PieControlConfig>;
|
|
4108
|
+
readonly roseTypeOptions: ({
|
|
4109
|
+
label: string;
|
|
4110
|
+
value: boolean;
|
|
4111
|
+
} | {
|
|
4112
|
+
label: string;
|
|
4113
|
+
value: string;
|
|
4114
|
+
})[];
|
|
4115
|
+
readonly labelPositionOptions: {
|
|
4116
|
+
label: string;
|
|
4117
|
+
value: string;
|
|
4118
|
+
}[];
|
|
4119
|
+
readonly legendPositionOptions: {
|
|
4120
|
+
label: string;
|
|
4121
|
+
value: string;
|
|
4122
|
+
}[];
|
|
4123
|
+
readonly legendVerticalAlignOptions: {
|
|
4124
|
+
label: string;
|
|
4125
|
+
value: string;
|
|
4126
|
+
}[];
|
|
4127
|
+
readonly legendOrientationOptions: {
|
|
4128
|
+
label: string;
|
|
4129
|
+
value: string;
|
|
4130
|
+
}[];
|
|
4131
|
+
readonly legendTypeOptions: {
|
|
4132
|
+
label: string;
|
|
4133
|
+
value: string;
|
|
4134
|
+
}[];
|
|
4135
|
+
readonly legendIconOptions: {
|
|
4136
|
+
label: string;
|
|
4137
|
+
value: string;
|
|
4138
|
+
}[];
|
|
4139
|
+
readonly labelFormatterOptions: {
|
|
4140
|
+
label: string;
|
|
4141
|
+
value: string;
|
|
4142
|
+
}[];
|
|
4143
|
+
readonly tooltipTriggerOptions: {
|
|
4144
|
+
label: string;
|
|
4145
|
+
value: string;
|
|
4146
|
+
}[];
|
|
4147
|
+
readonly fontSizeOptions: {
|
|
4148
|
+
label: string;
|
|
4149
|
+
value: number;
|
|
4150
|
+
}[];
|
|
4151
|
+
private onChange;
|
|
4152
|
+
private onTouched;
|
|
4153
|
+
writeValue(value: PieControlConfig): void;
|
|
4154
|
+
registerOnChange(fn: (value: PieControlConfig) => void): void;
|
|
4155
|
+
registerOnTouched(fn: () => void): void;
|
|
4156
|
+
updateConfig(partial: Partial<PieControlConfig>): void;
|
|
4157
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieControlUi, never>;
|
|
4158
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PieControlUi, "mt-pie-control-ui", never, {}, {}, never, never, true, never>;
|
|
4159
|
+
}
|
|
4160
|
+
|
|
4161
|
+
interface BarControlConfig {
|
|
4162
|
+
barWidth?: number;
|
|
4163
|
+
barGap?: number;
|
|
4164
|
+
barCategoryGap?: number;
|
|
4165
|
+
barType?: 'bar' | 'line';
|
|
3431
4166
|
xAxisShow?: boolean;
|
|
3432
4167
|
yAxisShow?: boolean;
|
|
3433
4168
|
yAxisFormat?: string;
|
|
@@ -3522,926 +4257,449 @@ interface StackBarControlConfig {
|
|
|
3522
4257
|
isStacked?: boolean;
|
|
3523
4258
|
borderRadius?: string | number;
|
|
3524
4259
|
}
|
|
3525
|
-
declare class StackBarControlUi implements ControlValueAccessor {
|
|
3526
|
-
readonly config: _angular_core.WritableSignal<StackBarControlConfig>;
|
|
3527
|
-
readonly legendPositionYOptions: {
|
|
3528
|
-
label: string;
|
|
3529
|
-
value: string;
|
|
3530
|
-
}[];
|
|
3531
|
-
readonly legendPositionXOptions: {
|
|
3532
|
-
label: string;
|
|
3533
|
-
value: string;
|
|
3534
|
-
}[];
|
|
3535
|
-
readonly barTypeOptions: {
|
|
3536
|
-
label: string;
|
|
3537
|
-
value: string;
|
|
3538
|
-
}[];
|
|
3539
|
-
readonly yAxisFormatOptions: ({
|
|
3540
|
-
label: string;
|
|
3541
|
-
value: null;
|
|
3542
|
-
} | {
|
|
3543
|
-
label: string;
|
|
3544
|
-
value: string;
|
|
3545
|
-
})[];
|
|
3546
|
-
readonly fontSizeOptions: {
|
|
3547
|
-
label: string;
|
|
3548
|
-
value: number;
|
|
3549
|
-
}[];
|
|
3550
|
-
private onChange;
|
|
3551
|
-
private onTouched;
|
|
3552
|
-
writeValue(value: StackBarControlConfig): void;
|
|
3553
|
-
registerOnChange(fn: (value: StackBarControlConfig) => void): void;
|
|
3554
|
-
registerOnTouched(fn: () => void): void;
|
|
3555
|
-
updateConfig(partial: Partial<StackBarControlConfig>): void;
|
|
3556
|
-
onYAxisFormatChange(formatType: string | null): void;
|
|
3557
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StackBarControlUi, never>;
|
|
3558
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StackBarControlUi, "mt-stack-bar-control-ui", never, {}, {}, never, never, true, never>;
|
|
3559
|
-
}
|
|
3560
|
-
|
|
3561
|
-
/**
|
|
3562
|
-
* Manage Item Component (Drawer)
|
|
3563
|
-
*
|
|
3564
|
-
* Main drawer component for configuring chart/widget items.
|
|
3565
|
-
* Uses tabs to organize different configuration sections.
|
|
3566
|
-
* Provides ManageItemService for state sharing between child components.
|
|
3567
|
-
*/
|
|
3568
|
-
declare class ManageItem implements OnInit {
|
|
3569
|
-
private _dashboardService;
|
|
3570
|
-
private _manageItemService;
|
|
3571
|
-
private _dialogConfig;
|
|
3572
|
-
readonly modal: ModalService;
|
|
3573
|
-
ref: ModalRef<any> | null;
|
|
3574
|
-
/** Input data from drawer - supports both input() and dialog data */
|
|
3575
|
-
readonly data: _angular_core.InputSignal<{
|
|
3576
|
-
chart?: DashboardChartItem;
|
|
3577
|
-
isDialog?: boolean;
|
|
3578
|
-
isNew?: boolean;
|
|
3579
|
-
chartType?: ChartTypeConfig;
|
|
3580
|
-
defaultSize?: {
|
|
3581
|
-
cols: number;
|
|
3582
|
-
rows: number;
|
|
3583
|
-
};
|
|
3584
|
-
} | null>;
|
|
3585
|
-
/** Whether chart type is pre-selected (hides type selection) */
|
|
3586
|
-
readonly hasPreselectedType: _angular_core.Signal<boolean>;
|
|
3587
|
-
/** Tab options with translation keys */
|
|
3588
|
-
readonly tabOptions: _angular_core.WritableSignal<{
|
|
3589
|
-
label: string;
|
|
3590
|
-
value: string;
|
|
3591
|
-
icon: string;
|
|
3592
|
-
}[]>;
|
|
3593
|
-
/** Active tab */
|
|
3594
|
-
readonly activeTab: _angular_core.WritableSignal<string>;
|
|
3595
|
-
/** Chart configuration being edited - from service */
|
|
3596
|
-
readonly config: _angular_core.Signal<ItemConfig | null>;
|
|
3597
|
-
/** Chart type ID - from service */
|
|
3598
|
-
readonly chartTypeId: _angular_core.Signal<string>;
|
|
3599
|
-
/** Selected chart type info */
|
|
3600
|
-
readonly selectedChartType: _angular_core.WritableSignal<ChartTypeConfig | null>;
|
|
3601
|
-
/** Is this a dialog item */
|
|
3602
|
-
readonly isDialog: _angular_core.Signal<any>;
|
|
3603
|
-
/** Is this a new item */
|
|
3604
|
-
readonly isNew: _angular_core.Signal<any>;
|
|
3605
|
-
/** Saving state */
|
|
3606
|
-
readonly saving: _angular_core.WritableSignal<boolean>;
|
|
3607
|
-
/** Validation state */
|
|
3608
|
-
readonly isValid: _angular_core.Signal<boolean>;
|
|
3609
|
-
/** Initialize from dialog data effect */
|
|
3610
|
-
private _initEffect;
|
|
3611
|
-
ngOnInit(): void;
|
|
3612
|
-
save(): void;
|
|
3613
|
-
cancel(): void;
|
|
3614
|
-
/** Update config from child components */
|
|
3615
|
-
onConfigUpdate(partialConfig: Partial<ItemConfig>): void;
|
|
3616
|
-
/** Update service config */
|
|
3617
|
-
onServiceConfigUpdate(partialConfig: Partial<ItemConfig['serviceConfig']>): void;
|
|
3618
|
-
/** Update client config */
|
|
3619
|
-
onClientConfigUpdate(partialConfig: Partial<ItemConfig['clientConfig']>): void;
|
|
3620
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ManageItem, never>;
|
|
3621
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageItem, "mt-manage-item", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3622
|
-
}
|
|
3623
|
-
|
|
3624
|
-
/**
|
|
3625
|
-
* General Settings Component
|
|
3626
|
-
*
|
|
3627
|
-
* Handles general chart configuration:
|
|
3628
|
-
* - Chart type selection (visual grid)
|
|
3629
|
-
* - Title (English & Arabic)
|
|
3630
|
-
* - Component name
|
|
3631
|
-
*/
|
|
3632
|
-
declare class GeneralSettings {
|
|
3633
|
-
private transloco;
|
|
3634
|
-
/** Current configuration */
|
|
3635
|
-
readonly config: _angular_core.InputSignal<ItemConfig | null>;
|
|
3636
|
-
/** Is dialog item (hides chart type selection) */
|
|
3637
|
-
readonly isDialog: _angular_core.InputSignal<boolean>;
|
|
3638
|
-
/** Whether chart type is pre-selected (hides chart type selection) */
|
|
3639
|
-
readonly hasPreselectedType: _angular_core.InputSignal<boolean>;
|
|
3640
|
-
/** Emit config changes */
|
|
3641
|
-
readonly configChange: _angular_core.OutputEmitterRef<Partial<ItemConfig>>;
|
|
3642
|
-
/** Emit chart type selection */
|
|
3643
|
-
readonly chartTypeChange: _angular_core.OutputEmitterRef<ChartTypeConfig>;
|
|
3644
|
-
/** All available chart types */
|
|
3645
|
-
readonly chartTypes: _angular_core.WritableSignal<ChartTypeConfig[]>;
|
|
3646
|
-
/** Chart types filtered (not hidden) */
|
|
3647
|
-
readonly chartTypesFiltered: _angular_core.Signal<ChartTypeConfig[]>;
|
|
3648
|
-
/** Grouped chart types by category */
|
|
3649
|
-
readonly chartTypesByCategory: _angular_core.Signal<{
|
|
3650
|
-
card: ChartTypeConfig[];
|
|
3651
|
-
chart: ChartTypeConfig[];
|
|
3652
|
-
table: ChartTypeConfig[];
|
|
3653
|
-
special: ChartTypeConfig[];
|
|
3654
|
-
layout: ChartTypeConfig[];
|
|
3655
|
-
}>;
|
|
3656
|
-
/** Currently selected chart type */
|
|
3657
|
-
readonly selectedChartType: _angular_core.Signal<ChartTypeConfig | null | undefined>;
|
|
3658
|
-
/**
|
|
3659
|
-
* Select a chart type
|
|
3660
|
-
*/
|
|
3661
|
-
selectChartType(type: ChartTypeConfig): void;
|
|
3662
|
-
/**
|
|
3663
|
-
* Check if a chart type is selected
|
|
3664
|
-
*/
|
|
3665
|
-
isTypeSelected(type: ChartTypeConfig): boolean;
|
|
3666
|
-
/**
|
|
3667
|
-
* Update title field
|
|
3668
|
-
*/
|
|
3669
|
-
updateTitle(lang: 'en' | 'ar', value: string): void;
|
|
3670
|
-
/**
|
|
3671
|
-
* Update component name
|
|
3672
|
-
*/
|
|
3673
|
-
updateComponentName(value: string): void;
|
|
3674
|
-
/**
|
|
3675
|
-
* Get category label
|
|
3676
|
-
*/
|
|
3677
|
-
getCategoryLabel(category: string): string;
|
|
3678
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GeneralSettings, never>;
|
|
3679
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GeneralSettings, "mt-general-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "isDialog": { "alias": "isDialog"; "required": false; "isSignal": true; }; "hasPreselectedType": { "alias": "hasPreselectedType"; "required": false; "isSignal": true; }; }, { "configChange": "configChange"; "chartTypeChange": "chartTypeChange"; }, never, never, true, never>;
|
|
3680
|
-
}
|
|
3681
|
-
|
|
3682
|
-
/**
|
|
3683
|
-
* Selection module info for linking - includes properties for each selection
|
|
3684
|
-
*/
|
|
3685
|
-
interface SelectionModule {
|
|
3686
|
-
selectionId: number;
|
|
3687
|
-
selector: string;
|
|
3688
|
-
moduleType: string;
|
|
3689
|
-
moduleTypeName: string;
|
|
3690
|
-
moduleName: string;
|
|
3691
|
-
properties: IProperty[];
|
|
3692
|
-
}
|
|
3693
|
-
|
|
3694
|
-
/**
|
|
3695
|
-
* Chart Query Series
|
|
3696
|
-
*/
|
|
3697
|
-
interface ChartQuerySeries {
|
|
3698
|
-
key: string;
|
|
3699
|
-
color: string;
|
|
3700
|
-
valueProperty: string | null;
|
|
3701
|
-
aggregateFunction: string;
|
|
3702
|
-
groupByProperties: string[];
|
|
3703
|
-
autoStack: boolean;
|
|
3704
|
-
stackProperties: string[];
|
|
3705
|
-
autoStackByProperty: string | null;
|
|
3706
|
-
filters: ChartQuerySeriesFilter[];
|
|
3707
|
-
extraProperties: string[];
|
|
3708
|
-
formula?: string;
|
|
3709
|
-
showAdvancedSettings?: boolean;
|
|
3710
|
-
barType?: 'bar' | 'line' | 'lineAccumulated';
|
|
3711
|
-
}
|
|
3712
|
-
/**
|
|
3713
|
-
* Chart Query Series Filter
|
|
3714
|
-
*/
|
|
3715
|
-
interface ChartQuerySeriesFilter {
|
|
3716
|
-
propertyKey: string | null;
|
|
3717
|
-
value: any;
|
|
3718
|
-
operator: string;
|
|
3719
|
-
}
|
|
3720
|
-
/**
|
|
3721
|
-
* Chart Query Configuration
|
|
3722
|
-
*/
|
|
3723
|
-
interface ChartQuery {
|
|
3724
|
-
categoryProperty: string;
|
|
3725
|
-
series: ChartQuerySeries[];
|
|
3726
|
-
}
|
|
3727
|
-
|
|
3728
|
-
/** Properties grouped by module for select with [group]="true" */
|
|
3729
|
-
interface PropertyGroup {
|
|
3730
|
-
label: string;
|
|
3731
|
-
items: IProperty[];
|
|
3732
|
-
}
|
|
3733
|
-
/**
|
|
3734
|
-
* Aggregation Property Configuration
|
|
3735
|
-
*/
|
|
3736
|
-
interface AggregationProperty {
|
|
3737
|
-
propertyKey: string | null;
|
|
3738
|
-
aggregateFunction: string;
|
|
3739
|
-
alias?: string;
|
|
3740
|
-
}
|
|
3741
|
-
/**
|
|
3742
|
-
* Table Query Configuration Value
|
|
3743
|
-
*/
|
|
3744
|
-
interface TableQueryValue {
|
|
3745
|
-
selectedProperties: string[];
|
|
3746
|
-
AggregationProperties: AggregationProperty[];
|
|
3747
|
-
lookupProperty: string;
|
|
3748
|
-
PivotProperties: string[];
|
|
3749
|
-
}
|
|
3750
|
-
/**
|
|
3751
|
-
* Table Query Component
|
|
3752
|
-
*
|
|
3753
|
-
* Handles query configuration for table/dialog chart types.
|
|
3754
|
-
* Implements ControlValueAccessor for form integration.
|
|
3755
|
-
*/
|
|
3756
|
-
declare class TableQuery implements ControlValueAccessor {
|
|
3757
|
-
private fb;
|
|
3758
|
-
/** Available properties (flat) */
|
|
3759
|
-
readonly propertiesFlat: _angular_core.InputSignal<IProperty[]>;
|
|
3760
|
-
/** Properties grouped by module for grouped select */
|
|
3761
|
-
readonly propertiesGrouped: _angular_core.InputSignal<PropertyGroup[]>;
|
|
3762
|
-
/** Whether to use grouped select (when multiple modules) */
|
|
3763
|
-
readonly useGroupedSelect: _angular_core.Signal<boolean>;
|
|
3764
|
-
/** Options config for multi-select */
|
|
3765
|
-
readonly optionsConfig: _angular_core.Signal<{
|
|
3766
|
-
optionValue: string;
|
|
3767
|
-
optionLabel: string;
|
|
3768
|
-
items: IProperty[];
|
|
3769
|
-
}>;
|
|
3770
|
-
/** Aggregate function options */
|
|
3771
|
-
readonly aggregateFunctions: {
|
|
4260
|
+
declare class StackBarControlUi implements ControlValueAccessor {
|
|
4261
|
+
readonly config: _angular_core.WritableSignal<StackBarControlConfig>;
|
|
4262
|
+
readonly legendPositionYOptions: {
|
|
4263
|
+
label: string;
|
|
3772
4264
|
value: string;
|
|
4265
|
+
}[];
|
|
4266
|
+
readonly legendPositionXOptions: {
|
|
3773
4267
|
label: string;
|
|
4268
|
+
value: string;
|
|
4269
|
+
}[];
|
|
4270
|
+
readonly barTypeOptions: {
|
|
4271
|
+
label: string;
|
|
4272
|
+
value: string;
|
|
4273
|
+
}[];
|
|
4274
|
+
readonly yAxisFormatOptions: ({
|
|
4275
|
+
label: string;
|
|
4276
|
+
value: null;
|
|
4277
|
+
} | {
|
|
4278
|
+
label: string;
|
|
4279
|
+
value: string;
|
|
4280
|
+
})[];
|
|
4281
|
+
readonly fontSizeOptions: {
|
|
4282
|
+
label: string;
|
|
4283
|
+
value: number;
|
|
3774
4284
|
}[];
|
|
3775
|
-
/** Main form */
|
|
3776
|
-
readonly queryForm: FormGroup<{
|
|
3777
|
-
selectedProperties: _angular_forms.FormControl<string[] | null>;
|
|
3778
|
-
AggregationProperties: FormArray<FormGroup<any>>;
|
|
3779
|
-
lookupProperty: _angular_forms.FormControl<string | null>;
|
|
3780
|
-
PivotProperties: _angular_forms.FormControl<string[] | null>;
|
|
3781
|
-
}>;
|
|
3782
|
-
/** Disabled state */
|
|
3783
|
-
disabled: boolean;
|
|
3784
|
-
/** ControlValueAccessor callbacks */
|
|
3785
4285
|
private onChange;
|
|
3786
4286
|
private onTouched;
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
registerOnChange(fn: (value: TableQueryValue) => void): void;
|
|
4287
|
+
writeValue(value: StackBarControlConfig): void;
|
|
4288
|
+
registerOnChange(fn: (value: StackBarControlConfig) => void): void;
|
|
3790
4289
|
registerOnTouched(fn: () => void): void;
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
addAggregation(): void;
|
|
3796
|
-
removeAggregation(index: number): void;
|
|
3797
|
-
trackByIndex(index: number): number;
|
|
3798
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableQuery, never>;
|
|
3799
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableQuery, "mt-table-query", never, { "propertiesFlat": { "alias": "propertiesFlat"; "required": false; "isSignal": true; }; "propertiesGrouped": { "alias": "propertiesGrouped"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4290
|
+
updateConfig(partial: Partial<StackBarControlConfig>): void;
|
|
4291
|
+
onYAxisFormatChange(formatType: string | null): void;
|
|
4292
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StackBarControlUi, never>;
|
|
4293
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StackBarControlUi, "mt-stack-bar-control-ui", never, {}, {}, never, never, true, never>;
|
|
3800
4294
|
}
|
|
3801
4295
|
|
|
3802
|
-
/** Module properties response */
|
|
3803
|
-
interface ModuleProperties {
|
|
3804
|
-
/** Module type (e.g., "Level") */
|
|
3805
|
-
moduleName: string;
|
|
3806
|
-
/** Display name for the specific selector (e.g., "Projects" for "Level:7") */
|
|
3807
|
-
selectorName: string | null;
|
|
3808
|
-
/** Full selector (e.g., "Level:7") */
|
|
3809
|
-
selector: string;
|
|
3810
|
-
moduleId?: number;
|
|
3811
|
-
properties: IProperty[];
|
|
3812
|
-
}
|
|
3813
|
-
/**
|
|
3814
|
-
* Query component type based on chart type and component name
|
|
3815
|
-
*/
|
|
3816
|
-
type QueryComponentType = 'general' | 'table' | 'timeline' | 'timelineMultiLevel' | 'map' | 'splitter' | 'properties' | 'snapshot' | 'phaseGate' | 'repeater' | 'none';
|
|
3817
4296
|
/**
|
|
3818
|
-
*
|
|
4297
|
+
* Manage Item Component (Drawer)
|
|
3819
4298
|
*
|
|
3820
|
-
*
|
|
3821
|
-
*
|
|
3822
|
-
*
|
|
3823
|
-
* - Query configuration based on chart type (GeneralQuery, TableQuery, etc.)
|
|
4299
|
+
* Main drawer component for configuring chart/widget items.
|
|
4300
|
+
* Uses tabs to organize different configuration sections.
|
|
4301
|
+
* Provides ManageItemService for state sharing between child components.
|
|
3824
4302
|
*/
|
|
3825
|
-
declare class
|
|
3826
|
-
private
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
/**
|
|
3832
|
-
readonly
|
|
3833
|
-
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
/**
|
|
3847
|
-
* Selection modules for source link configuration
|
|
3848
|
-
* Built from selections with their loaded module info
|
|
3849
|
-
*/
|
|
3850
|
-
readonly selectionModules: _angular_core.Signal<SelectionModule[]>;
|
|
3851
|
-
/** Query component type based on chart type and component name */
|
|
3852
|
-
readonly queryComponentType: _angular_core.Signal<QueryComponentType>;
|
|
3853
|
-
/** Loading states */
|
|
3854
|
-
readonly loadingProperties: _angular_core.WritableSignal<boolean>;
|
|
3855
|
-
/** Tab state: 'selection' or 'customApi' */
|
|
3856
|
-
readonly activeTab: _angular_core.WritableSignal<"selection" | "customApi">;
|
|
3857
|
-
/** Tab options for display */
|
|
3858
|
-
readonly tabOptions: {
|
|
3859
|
-
id: string;
|
|
4303
|
+
declare class ManageItem implements OnInit {
|
|
4304
|
+
private _dashboardService;
|
|
4305
|
+
private _manageItemService;
|
|
4306
|
+
private _dialogConfig;
|
|
4307
|
+
readonly modal: ModalService;
|
|
4308
|
+
ref: ModalRef<any> | null;
|
|
4309
|
+
/** Input data from drawer - supports both input() and dialog data */
|
|
4310
|
+
readonly data: _angular_core.InputSignal<{
|
|
4311
|
+
chart?: DashboardChartItem;
|
|
4312
|
+
isDialog?: boolean;
|
|
4313
|
+
isNew?: boolean;
|
|
4314
|
+
chartType?: ChartTypeConfig;
|
|
4315
|
+
defaultSize?: {
|
|
4316
|
+
cols: number;
|
|
4317
|
+
rows: number;
|
|
4318
|
+
};
|
|
4319
|
+
} | null>;
|
|
4320
|
+
/** Whether chart type is pre-selected (hides type selection) */
|
|
4321
|
+
readonly hasPreselectedType: _angular_core.Signal<boolean>;
|
|
4322
|
+
/** Tab options with translation keys */
|
|
4323
|
+
readonly tabOptions: _angular_core.WritableSignal<{
|
|
3860
4324
|
label: string;
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
readonly customApi: _angular_core.WritableSignal<CustomApi | null>;
|
|
3864
|
-
/** Internal selections state */
|
|
3865
|
-
readonly selections: _angular_core.WritableSignal<ISelection[]>;
|
|
3866
|
-
readonly sourceLinks: _angular_core.WritableSignal<SourceLink[]>;
|
|
3867
|
-
readonly query: _angular_core.WritableSignal<any>;
|
|
3868
|
-
readonly isNormalized: _angular_core.WritableSignal<boolean>;
|
|
3869
|
-
readonly groupByMultiple: _angular_core.WritableSignal<string[]>;
|
|
3870
|
-
/** Repeater dashboard selection */
|
|
3871
|
-
readonly repeaterDashboardId: _angular_core.WritableSignal<number | null>;
|
|
3872
|
-
readonly availableDashboards: _angular_core.WritableSignal<{
|
|
3873
|
-
id: number;
|
|
3874
|
-
name: string;
|
|
4325
|
+
value: string;
|
|
4326
|
+
icon: string;
|
|
3875
4327
|
}[]>;
|
|
3876
|
-
/**
|
|
3877
|
-
readonly
|
|
3878
|
-
/**
|
|
3879
|
-
readonly
|
|
3880
|
-
/**
|
|
3881
|
-
readonly
|
|
3882
|
-
/**
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
/**
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
|
|
3932
|
-
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
onPropertiesQueryChange(query: any): void;
|
|
3940
|
-
/**
|
|
3941
|
-
* Handle snapshot query change
|
|
3942
|
-
*/
|
|
3943
|
-
onSnapshotQueryChange(query: any): void;
|
|
3944
|
-
/**
|
|
3945
|
-
* Handle groupByMultiple change
|
|
3946
|
-
*/
|
|
3947
|
-
onGroupByMultipleChange(values: string[]): void;
|
|
4328
|
+
/** Active tab */
|
|
4329
|
+
readonly activeTab: _angular_core.WritableSignal<string>;
|
|
4330
|
+
/** Chart configuration being edited - from service */
|
|
4331
|
+
readonly config: _angular_core.Signal<ItemConfig | null>;
|
|
4332
|
+
/** Chart type ID - from service */
|
|
4333
|
+
readonly chartTypeId: _angular_core.Signal<string>;
|
|
4334
|
+
/** Selected chart type info */
|
|
4335
|
+
readonly selectedChartType: _angular_core.WritableSignal<ChartTypeConfig | null>;
|
|
4336
|
+
/** Is this a dialog item */
|
|
4337
|
+
readonly isDialog: _angular_core.Signal<any>;
|
|
4338
|
+
/** Is this a new item */
|
|
4339
|
+
readonly isNew: _angular_core.Signal<any>;
|
|
4340
|
+
/** Saving state */
|
|
4341
|
+
readonly saving: _angular_core.WritableSignal<boolean>;
|
|
4342
|
+
/** Validation state */
|
|
4343
|
+
readonly isValid: _angular_core.Signal<boolean>;
|
|
4344
|
+
ngOnInit(): void;
|
|
4345
|
+
save(): void;
|
|
4346
|
+
cancel(): void;
|
|
4347
|
+
/** Update config from child components */
|
|
4348
|
+
onConfigUpdate(partialConfig: Partial<ItemConfig>): void;
|
|
4349
|
+
/** Update service config */
|
|
4350
|
+
onServiceConfigUpdate(partialConfig: Partial<ItemConfig['serviceConfig']>): void;
|
|
4351
|
+
/** Update client config */
|
|
4352
|
+
onClientConfigUpdate(partialConfig: Partial<ItemConfig['clientConfig']>): void;
|
|
4353
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ManageItem, never>;
|
|
4354
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ManageItem, "mt-manage-item", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4357
|
+
/**
|
|
4358
|
+
* General Settings Component
|
|
4359
|
+
*
|
|
4360
|
+
* Handles general chart configuration:
|
|
4361
|
+
* - Chart type selection (visual grid)
|
|
4362
|
+
* - Title (English & Arabic)
|
|
4363
|
+
* - Component name
|
|
4364
|
+
*/
|
|
4365
|
+
declare class GeneralSettings {
|
|
4366
|
+
private transloco;
|
|
4367
|
+
/** Current configuration */
|
|
4368
|
+
readonly config: _angular_core.InputSignal<ItemConfig | null>;
|
|
4369
|
+
/** Is dialog item (hides chart type selection) */
|
|
4370
|
+
readonly isDialog: _angular_core.InputSignal<boolean>;
|
|
4371
|
+
/** Whether chart type is pre-selected (hides chart type selection) */
|
|
4372
|
+
readonly hasPreselectedType: _angular_core.InputSignal<boolean>;
|
|
4373
|
+
/** Emit config changes */
|
|
4374
|
+
readonly configChange: _angular_core.OutputEmitterRef<Partial<ItemConfig>>;
|
|
4375
|
+
/** Emit chart type selection */
|
|
4376
|
+
readonly chartTypeChange: _angular_core.OutputEmitterRef<ChartTypeConfig>;
|
|
4377
|
+
/** All available chart types */
|
|
4378
|
+
readonly chartTypes: _angular_core.WritableSignal<ChartTypeConfig[]>;
|
|
4379
|
+
/** Chart types filtered (not hidden) */
|
|
4380
|
+
readonly chartTypesFiltered: _angular_core.Signal<ChartTypeConfig[]>;
|
|
4381
|
+
/** Grouped chart types by category */
|
|
4382
|
+
readonly chartTypesByCategory: _angular_core.Signal<{
|
|
4383
|
+
card: ChartTypeConfig[];
|
|
4384
|
+
chart: ChartTypeConfig[];
|
|
4385
|
+
table: ChartTypeConfig[];
|
|
4386
|
+
special: ChartTypeConfig[];
|
|
4387
|
+
layout: ChartTypeConfig[];
|
|
4388
|
+
}>;
|
|
4389
|
+
/** Currently selected chart type */
|
|
4390
|
+
readonly selectedChartType: _angular_core.Signal<ChartTypeConfig | null | undefined>;
|
|
3948
4391
|
/**
|
|
3949
|
-
*
|
|
4392
|
+
* Select a chart type
|
|
3950
4393
|
*/
|
|
3951
|
-
|
|
4394
|
+
selectChartType(type: ChartTypeConfig): void;
|
|
3952
4395
|
/**
|
|
3953
|
-
*
|
|
4396
|
+
* Check if a chart type is selected
|
|
3954
4397
|
*/
|
|
3955
|
-
|
|
4398
|
+
isTypeSelected(type: ChartTypeConfig): boolean;
|
|
3956
4399
|
/**
|
|
3957
|
-
*
|
|
4400
|
+
* Update title field
|
|
3958
4401
|
*/
|
|
3959
|
-
|
|
4402
|
+
updateTitle(lang: 'en' | 'ar', value: string): void;
|
|
3960
4403
|
/**
|
|
3961
|
-
*
|
|
4404
|
+
* Update component name
|
|
3962
4405
|
*/
|
|
3963
|
-
|
|
4406
|
+
updateComponentName(value: string): void;
|
|
3964
4407
|
/**
|
|
3965
|
-
* Get
|
|
4408
|
+
* Get category label
|
|
3966
4409
|
*/
|
|
3967
|
-
|
|
3968
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
3969
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<
|
|
4410
|
+
getCategoryLabel(category: string): string;
|
|
4411
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GeneralSettings, never>;
|
|
4412
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<GeneralSettings, "mt-general-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "isDialog": { "alias": "isDialog"; "required": false; "isSignal": true; }; "hasPreselectedType": { "alias": "hasPreselectedType"; "required": false; "isSignal": true; }; }, { "configChange": "configChange"; "chartTypeChange": "chartTypeChange"; }, never, never, true, never>;
|
|
3970
4413
|
}
|
|
3971
4414
|
|
|
3972
|
-
/**
|
|
3973
|
-
|
|
3974
|
-
|
|
3975
|
-
|
|
3976
|
-
|
|
3977
|
-
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
en: string;
|
|
3983
|
-
ar: string;
|
|
3984
|
-
}
|
|
3985
|
-
/** Card style configuration */
|
|
3986
|
-
interface CardStyleConfig {
|
|
3987
|
-
borderRadius?: number;
|
|
3988
|
-
backgroundColor?: string;
|
|
3989
|
-
shadows?: ShadowConfig[];
|
|
3990
|
-
}
|
|
3991
|
-
/** Header card configuration */
|
|
3992
|
-
interface HeaderCardConfig {
|
|
3993
|
-
isHeaderCentered?: boolean;
|
|
3994
|
-
isHeaderHidden?: boolean;
|
|
3995
|
-
headerColor?: string;
|
|
3996
|
-
headerFontSize?: number;
|
|
3997
|
-
}
|
|
3998
|
-
/** Label center configuration */
|
|
3999
|
-
interface LabelCenterConfig {
|
|
4000
|
-
hide?: boolean;
|
|
4001
|
-
text?: {
|
|
4002
|
-
en?: string;
|
|
4003
|
-
ar?: string;
|
|
4004
|
-
};
|
|
4005
|
-
}
|
|
4006
|
-
/** Sort data bars configuration */
|
|
4007
|
-
interface SortDataBarsConfig {
|
|
4008
|
-
enable?: boolean;
|
|
4009
|
-
sortBy?: string;
|
|
4010
|
-
order?: 'asc' | 'desc' | string;
|
|
4011
|
-
direction?: 'asc' | 'desc' | string;
|
|
4012
|
-
}
|
|
4013
|
-
/** Card info configuration */
|
|
4014
|
-
interface CardInfoConfig {
|
|
4015
|
-
show?: boolean;
|
|
4016
|
-
value?: any;
|
|
4017
|
-
type?: string;
|
|
4018
|
-
}
|
|
4019
|
-
/** Format configuration */
|
|
4020
|
-
interface FormatConfig {
|
|
4021
|
-
type?: string | null;
|
|
4022
|
-
showCurrency?: boolean;
|
|
4023
|
-
handleLang?: boolean;
|
|
4024
|
-
customText?: string | null;
|
|
4025
|
-
customDateFormat?: string | null;
|
|
4026
|
-
showCurrencyTooltip?: boolean;
|
|
4027
|
-
hideSuffixes?: boolean;
|
|
4028
|
-
}
|
|
4029
|
-
/** Table format configuration */
|
|
4030
|
-
interface TableFormatConfig {
|
|
4031
|
-
thTextColor?: string | null;
|
|
4032
|
-
thBackgroundColor?: string | null;
|
|
4033
|
-
tdTextColor?: string | null;
|
|
4034
|
-
groupBackgroundColor?: string | null;
|
|
4035
|
-
groupTextColor?: string | null;
|
|
4036
|
-
thFontBold?: boolean;
|
|
4037
|
-
tdFontBold?: boolean;
|
|
4038
|
-
thFontSize?: number | null;
|
|
4039
|
-
tdFontSize?: number | null;
|
|
4040
|
-
hideTableSubheader?: boolean;
|
|
4041
|
-
disableCurrencyFormat?: boolean;
|
|
4042
|
-
showPercentageAsProgressBar?: boolean;
|
|
4043
|
-
showPercentageStatus?: boolean;
|
|
4044
|
-
hiddenColumns?: string[];
|
|
4045
|
-
sortConfig?: {
|
|
4046
|
-
column: string;
|
|
4047
|
-
direction: 'asc' | 'desc';
|
|
4048
|
-
};
|
|
4415
|
+
/**
|
|
4416
|
+
* Selection module info for linking - includes properties for each selection
|
|
4417
|
+
*/
|
|
4418
|
+
interface SelectionModule {
|
|
4419
|
+
selectionId: number;
|
|
4420
|
+
selector: string;
|
|
4421
|
+
moduleType: string;
|
|
4422
|
+
moduleTypeName: string;
|
|
4423
|
+
moduleName: string;
|
|
4424
|
+
properties: IProperty[];
|
|
4049
4425
|
}
|
|
4050
|
-
|
|
4051
|
-
|
|
4426
|
+
|
|
4427
|
+
/**
|
|
4428
|
+
* Chart Query Series
|
|
4429
|
+
*/
|
|
4430
|
+
interface ChartQuerySeries {
|
|
4431
|
+
key: string;
|
|
4052
4432
|
color: string;
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
interface RingGaugeConfig {
|
|
4065
|
-
centerProperty?: string;
|
|
4066
|
-
statusProperty?: string;
|
|
4067
|
-
hiddenProperties?: string[];
|
|
4068
|
-
}
|
|
4069
|
-
/** Order configuration */
|
|
4070
|
-
interface OrderConfig {
|
|
4071
|
-
order?: string[];
|
|
4072
|
-
operation?: string;
|
|
4073
|
-
orderBy?: string;
|
|
4074
|
-
}
|
|
4075
|
-
/** Card list configuration */
|
|
4076
|
-
interface CardListConfig {
|
|
4077
|
-
hideProperties?: string[];
|
|
4078
|
-
}
|
|
4079
|
-
/** Property translation entry */
|
|
4080
|
-
interface PropertyTranslation {
|
|
4081
|
-
ar: string;
|
|
4082
|
-
en: string;
|
|
4433
|
+
valueProperty: string | null;
|
|
4434
|
+
aggregateFunction: string;
|
|
4435
|
+
groupByProperties: string[];
|
|
4436
|
+
autoStack: boolean;
|
|
4437
|
+
stackProperties: string[];
|
|
4438
|
+
autoStackByProperty: string | null;
|
|
4439
|
+
filters: ChartQuerySeriesFilter[];
|
|
4440
|
+
extraProperties: string[];
|
|
4441
|
+
formula?: string;
|
|
4442
|
+
showAdvancedSettings?: boolean;
|
|
4443
|
+
barType?: 'bar' | 'line' | 'lineAccumulated';
|
|
4083
4444
|
}
|
|
4084
|
-
/**
|
|
4085
|
-
|
|
4086
|
-
|
|
4445
|
+
/**
|
|
4446
|
+
* Chart Query Series Filter
|
|
4447
|
+
*/
|
|
4448
|
+
interface ChartQuerySeriesFilter {
|
|
4449
|
+
propertyKey: string | null;
|
|
4450
|
+
value: any;
|
|
4451
|
+
operator: string;
|
|
4087
4452
|
}
|
|
4088
|
-
/**
|
|
4089
|
-
|
|
4090
|
-
|
|
4453
|
+
/**
|
|
4454
|
+
* Chart Query Configuration
|
|
4455
|
+
*/
|
|
4456
|
+
interface ChartQuery {
|
|
4457
|
+
categoryProperty: string;
|
|
4458
|
+
series: ChartQuerySeries[];
|
|
4091
4459
|
}
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4460
|
+
|
|
4461
|
+
/** Properties grouped by module for select with [group]="true" */
|
|
4462
|
+
interface PropertyGroup {
|
|
4463
|
+
label: string;
|
|
4464
|
+
items: IProperty[];
|
|
4095
4465
|
}
|
|
4096
|
-
/**
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4466
|
+
/**
|
|
4467
|
+
* Aggregation Property Configuration
|
|
4468
|
+
*/
|
|
4469
|
+
interface AggregationProperty {
|
|
4470
|
+
propertyKey: string | null;
|
|
4471
|
+
aggregateFunction: string;
|
|
4472
|
+
alias?: string;
|
|
4102
4473
|
}
|
|
4103
|
-
/**
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4474
|
+
/**
|
|
4475
|
+
* Table Query Configuration Value
|
|
4476
|
+
*/
|
|
4477
|
+
interface TableQueryValue {
|
|
4478
|
+
selectedProperties: string[];
|
|
4479
|
+
AggregationProperties: AggregationProperty[];
|
|
4480
|
+
lookupProperty: string;
|
|
4481
|
+
PivotProperties: string[];
|
|
4107
4482
|
}
|
|
4108
|
-
/**
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
4483
|
+
/**
|
|
4484
|
+
* Table Query Component
|
|
4485
|
+
*
|
|
4486
|
+
* Handles query configuration for table/dialog chart types.
|
|
4487
|
+
* Implements ControlValueAccessor for form integration.
|
|
4488
|
+
*/
|
|
4489
|
+
declare class TableQuery implements ControlValueAccessor {
|
|
4490
|
+
private fb;
|
|
4491
|
+
/** Available properties (flat) */
|
|
4492
|
+
readonly propertiesFlat: _angular_core.InputSignal<IProperty[]>;
|
|
4493
|
+
/** Properties grouped by module for grouped select */
|
|
4494
|
+
readonly propertiesGrouped: _angular_core.InputSignal<PropertyGroup[]>;
|
|
4495
|
+
/** Whether to use grouped select (when multiple modules) */
|
|
4496
|
+
readonly useGroupedSelect: _angular_core.Signal<boolean>;
|
|
4497
|
+
/** Options config for multi-select */
|
|
4498
|
+
readonly optionsConfig: _angular_core.Signal<{
|
|
4499
|
+
optionValue: string;
|
|
4500
|
+
optionLabel: string;
|
|
4501
|
+
items: IProperty[];
|
|
4502
|
+
}>;
|
|
4503
|
+
/** Aggregate function options */
|
|
4504
|
+
readonly aggregateFunctions: {
|
|
4505
|
+
value: string;
|
|
4506
|
+
label: string;
|
|
4507
|
+
}[];
|
|
4508
|
+
/** Main form */
|
|
4509
|
+
readonly queryForm: FormGroup<{
|
|
4510
|
+
selectedProperties: _angular_forms.FormControl<string[] | null>;
|
|
4511
|
+
AggregationProperties: FormArray<FormGroup<any>>;
|
|
4512
|
+
lookupProperty: _angular_forms.FormControl<string | null>;
|
|
4513
|
+
PivotProperties: _angular_forms.FormControl<string[] | null>;
|
|
4514
|
+
}>;
|
|
4515
|
+
/** Disabled state */
|
|
4516
|
+
disabled: boolean;
|
|
4517
|
+
/** ControlValueAccessor callbacks */
|
|
4518
|
+
private onChange;
|
|
4519
|
+
private onTouched;
|
|
4520
|
+
constructor();
|
|
4521
|
+
writeValue(value: TableQueryValue): void;
|
|
4522
|
+
registerOnChange(fn: (value: TableQueryValue) => void): void;
|
|
4523
|
+
registerOnTouched(fn: () => void): void;
|
|
4524
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4525
|
+
validate(): ValidationErrors | null;
|
|
4526
|
+
get aggregationArray(): FormArray;
|
|
4527
|
+
createAggregationFormGroup(agg?: Partial<AggregationProperty>): FormGroup;
|
|
4528
|
+
addAggregation(): void;
|
|
4529
|
+
removeAggregation(index: number): void;
|
|
4530
|
+
trackByIndex(index: number): number;
|
|
4531
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableQuery, never>;
|
|
4532
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableQuery, "mt-table-query", never, { "propertiesFlat": { "alias": "propertiesFlat"; "required": false; "isSignal": true; }; "propertiesGrouped": { "alias": "propertiesGrouped"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4114
4533
|
}
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4534
|
+
|
|
4535
|
+
/** Module properties response */
|
|
4536
|
+
interface ModuleProperties {
|
|
4537
|
+
/** Module type (e.g., "Level") */
|
|
4538
|
+
moduleName: string;
|
|
4539
|
+
/** Display name for the specific selector (e.g., "Projects" for "Level:7") */
|
|
4540
|
+
selectorName: string | null;
|
|
4541
|
+
/** Full selector (e.g., "Level:7") */
|
|
4542
|
+
selector: string;
|
|
4543
|
+
moduleId?: number;
|
|
4544
|
+
properties: IProperty[];
|
|
4119
4545
|
}
|
|
4120
4546
|
/**
|
|
4121
|
-
*
|
|
4547
|
+
* Query component type based on chart type and component name
|
|
4548
|
+
*/
|
|
4549
|
+
type QueryComponentType = 'general' | 'table' | 'timeline' | 'timelineMultiLevel' | 'map' | 'splitter' | 'properties' | 'snapshot' | 'phaseGate' | 'repeater' | 'none';
|
|
4550
|
+
/**
|
|
4551
|
+
* Data Source Settings Component
|
|
4122
4552
|
*
|
|
4123
|
-
* Comprehensive
|
|
4124
|
-
*
|
|
4553
|
+
* Comprehensive data source configuration:
|
|
4554
|
+
* - Module/Data source selection via SelectionConfiguration
|
|
4555
|
+
* - Source links for multiple selections via SourceLinkConfiguration
|
|
4556
|
+
* - Query configuration based on chart type (GeneralQuery, TableQuery, etc.)
|
|
4125
4557
|
*/
|
|
4126
|
-
declare class
|
|
4558
|
+
declare class DataSourceSettings {
|
|
4559
|
+
private dashboardService;
|
|
4127
4560
|
/** Current configuration */
|
|
4128
4561
|
readonly config: _angular_core.InputSignal<ItemConfig | null>;
|
|
4129
4562
|
/** Selected chart type */
|
|
4130
4563
|
readonly chartType: _angular_core.InputSignal<ChartTypeConfig | null>;
|
|
4131
|
-
/**
|
|
4132
|
-
readonly
|
|
4133
|
-
/**
|
|
4134
|
-
readonly
|
|
4135
|
-
/**
|
|
4136
|
-
readonly
|
|
4137
|
-
/** Emit client config changes */
|
|
4138
|
-
readonly clientConfigChange: _angular_core.OutputEmitterRef<Partial<ClientConfig>>;
|
|
4139
|
-
/** Color condition expansion state */
|
|
4140
|
-
readonly colorConditionExpanded: _angular_core.WritableSignal<Record<number, boolean>>;
|
|
4141
|
-
/** Property translations paste state */
|
|
4142
|
-
readonly showPropertyTranslationsPaste: _angular_core.WritableSignal<boolean>;
|
|
4143
|
-
readonly propertyTranslationsPasteText: _angular_core.WritableSignal<string>;
|
|
4144
|
-
readonly propertyTranslationsPasteError: _angular_core.WritableSignal<string>;
|
|
4145
|
-
/** Property colors paste state */
|
|
4146
|
-
readonly showPropertyColorsPaste: _angular_core.WritableSignal<boolean>;
|
|
4147
|
-
readonly propertyColorsPasteText: _angular_core.WritableSignal<string>;
|
|
4148
|
-
readonly propertyColorsPasteError: _angular_core.WritableSignal<string>;
|
|
4564
|
+
/** Emit service config changes */
|
|
4565
|
+
readonly serviceConfigChange: _angular_core.OutputEmitterRef<Partial<ServiceConfig>>;
|
|
4566
|
+
/** Properties grouped by module */
|
|
4567
|
+
readonly modulesProperties: _angular_core.WritableSignal<ModuleProperties[]>;
|
|
4568
|
+
/** Flattened properties list with grouping info */
|
|
4569
|
+
readonly propertiesFlat: _angular_core.Signal<IPropertyWithGroup[]>;
|
|
4149
4570
|
/**
|
|
4150
|
-
*
|
|
4151
|
-
*
|
|
4571
|
+
* Properties grouped for select field with [group]="true"
|
|
4572
|
+
* Structure: [{ label: 'Projects', items: [{ name, key }, ...] }, ...]
|
|
4573
|
+
* Uses selectorName for display (e.g., "Projects" instead of "Level")
|
|
4152
4574
|
*/
|
|
4153
|
-
|
|
4154
|
-
/** Computed fields to show based on chart type */
|
|
4155
|
-
readonly fieldsToShow: _angular_core.Signal<string>;
|
|
4156
|
-
/** Check if a field should be shown */
|
|
4157
|
-
shouldShowField(fieldName: string): boolean;
|
|
4158
|
-
/** Position options */
|
|
4159
|
-
readonly positionOptions: {
|
|
4160
|
-
label: string;
|
|
4161
|
-
value: string;
|
|
4162
|
-
}[];
|
|
4163
|
-
/** Legend position options */
|
|
4164
|
-
readonly legendPositionOptions: {
|
|
4165
|
-
label: string;
|
|
4166
|
-
value: string;
|
|
4167
|
-
}[];
|
|
4168
|
-
/** Legend icon type options */
|
|
4169
|
-
readonly legendIconOptions: {
|
|
4170
|
-
label: string;
|
|
4171
|
-
value: string;
|
|
4172
|
-
}[];
|
|
4173
|
-
/** Label position options */
|
|
4174
|
-
readonly labelPositionOptions: {
|
|
4175
|
-
label: string;
|
|
4176
|
-
value: string;
|
|
4177
|
-
}[];
|
|
4178
|
-
/** Map options */
|
|
4179
|
-
readonly mapOptions: {
|
|
4180
|
-
label: string;
|
|
4181
|
-
value: string;
|
|
4182
|
-
}[];
|
|
4183
|
-
/** Order type options */
|
|
4184
|
-
readonly orderTypeOptions: {
|
|
4185
|
-
label: string;
|
|
4186
|
-
value: string;
|
|
4187
|
-
}[];
|
|
4188
|
-
/** Order operation options */
|
|
4189
|
-
readonly orderOperationOptions: {
|
|
4190
|
-
label: string;
|
|
4191
|
-
value: string;
|
|
4192
|
-
}[];
|
|
4193
|
-
/** Border options for props config */
|
|
4194
|
-
readonly borderOptions: {
|
|
4195
|
-
label: string;
|
|
4196
|
-
value: string;
|
|
4197
|
-
}[];
|
|
4198
|
-
/** Color condition type options */
|
|
4199
|
-
readonly colorConditionTypeOptions: {
|
|
4200
|
-
label: string;
|
|
4201
|
-
value: string;
|
|
4202
|
-
}[];
|
|
4203
|
-
/** Format type options */
|
|
4204
|
-
readonly formatTypeOptions: ({
|
|
4205
|
-
label: string;
|
|
4206
|
-
value: null;
|
|
4207
|
-
} | {
|
|
4208
|
-
label: string;
|
|
4209
|
-
value: string;
|
|
4210
|
-
})[];
|
|
4211
|
-
/** Format X-Axis type options */
|
|
4212
|
-
readonly formatXAxisTypeOptions: ({
|
|
4213
|
-
label: string;
|
|
4214
|
-
value: null;
|
|
4215
|
-
} | {
|
|
4575
|
+
readonly propertiesGrouped: _angular_core.Signal<{
|
|
4216
4576
|
label: string;
|
|
4217
|
-
|
|
4218
|
-
})[];
|
|
4219
|
-
/** Default color palette */
|
|
4220
|
-
readonly defaultColorPalette: string[];
|
|
4221
|
-
/** Current style config */
|
|
4222
|
-
readonly styleConfig: _angular_core.Signal<StyleConfig>;
|
|
4223
|
-
/** Current config as type */
|
|
4224
|
-
readonly configAsType: _angular_core.Signal<{
|
|
4225
|
-
[key: string]: any;
|
|
4226
|
-
icon?: string;
|
|
4227
|
-
breadcrumb?: any[];
|
|
4228
|
-
}>;
|
|
4229
|
-
/** Current card info */
|
|
4230
|
-
readonly cardInfo: _angular_core.Signal<CardInfoConfig>;
|
|
4231
|
-
/** Current header card config */
|
|
4232
|
-
readonly headerCardConfig: _angular_core.Signal<HeaderCardConfig>;
|
|
4233
|
-
/** Current card style config */
|
|
4234
|
-
readonly cardStyleConfig: _angular_core.Signal<CardStyleConfig>;
|
|
4235
|
-
/** Current label config */
|
|
4236
|
-
readonly labelConfig: _angular_core.Signal<{
|
|
4237
|
-
show?: boolean;
|
|
4238
|
-
showTotalInTop?: boolean;
|
|
4239
|
-
position?: string;
|
|
4240
|
-
}>;
|
|
4241
|
-
/** Current legend config */
|
|
4242
|
-
readonly legendConfig: _angular_core.Signal<{
|
|
4243
|
-
show?: boolean;
|
|
4244
|
-
position?: string;
|
|
4245
|
-
iconType?: string;
|
|
4246
|
-
}>;
|
|
4247
|
-
/** Current label center config */
|
|
4248
|
-
readonly labelCenterConfig: _angular_core.Signal<LabelCenterConfig>;
|
|
4249
|
-
/** Current sort data bars config */
|
|
4250
|
-
readonly sortDataBarsConfig: _angular_core.Signal<SortDataBarsConfig>;
|
|
4251
|
-
/** Current override labels */
|
|
4252
|
-
readonly overrideLabels: _angular_core.Signal<OverrideLabel[]>;
|
|
4253
|
-
/** Current default colors */
|
|
4254
|
-
readonly defaultColors: _angular_core.Signal<string[]>;
|
|
4255
|
-
/** Current order config */
|
|
4256
|
-
readonly orderConfig: _angular_core.Signal<any>;
|
|
4257
|
-
/** Current format config */
|
|
4258
|
-
readonly formatConfig: _angular_core.Signal<FormatConfig>;
|
|
4259
|
-
/** Current table format config */
|
|
4260
|
-
readonly tableFormatConfig: _angular_core.Signal<TableFormatConfig>;
|
|
4261
|
-
/** Current color by condition */
|
|
4262
|
-
readonly colorByCondition: _angular_core.Signal<ColorConditionsByIndex>;
|
|
4263
|
-
/** Current ring gauge config */
|
|
4264
|
-
readonly ringGaugeConfig: _angular_core.Signal<RingGaugeConfig>;
|
|
4265
|
-
/** Current card list config */
|
|
4266
|
-
readonly cardListConfig: _angular_core.Signal<CardListConfig>;
|
|
4267
|
-
/** Props config as index */
|
|
4268
|
-
readonly propsConfigAsIndex: _angular_core.Signal<PropsConfigAsIndexItem[]>;
|
|
4269
|
-
/** Property translations map */
|
|
4270
|
-
readonly propertyTranslations: _angular_core.Signal<PropertyTranslationsMap>;
|
|
4271
|
-
/** Property colors map */
|
|
4272
|
-
readonly propertyColors: _angular_core.Signal<PropertyColorsMap>;
|
|
4273
|
-
/** Format X-Axis config */
|
|
4274
|
-
readonly formatXAxisConfig: _angular_core.Signal<FormatXAxisConfig>;
|
|
4275
|
-
/** Table columns config (extra column from lookup) */
|
|
4276
|
-
readonly tableColumnsConfig: _angular_core.Signal<ExtraColumnFromLookupConfig>;
|
|
4277
|
-
/** Timeline header colors config (single object for old format) */
|
|
4278
|
-
readonly timelineHeaderColorsSingle: _angular_core.Signal<TimelineHeaderSingleConfig>;
|
|
4279
|
-
/** Toggle association */
|
|
4280
|
-
readonly toggleAssociation: _angular_core.Signal<boolean>;
|
|
4281
|
-
/** Selected properties resolved from input or config */
|
|
4282
|
-
readonly resolvedSelectedProperties: _angular_core.Signal<any[]>;
|
|
4283
|
-
/** Available properties resolved from input or selected properties */
|
|
4284
|
-
readonly resolvedAvailableProperties: _angular_core.Signal<any[]>;
|
|
4285
|
-
/** Available properties as options */
|
|
4286
|
-
readonly propertyOptions: _angular_core.Signal<{
|
|
4287
|
-
label: any;
|
|
4288
|
-
value: any;
|
|
4289
|
-
}[]>;
|
|
4290
|
-
/** Available translation options (exclude used) */
|
|
4291
|
-
readonly availableTranslationOptions: _angular_core.Signal<{
|
|
4292
|
-
label: any;
|
|
4293
|
-
value: any;
|
|
4294
|
-
}[]>;
|
|
4295
|
-
/** Available color options (exclude used) */
|
|
4296
|
-
readonly availableColorOptions: _angular_core.Signal<{
|
|
4297
|
-
label: any;
|
|
4298
|
-
value: any;
|
|
4299
|
-
}[]>;
|
|
4300
|
-
/** All property options (full list) */
|
|
4301
|
-
readonly allPropertyKeyOptions: _angular_core.Signal<{
|
|
4302
|
-
label: any;
|
|
4303
|
-
value: any;
|
|
4577
|
+
items: IProperty[];
|
|
4304
4578
|
}[]>;
|
|
4305
|
-
/**
|
|
4306
|
-
|
|
4307
|
-
|
|
4308
|
-
|
|
4579
|
+
/**
|
|
4580
|
+
* Selection modules for source link configuration
|
|
4581
|
+
* Built from selections with their loaded module info
|
|
4582
|
+
*/
|
|
4583
|
+
readonly selectionModules: _angular_core.Signal<SelectionModule[]>;
|
|
4584
|
+
/** Query component type based on chart type and component name */
|
|
4585
|
+
readonly queryComponentType: _angular_core.Signal<QueryComponentType>;
|
|
4586
|
+
/** Loading states */
|
|
4587
|
+
readonly loadingProperties: _angular_core.WritableSignal<boolean>;
|
|
4588
|
+
/** Tab state: 'selection' or 'customApi' */
|
|
4589
|
+
readonly activeTab: _angular_core.WritableSignal<"selection" | "customApi">;
|
|
4590
|
+
/** Tab options for display */
|
|
4591
|
+
readonly tabOptions: {
|
|
4592
|
+
id: string;
|
|
4593
|
+
label: string;
|
|
4594
|
+
}[];
|
|
4595
|
+
/** Custom API configuration */
|
|
4596
|
+
readonly customApi: _angular_core.WritableSignal<CustomApi | null>;
|
|
4597
|
+
/** Internal selections state */
|
|
4598
|
+
readonly selections: _angular_core.WritableSignal<ISelection[]>;
|
|
4599
|
+
readonly sourceLinks: _angular_core.WritableSignal<SourceLink[]>;
|
|
4600
|
+
readonly query: _angular_core.WritableSignal<any>;
|
|
4601
|
+
readonly isNormalized: _angular_core.WritableSignal<boolean>;
|
|
4602
|
+
readonly groupByMultiple: _angular_core.WritableSignal<string[]>;
|
|
4603
|
+
/** Repeater dashboard selection */
|
|
4604
|
+
readonly repeaterDashboardId: _angular_core.WritableSignal<number | null>;
|
|
4605
|
+
readonly availableDashboards: _angular_core.WritableSignal<{
|
|
4606
|
+
id: number;
|
|
4607
|
+
name: string;
|
|
4309
4608
|
}[]>;
|
|
4310
|
-
/**
|
|
4311
|
-
|
|
4312
|
-
/**
|
|
4313
|
-
|
|
4314
|
-
/**
|
|
4315
|
-
|
|
4316
|
-
/**
|
|
4317
|
-
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
/**
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
/**
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
/**
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
/**
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
/**
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
/**
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
/**
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
getPropertyTranslationKeys(): string[];
|
|
4405
|
-
/** Add property translation */
|
|
4406
|
-
addPropertyTranslation(propertyKey: string): void;
|
|
4407
|
-
/** Remove property translation */
|
|
4408
|
-
removePropertyTranslation(propertyKey: string): void;
|
|
4409
|
-
/** Update property translation */
|
|
4410
|
-
updatePropertyTranslation(propertyKey: string, lang: 'ar' | 'en', value: string): void;
|
|
4411
|
-
/** Get property color keys */
|
|
4412
|
-
getPropertyColorKeys(): string[];
|
|
4413
|
-
/** Add property color */
|
|
4414
|
-
addPropertyColor(propertyKey: string): void;
|
|
4415
|
-
/** Copy property translations */
|
|
4416
|
-
copyPropertyTranslations(): void;
|
|
4417
|
-
/** Toggle property translations paste area */
|
|
4418
|
-
togglePropertyTranslationsPaste(): void;
|
|
4419
|
-
/** Apply pasted property translations */
|
|
4420
|
-
applyPropertyTranslationsPaste(): void;
|
|
4421
|
-
/** Remove property color */
|
|
4422
|
-
removePropertyColor(propertyKey: string): void;
|
|
4423
|
-
/** Update property color */
|
|
4424
|
-
updatePropertyColor(propertyKey: string, selectedKey: string): void;
|
|
4425
|
-
/** Copy property colors */
|
|
4426
|
-
copyPropertyColors(): void;
|
|
4427
|
-
/** Toggle property colors paste area */
|
|
4428
|
-
togglePropertyColorsPaste(): void;
|
|
4429
|
-
/** Apply pasted property colors */
|
|
4430
|
-
applyPropertyColorsPaste(): void;
|
|
4431
|
-
/** Update format X-Axis config */
|
|
4432
|
-
updateFormatXAxisConfig(key: keyof FormatXAxisConfig, value: any): void;
|
|
4433
|
-
/** Update table columns config */
|
|
4434
|
-
updateTableColumnsConfig(key: keyof ExtraColumnFromLookupConfig, value: any): void;
|
|
4435
|
-
/** Update timeline header colors (single config) */
|
|
4436
|
-
updateTimelineHeaderColorSingle(key: 'bgColor' | 'color', value: string): void;
|
|
4437
|
-
/** Update toggle association */
|
|
4438
|
-
updateToggleAssociation(value: boolean): void;
|
|
4439
|
-
/** Selected property for adding translations */
|
|
4440
|
-
readonly selectedPropertyForTranslation: _angular_core.WritableSignal<string>;
|
|
4441
|
-
/** Selected property for adding colors */
|
|
4442
|
-
readonly selectedPropertyForColor: _angular_core.WritableSignal<string>;
|
|
4443
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DisplaySettings, never>;
|
|
4444
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DisplaySettings, "mt-display-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "chartType": { "alias": "chartType"; "required": false; "isSignal": true; }; "availableProperties": { "alias": "availableProperties"; "required": false; "isSignal": true; }; "selectedProperties": { "alias": "selectedProperties"; "required": false; "isSignal": true; }; "lookups": { "alias": "lookups"; "required": false; "isSignal": true; }; }, { "clientConfigChange": "clientConfigChange"; }, never, never, true, never>;
|
|
4609
|
+
/** Show source links when multiple selections exist */
|
|
4610
|
+
readonly showSourceLinks: _angular_core.Signal<boolean>;
|
|
4611
|
+
/** Hide selection config for layout, snapshot, phaseGate types (they don't need data source selection) */
|
|
4612
|
+
readonly hideSelectionConfig: _angular_core.Signal<boolean>;
|
|
4613
|
+
/** Show groupByMultiple for table queries (non-report mode) */
|
|
4614
|
+
readonly showGroupByMultiple: _angular_core.Signal<boolean>;
|
|
4615
|
+
/**
|
|
4616
|
+
* Derived signal: Extract module keys from selections for change detection
|
|
4617
|
+
* Only changes when actual selectors change, not on every selection update
|
|
4618
|
+
*/
|
|
4619
|
+
private readonly moduleKeysSignature;
|
|
4620
|
+
/** Track last loaded module signature to prevent duplicate requests */
|
|
4621
|
+
private lastLoadedSignature;
|
|
4622
|
+
constructor();
|
|
4623
|
+
/**
|
|
4624
|
+
* Load properties for all selections using bulk API
|
|
4625
|
+
* Single POST request to /metadata/modules/properties
|
|
4626
|
+
* Enriches response with selectorName from tree data
|
|
4627
|
+
*/
|
|
4628
|
+
loadPropertiesForSelections(selections: ISelection[]): void;
|
|
4629
|
+
/**
|
|
4630
|
+
* Handle selection changes
|
|
4631
|
+
*/
|
|
4632
|
+
onSelectionsChange(selections: ISelection[]): void;
|
|
4633
|
+
/**
|
|
4634
|
+
* Handle module change - update selections, effect handles property loading
|
|
4635
|
+
*/
|
|
4636
|
+
onModuleChange(event: {
|
|
4637
|
+
selectionId: number;
|
|
4638
|
+
selector: string;
|
|
4639
|
+
selectorName?: string | null;
|
|
4640
|
+
}): void;
|
|
4641
|
+
/**
|
|
4642
|
+
* Extract module type from selector (e.g., "Level:7" -> "Level")
|
|
4643
|
+
*/
|
|
4644
|
+
private extractModuleTypeFromSelector;
|
|
4645
|
+
/**
|
|
4646
|
+
* Handle source links change
|
|
4647
|
+
*/
|
|
4648
|
+
onSourceLinksChange(links: SourceLink[]): void;
|
|
4649
|
+
/**
|
|
4650
|
+
* Handle query change (general query)
|
|
4651
|
+
*/
|
|
4652
|
+
onQueryChange(query: ChartQuery): void;
|
|
4653
|
+
/**
|
|
4654
|
+
* Handle table query change
|
|
4655
|
+
*/
|
|
4656
|
+
onTableQueryChange(query: TableQuery): void;
|
|
4657
|
+
/**
|
|
4658
|
+
* Handle timeline query change
|
|
4659
|
+
*/
|
|
4660
|
+
onTimelineQueryChange(query: any): void;
|
|
4661
|
+
/**
|
|
4662
|
+
* Handle map query change
|
|
4663
|
+
*/
|
|
4664
|
+
onMapQueryChange(query: any): void;
|
|
4665
|
+
/**
|
|
4666
|
+
* Handle splitter query change
|
|
4667
|
+
*/
|
|
4668
|
+
onSplitterQueryChange(query: any): void;
|
|
4669
|
+
/**
|
|
4670
|
+
* Handle properties query change
|
|
4671
|
+
*/
|
|
4672
|
+
onPropertiesQueryChange(query: any): void;
|
|
4673
|
+
/**
|
|
4674
|
+
* Handle snapshot query change
|
|
4675
|
+
*/
|
|
4676
|
+
onSnapshotQueryChange(query: any): void;
|
|
4677
|
+
/**
|
|
4678
|
+
* Handle groupByMultiple change
|
|
4679
|
+
*/
|
|
4680
|
+
onGroupByMultipleChange(values: string[]): void;
|
|
4681
|
+
/**
|
|
4682
|
+
* Handle repeater dashboard selection
|
|
4683
|
+
*/
|
|
4684
|
+
onRepeaterDashboardChange(dashboardId: number): void;
|
|
4685
|
+
/**
|
|
4686
|
+
* Handle isNormalized change
|
|
4687
|
+
*/
|
|
4688
|
+
onIsNormalizedChange(value: boolean): void;
|
|
4689
|
+
/**
|
|
4690
|
+
* Handle tab change
|
|
4691
|
+
*/
|
|
4692
|
+
onTabChange(tabId: string): void;
|
|
4693
|
+
/**
|
|
4694
|
+
* Handle custom API change
|
|
4695
|
+
*/
|
|
4696
|
+
onCustomApiChange(customApi: CustomApi | null): void;
|
|
4697
|
+
/**
|
|
4698
|
+
* Get chart type id for query component
|
|
4699
|
+
*/
|
|
4700
|
+
getChartTypeId(): string;
|
|
4701
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataSourceSettings, never>;
|
|
4702
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataSourceSettings, "mt-data-source-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "chartType": { "alias": "chartType"; "required": false; "isSignal": true; }; }, { "serviceConfigChange": "serviceConfigChange"; }, never, never, true, never>;
|
|
4445
4703
|
}
|
|
4446
4704
|
|
|
4447
4705
|
/** Action type option */
|
|
@@ -4555,10 +4813,6 @@ declare class ActionsSettings {
|
|
|
4555
4813
|
/**
|
|
4556
4814
|
* Track by action id for ngFor
|
|
4557
4815
|
*/
|
|
4558
|
-
trackByActionId(_index: number, action: ActionConfig): string;
|
|
4559
|
-
/**
|
|
4560
|
-
* Track by index helper
|
|
4561
|
-
*/
|
|
4562
4816
|
trackByIndex(index: number): number;
|
|
4563
4817
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionsSettings, never>;
|
|
4564
4818
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionsSettings, "mt-actions-settings", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, { "clientConfigChange": "clientConfigChange"; }, never, never, true, never>;
|
|
@@ -4612,5 +4866,5 @@ declare class GetChartActionsPipe implements PipeTransform {
|
|
|
4612
4866
|
*/
|
|
4613
4867
|
declare function cloneDeep<T>(obj: T): T;
|
|
4614
4868
|
|
|
4615
|
-
export { ActionsSettings, BarChartHandler, BarControlUi, CHART_TYPES, CardContentComponent, CardFilterComponent, ChartCardComponent, ChartDataService, ChartSettingsDrawer, ChartViewer, ComparisonChartHandler, DashboardBuilder, DashboardBuilderService, DashboardItem, DashboardItemStoreService, DashboardList, DashboardStoreService, DashboardViewer, DataSourceSettings, DefaultControlUi, DisplaySettings, DynamicFiltersConfig, EChartComponent, EntityInfoComponent, EntityPreviewCardComponent, FilterByGroupPipe, GaugeChartHandler, GeneralSettings, GetChartActionsPipe, HTTPMethod, HeaderCardComponent, LevelCardHandler, LevelCardListComponent, LineChartHandler, ListStatisticCardComponent, ManageBreadcrumb, ManageFilterOnPage, ManageItem, ManageItemService, ManagePages, MapChartHandler, OverviewCardHandler, PhaseGateStepperHandler, PieChartHandler, PieControlUi, RingGaugeChartHandler, SPlusChartHandler, SkeletonCardComponent, SnapshotHandler, SplitterChartHandler, StackBarChartHandler, StackBarControlUi, StatisticCardComponent, TableCardComponent, TableViewHandler, TimelineHandler, addCommasToNumber, axisFormatters, cloneDeep, createAxisFormatter, createTooltipFormatter, dynamicReorder, dynamicTextReplace, formatCurrency, formatDate, formatNumber, formatPercentage, formatValue, formatWordsUnderBar, generalConfiguration, getColorFromConditions, getLanguageCode, getLocalizedTitle, getNestedData, groupDatesByYearAndMonth, handleFilterForCard, handleFilterForSnapshot, handleFiltersForCustom, isMobilePlatform, sortChartData, sortDataTableView, switchAllKeysSmall, switchAllKeysToLower };
|
|
4616
|
-
export type { ActionConfig, ApiResponse, BarChartData, BreadcrumbItem, BulkLinkChartRequest, BulkLinkChartResponse, BulkPropertiesRequest, BulkPropertiesResponse, BulkPropertiesResponseItem, BulkPropertyRequestItem, CardBorderStyleConfig, CardStyleConfig$1 as CardStyleConfig, ChartActionEvent, ChartActionsContext, ChartData, ChartDataHandled, ChartLabel, ChartLinkConfiguration, ChartTypeConfig, ClientConfig, ComponentType, CustomApi, DashboardChartItem, DashboardDialogItem, DashboardItemStore, DashboardListEvent, DashboardPage, DisplayConfig, EChartSeriesItem, ExcelSheet, FilterConfig, FilterOption, GroupedModuleOption, HandleAction, HeaderCardConfig$1 as HeaderCardConfig, IModule, IModuleType, IProperty, IPropertyWithGroup, ISelection, ItemConfig, LevelCardData, LevelCardProperty, LinkChartRequest, LocalizedName, ModuleItem, ModuleSelectOption, ModuleType, ModuleValue, ModulesTreeRequest, ModulesTreeResponse, PhaseGateProperty, PhaseGateStep, PieChartData, PropertiesResponse, PropertyItem$1 as PropertyItem, PropertyItemOption, PropertyItemsResponse, QuickManageType, Report, ReportChartLink, ReportDashboardConfig, ReportExcelConfig, ReportType, ReportUrl, RequestType, SelectionFilter, ServiceConfig, ServiceItem, SourceLink, StatisticCardData, StyleConfig, TableColumn$1 as TableColumn, TableViewData, TimelineData, TimelineItem, UnlinkChartRequest };
|
|
4869
|
+
export { ActionsSettings, BarChartHandler, BarControlUi, CHART_TYPES, CardContentComponent, CardFilterComponent, CardInfoComponent, ChartCardComponent, ChartDataService, ChartSettingsDrawer, ChartViewer, ComparisonChartHandler, DashboardBuilder, DashboardBuilderService, DashboardItem, DashboardItemStoreService, DashboardList, DashboardStoreService, DashboardViewer, DataSourceSettings, DefaultControlUi, DisplaySettings, DynamicFiltersComponent, DynamicFiltersConfig, EChartComponent, EntityInfoComponent, EntityPreviewCardComponent, FilterByGroupPipe, GaugeChartHandler, GeneralSettings, GetChartActionsPipe, HTTPMethod, HeaderCardComponent, LevelCardHandler, LevelCardListComponent, LineChartHandler, ListStatisticCardComponent, ManageBreadcrumb, ManageFilterOnPage, ManageItem, ManageItemService, ManagePages, MapChartHandler, OverviewCardHandler, PhaseGateStepperHandler, PieChartHandler, PieControlUi, RingGaugeChartHandler, SPlusChartHandler, SkeletonCardComponent, SnapshotHandler, SplitterChartHandler, StackBarChartHandler, StackBarControlUi, StaticFiltersComponent, StatisticCardComponent, TableCardComponent, TableViewHandler, TimelineHandler, addCommasToNumber, axisFormatters, cloneDeep, createAxisFormatter, createTooltipFormatter, dynamicReorder, dynamicTextReplace, formatCurrency, formatDate, formatNumber, formatPercentage, formatValue, formatWordsUnderBar, formatXAxis, generalConfiguration, getColorFromConditions, getLanguageCode, getLocalizedTitle, getNestedData, groupDatesByYearAndMonth, handleFilterForCard, handleFilterForSnapshot, handleFiltersForCustom, isMobilePlatform, sortChartData, sortDataTableView, switchAllKeysSmall, switchAllKeysToLower };
|
|
4870
|
+
export type { ActionConfig, ApiResponse, BarChartData, BreadcrumbItem, BulkLinkChartRequest, BulkLinkChartResponse, BulkPropertiesRequest, BulkPropertiesResponse, BulkPropertiesResponseItem, BulkPropertyRequestItem, CardBorderStyleConfig, CardInfoConfig$1 as CardInfoConfig, CardStyleConfig$1 as CardStyleConfig, ChartActionEvent, ChartActionsContext, ChartData, ChartDataHandled, ChartLabel, ChartLinkConfiguration, ChartTypeConfig, ClientConfig, ComponentType, CustomApi, DashboardBuilderData, DashboardChartItem, DashboardDialogItem, DashboardItemStore, DashboardListEvent, DashboardPage, DisplayConfig, EChartSeriesItem, ExcelSheet, FilterConfig, FilterOption, FormatXAxisConfig$1 as FormatXAxisConfig, GroupedModuleOption, HandleAction, HeaderCardConfig$1 as HeaderCardConfig, IModule, IModuleType, IProperty, IPropertyWithGroup, ISelection, ItemConfig, LevelCardData, LevelCardProperty, LinkChartRequest, LocalizedName, ModuleItem, ModuleSelectOption, ModuleType, ModuleValue, ModulesTreeRequest, ModulesTreeResponse, PhaseGateProperty, PhaseGateStep, PieChartData, PropertiesResponse, PropertyItem$1 as PropertyItem, PropertyItemOption, PropertyItemsResponse, QuickManageType, Report, ReportChartLink, ReportDashboardConfig, ReportExcelConfig, ReportType, ReportUrl, RequestType, SelectionFilter, ServiceConfig, ServiceItem, SourceLink, StaticFilterConfig, StaticFilterItem, StatisticCardData, StyleConfig, TableColumn$1 as TableColumn, TableViewData, TimelineData, TimelineItem, UnlinkChartRequest };
|