@topconsultnpm/sdkui-react 6.22.0-dev2.3 → 6.22.0-dev2.30
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/lib/components/NewComponents/ContextMenu/TMContextMenu.js +1 -1
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +1 -1
- package/lib/components/base/TMButton.d.ts +13 -0
- package/lib/components/base/TMButton.js +137 -5
- package/lib/components/base/TMDataGrid.d.ts +2 -0
- package/lib/components/base/TMDataGrid.js +81 -8
- package/lib/components/base/TMEditorBase.d.ts +2 -0
- package/lib/components/base/TMFileManager.js +5 -3
- package/lib/components/base/TMFileManagerUtils.d.ts +1 -0
- package/lib/components/base/TMFileManagerUtils.js +16 -0
- package/lib/components/base/TMModal.d.ts +4 -0
- package/lib/components/base/TMModal.js +42 -11
- package/lib/components/base/TMPanel.d.ts +1 -0
- package/lib/components/base/TMPanel.js +79 -20
- package/lib/components/base/TMPopUp.js +3 -0
- package/lib/components/base/TMTooltip.d.ts +2 -1
- package/lib/components/base/TMTooltip.js +23 -6
- package/lib/components/base/TMTreeView.js +108 -67
- package/lib/components/choosers/TMDcmtTypeChooser.js +4 -3
- package/lib/components/choosers/TMDistinctValues.d.ts +9 -7
- package/lib/components/choosers/TMDistinctValues.js +149 -142
- package/lib/components/choosers/TMMetadataChooser.js +1 -1
- package/lib/components/choosers/TMQuickSearchInfo.d.ts +12 -0
- package/lib/components/choosers/TMQuickSearchInfo.js +279 -0
- package/lib/components/choosers/TMQuickSearchSettingsForm.d.ts +16 -0
- package/lib/components/choosers/TMQuickSearchSettingsForm.js +94 -0
- package/lib/components/choosers/TMSelectedValuesSummary.d.ts +13 -0
- package/lib/components/choosers/TMSelectedValuesSummary.js +91 -0
- package/lib/components/editors/TMDropDown.d.ts +3 -0
- package/lib/components/editors/TMDropDown.js +197 -5
- package/lib/components/editors/TMMetadataEditor.d.ts +5 -1
- package/lib/components/editors/TMMetadataEditor.js +8 -3
- package/lib/components/editors/TMTextBox.js +2 -2
- package/lib/components/features/documents/TMBatchUpdateForm.js +19 -5
- package/lib/components/features/documents/TMDcmtBlog.d.ts +3 -0
- package/lib/components/features/documents/TMDcmtBlog.js +4 -4
- package/lib/components/features/documents/TMDcmtForm.d.ts +7 -0
- package/lib/components/features/documents/TMDcmtForm.js +112 -45
- package/lib/components/features/documents/TMDcmtFormActionButtons.d.ts +11 -0
- package/lib/components/features/documents/TMDcmtFormActionButtons.js +74 -7
- package/lib/components/features/documents/TMDcmtPreview.js +10 -6
- package/lib/components/features/documents/TMMasterDetailDcmts.js +95 -33
- package/lib/components/features/documents/TMMasterInfoFields.d.ts +19 -0
- package/lib/components/features/documents/TMMasterInfoFields.js +186 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.d.ts +40 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +296 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.d.ts +363 -0
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsUtils.js +259 -0
- package/lib/components/features/documents/TMRelationViewer.d.ts +14 -1
- package/lib/components/features/documents/TMRelationViewer.js +69 -20
- package/lib/components/features/search/TMSearch.js +29 -16
- package/lib/components/features/search/TMSearchQueryEditor.js +5 -3
- package/lib/components/features/search/TMSearchQueryPanel.d.ts +1 -1
- package/lib/components/features/search/TMSearchQueryPanel.js +28 -7
- package/lib/components/features/search/TMSearchResult.d.ts +9 -0
- package/lib/components/features/search/TMSearchResult.js +419 -108
- package/lib/components/features/search/TMTreeSelector.js +18 -5
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +10 -0
- package/lib/components/features/workflow/TMWorkflowPopup.js +8 -4
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -0
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +24 -14
- package/lib/components/layout/panelManager/TMPanelManagerContext.js +68 -93
- package/lib/components/layout/panelManager/TMPanelWrapper.js +2 -2
- package/lib/components/layout/panelManager/types.d.ts +3 -0
- package/lib/components/layout/panelManager/utils.js +13 -11
- package/lib/components/viewers/TMMidViewer.js +4 -1
- package/lib/components/viewers/TMTidViewer.js +25 -11
- package/lib/helper/SDKUI_Globals.d.ts +82 -0
- package/lib/helper/SDKUI_Globals.js +119 -0
- package/lib/helper/SDKUI_Localizator.d.ts +24 -0
- package/lib/helper/SDKUI_Localizator.js +240 -0
- package/lib/helper/TMIcons.d.ts +1 -0
- package/lib/helper/TMIcons.js +3 -0
- package/lib/helper/dataGridSearchHelper.d.ts +28 -0
- package/lib/helper/dataGridSearchHelper.js +51 -0
- package/lib/helper/dcmtsHelper.d.ts +20 -0
- package/lib/helper/dcmtsHelper.js +58 -1
- package/lib/helper/helpers.d.ts +20 -0
- package/lib/helper/helpers.js +55 -1
- package/lib/helper/index.d.ts +1 -0
- package/lib/helper/index.js +1 -0
- package/lib/helper/queryHelper.d.ts +2 -0
- package/lib/helper/queryHelper.js +3 -1
- package/lib/hooks/tmDistinctValuesGridHelper.d.ts +16 -0
- package/lib/hooks/tmDistinctValuesGridHelper.js +31 -0
- package/lib/hooks/useArchiveListForm.d.ts +39 -0
- package/lib/hooks/useArchiveListForm.js +46 -0
- package/lib/hooks/useCaseFlowApprove.d.ts +56 -0
- package/lib/hooks/useCaseFlowApprove.js +157 -0
- package/lib/hooks/useDataUserIdItem.d.ts +1 -0
- package/lib/hooks/useDataUserIdItem.js +1 -0
- package/lib/hooks/useDocumentOperations.d.ts +2 -0
- package/lib/hooks/useDocumentOperations.js +28 -5
- package/lib/hooks/useMultiMasterDetailDcmts.d.ts +100 -0
- package/lib/hooks/useMultiMasterDetailDcmts.js +587 -0
- package/lib/hooks/useRelatedDocuments.js +2 -26
- package/lib/hooks/useTMDistinctValuesMetadataDisplay.d.ts +18 -0
- package/lib/hooks/useTMDistinctValuesMetadataDisplay.js +103 -0
- package/lib/hooks/useTMDistinctValuesQuickSearch.d.ts +49 -0
- package/lib/hooks/useTMDistinctValuesQuickSearch.js +307 -0
- package/lib/hooks/useTMDistinctValuesSelection.d.ts +42 -0
- package/lib/hooks/useTMDistinctValuesSelection.js +103 -0
- package/lib/hooks/useTMDistinctValuesSource.d.ts +29 -0
- package/lib/hooks/useTMDistinctValuesSource.js +105 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/services/caseflow/CaseFlowService.d.ts +236 -0
- package/lib/services/caseflow/CaseFlowService.js +693 -0
- package/lib/services/caseflow/CaseFlowTemplateCacheService.d.ts +28 -0
- package/lib/services/caseflow/CaseFlowTemplateCacheService.js +121 -0
- package/lib/services/caseflow/caseFlowNameCache.d.ts +32 -0
- package/lib/services/caseflow/caseFlowNameCache.js +116 -0
- package/lib/services/caseflow/caseFlowWorkItemUtils.d.ts +61 -0
- package/lib/services/caseflow/caseFlowWorkItemUtils.js +113 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/index.js +4 -0
- package/lib/services/platform_services.d.ts +1 -1
- package/package.json +66 -66
|
@@ -444,6 +444,16 @@ export class SDKUI_Localizator {
|
|
|
444
444
|
default: return "Consenti solo archiviazioni di metadati";
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
|
+
static get ArchivedDetails() {
|
|
448
|
+
switch (this._cultureID) {
|
|
449
|
+
case CultureIDs.De_DE: return "Bereits archivierte Details";
|
|
450
|
+
case CultureIDs.En_US: return "Already archived details";
|
|
451
|
+
case CultureIDs.Es_ES: return "Detalles ya archivados";
|
|
452
|
+
case CultureIDs.Fr_FR: return "Détails déjà archivés";
|
|
453
|
+
case CultureIDs.Pt_PT: return "Detalhes já arquivados";
|
|
454
|
+
default: return "Dettagli già archiviati";
|
|
455
|
+
}
|
|
456
|
+
}
|
|
447
457
|
static get ArchivedDocuments() {
|
|
448
458
|
switch (this._cultureID) {
|
|
449
459
|
case CultureIDs.De_DE: return "Archivierte Dokumente";
|
|
@@ -484,6 +494,46 @@ export class SDKUI_Localizator {
|
|
|
484
494
|
default: return "Archivia documento master";
|
|
485
495
|
}
|
|
486
496
|
}
|
|
497
|
+
static get ArchiveMultipleDetailDocuments() {
|
|
498
|
+
switch (this._cultureID) {
|
|
499
|
+
case CultureIDs.De_DE: return "Mehrere Details archivieren";
|
|
500
|
+
case CultureIDs.En_US: return "Archive multiple details";
|
|
501
|
+
case CultureIDs.Es_ES: return "Archivar múltiples detalles";
|
|
502
|
+
case CultureIDs.Fr_FR: return "Archiver plusieurs détails";
|
|
503
|
+
case CultureIDs.Pt_PT: return "Arquivar múltiplos detalhes";
|
|
504
|
+
default: return "Archivia dettagli multipli";
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
static get ArchiveMasterAndMultipleDetailDocuments() {
|
|
508
|
+
switch (this._cultureID) {
|
|
509
|
+
case CultureIDs.De_DE: return "Master mit mehreren Details archivieren";
|
|
510
|
+
case CultureIDs.En_US: return "Archive master with multiple details";
|
|
511
|
+
case CultureIDs.Es_ES: return "Archivar maestro con múltiples detalles";
|
|
512
|
+
case CultureIDs.Fr_FR: return "Archiver le maître avec plusieurs détails";
|
|
513
|
+
case CultureIDs.Pt_PT: return "Arquivar mestre com múltiplos detalhes";
|
|
514
|
+
default: return "Archivia master con dettagli multipli";
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
static get ArchiveMasterAndDetails_Confirm() {
|
|
518
|
+
switch (this._cultureID) {
|
|
519
|
+
case CultureIDs.De_DE: return "Master archivieren und mit den Details fortfahren?";
|
|
520
|
+
case CultureIDs.En_US: return "Archive the master and proceed with the details?";
|
|
521
|
+
case CultureIDs.Es_ES: return "¿Archivar el maestro y continuar con los detalles?";
|
|
522
|
+
case CultureIDs.Fr_FR: return "Archiver le maître et poursuivre avec les détails ?";
|
|
523
|
+
case CultureIDs.Pt_PT: return "Arquivar o mestre e prosseguir com os detalhes?";
|
|
524
|
+
default: return "Archiviare il master e proseguire con i dettagli?";
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
static get ExitWithoutArchiving_Confirm() {
|
|
528
|
+
switch (this._cultureID) {
|
|
529
|
+
case CultureIDs.De_DE: return "Möchten Sie wirklich beenden? Die eingegebenen Dokumente werden nicht archiviert. Fortfahren?";
|
|
530
|
+
case CultureIDs.En_US: return "Are you sure you want to exit? The entered documents will not be archived. Continue?";
|
|
531
|
+
case CultureIDs.Es_ES: return "¿Está seguro de que desea salir? Los documentos introducidos no se archivarán. ¿Continuar?";
|
|
532
|
+
case CultureIDs.Fr_FR: return "Êtes-vous sûr de vouloir quitter ? Les documents saisis ne seront pas archivés. Continuer ?";
|
|
533
|
+
case CultureIDs.Pt_PT: return "Tem a certeza de que pretende sair? Os documentos introduzidos não serão arquivados. Continuar?";
|
|
534
|
+
default: return "Sei sicuro di voler uscire? I documenti inseriti non verranno archiviati. Continuare?";
|
|
535
|
+
}
|
|
536
|
+
}
|
|
487
537
|
static get Archiving() {
|
|
488
538
|
switch (this._cultureID) {
|
|
489
539
|
case CultureIDs.De_DE: return "Archivierung";
|
|
@@ -715,6 +765,16 @@ export class SDKUI_Localizator {
|
|
|
715
765
|
default: return "Indietro";
|
|
716
766
|
}
|
|
717
767
|
}
|
|
768
|
+
static get BackToResult() {
|
|
769
|
+
switch (this._cultureID) {
|
|
770
|
+
case CultureIDs.De_DE: return "Zum Ergebnis";
|
|
771
|
+
case CultureIDs.En_US: return "Go to result";
|
|
772
|
+
case CultureIDs.Es_ES: return "Ir al resultado";
|
|
773
|
+
case CultureIDs.Fr_FR: return "Aller au résultat";
|
|
774
|
+
case CultureIDs.Pt_PT: return "Ir para o resultado";
|
|
775
|
+
default: return "Vai a risultato";
|
|
776
|
+
}
|
|
777
|
+
}
|
|
718
778
|
static get BatchUpdate() {
|
|
719
779
|
switch (this._cultureID) {
|
|
720
780
|
case CultureIDs.De_DE: return "Mehrfachbearbeitung";
|
|
@@ -1662,6 +1722,16 @@ export class SDKUI_Localizator {
|
|
|
1662
1722
|
default: return "Dettagli";
|
|
1663
1723
|
}
|
|
1664
1724
|
}
|
|
1725
|
+
static get DetailsToArchive() {
|
|
1726
|
+
switch (this._cultureID) {
|
|
1727
|
+
case CultureIDs.De_DE: return "Zu archivierende Details";
|
|
1728
|
+
case CultureIDs.En_US: return "Details to archive";
|
|
1729
|
+
case CultureIDs.Es_ES: return "Detalles a archivar";
|
|
1730
|
+
case CultureIDs.Fr_FR: return "Détails à archiver";
|
|
1731
|
+
case CultureIDs.Pt_PT: return "Detalhes a arquivar";
|
|
1732
|
+
default: return "Dettagli da archiviare";
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1665
1735
|
static get Delete() {
|
|
1666
1736
|
switch (this._cultureID) {
|
|
1667
1737
|
case CultureIDs.De_DE: return "Löschen";
|
|
@@ -1702,6 +1772,16 @@ export class SDKUI_Localizator {
|
|
|
1702
1772
|
default: return "Eliminare il commento?";
|
|
1703
1773
|
}
|
|
1704
1774
|
}
|
|
1775
|
+
static get DeleteAllRowsToChangeDcmtType() {
|
|
1776
|
+
switch (this._cultureID) {
|
|
1777
|
+
case CultureIDs.De_DE: return "Löschen Sie alle Zeilen, um den Dokumenttyp zu ändern";
|
|
1778
|
+
case CultureIDs.En_US: return "Delete all rows to change the document type";
|
|
1779
|
+
case CultureIDs.Es_ES: return "Elimine todas las filas para poder cambiar el tipo de documento";
|
|
1780
|
+
case CultureIDs.Fr_FR: return "Supprimez toutes les lignes pour pouvoir changer le type de document";
|
|
1781
|
+
case CultureIDs.Pt_PT: return "Elimine todas as linhas para poder alterar o tipo de documento";
|
|
1782
|
+
default: return "Elimina tutte le righe per poter cambiare tipo documento";
|
|
1783
|
+
}
|
|
1784
|
+
}
|
|
1705
1785
|
static get DeleteDeletedMessages() {
|
|
1706
1786
|
switch (this._cultureID) {
|
|
1707
1787
|
case CultureIDs.De_DE: return "Gelöschte Nachrichten löschen";
|
|
@@ -4008,6 +4088,36 @@ export class SDKUI_Localizator {
|
|
|
4008
4088
|
default: return "Nascondi tutti";
|
|
4009
4089
|
}
|
|
4010
4090
|
}
|
|
4091
|
+
static get HideArchivedDetails() {
|
|
4092
|
+
switch (this._cultureID) {
|
|
4093
|
+
case CultureIDs.De_DE: return "Bereits archivierte Details ausblenden";
|
|
4094
|
+
case CultureIDs.En_US: return "Hide already archived details";
|
|
4095
|
+
case CultureIDs.Es_ES: return "Ocultar los detalles ya archivados";
|
|
4096
|
+
case CultureIDs.Fr_FR: return "Masquer les détails déjà archivés";
|
|
4097
|
+
case CultureIDs.Pt_PT: return "Ocultar os detalhes já arquivados";
|
|
4098
|
+
default: return "Nascondi i dettagli già archiviati";
|
|
4099
|
+
}
|
|
4100
|
+
}
|
|
4101
|
+
static get HideDcmtTypes() {
|
|
4102
|
+
switch (this._cultureID) {
|
|
4103
|
+
case CultureIDs.De_DE: return "Dokumenttypen ausblenden";
|
|
4104
|
+
case CultureIDs.En_US: return "Hide document types";
|
|
4105
|
+
case CultureIDs.Es_ES: return "Ocultar tipos de documento";
|
|
4106
|
+
case CultureIDs.Fr_FR: return "Masquer les types de document";
|
|
4107
|
+
case CultureIDs.Pt_PT: return "Ocultar tipos de documento";
|
|
4108
|
+
default: return "Nascondi tipi documento";
|
|
4109
|
+
}
|
|
4110
|
+
}
|
|
4111
|
+
static get HideDetailsToArchive() {
|
|
4112
|
+
switch (this._cultureID) {
|
|
4113
|
+
case CultureIDs.De_DE: return "Zu archivierende Details ausblenden";
|
|
4114
|
+
case CultureIDs.En_US: return "Hide details to archive";
|
|
4115
|
+
case CultureIDs.Es_ES: return "Ocultar los detalles a archivar";
|
|
4116
|
+
case CultureIDs.Fr_FR: return "Masquer les détails à archiver";
|
|
4117
|
+
case CultureIDs.Pt_PT: return "Ocultar os detalhes a arquivar";
|
|
4118
|
+
default: return "Nascondi i dettagli da archiviare";
|
|
4119
|
+
}
|
|
4120
|
+
}
|
|
4011
4121
|
static get HideDetailsWithZeroDocs() {
|
|
4012
4122
|
switch (this._cultureID) {
|
|
4013
4123
|
case CultureIDs.De_DE: return "Details mit 0 Dokumenten ausblenden";
|
|
@@ -4058,6 +4168,16 @@ export class SDKUI_Localizator {
|
|
|
4058
4168
|
default: return "Nascondi opzioni di formattazione";
|
|
4059
4169
|
}
|
|
4060
4170
|
}
|
|
4171
|
+
static get HideMasterInfo() {
|
|
4172
|
+
switch (this._cultureID) {
|
|
4173
|
+
case CultureIDs.De_DE: return "Master-Informationen ausblenden";
|
|
4174
|
+
case CultureIDs.En_US: return "Hide master information";
|
|
4175
|
+
case CultureIDs.Es_ES: return "Ocultar la información del maestro";
|
|
4176
|
+
case CultureIDs.Fr_FR: return "Masquer les informations du maître";
|
|
4177
|
+
case CultureIDs.Pt_PT: return "Ocultar as informações do mestre";
|
|
4178
|
+
default: return "Nascondi le informazioni del master";
|
|
4179
|
+
}
|
|
4180
|
+
}
|
|
4061
4181
|
static get HideMetadata() {
|
|
4062
4182
|
switch (this._cultureID) {
|
|
4063
4183
|
case CultureIDs.De_DE: return "Metadaten ausblenden";
|
|
@@ -6522,6 +6642,16 @@ export class SDKUI_Localizator {
|
|
|
6522
6642
|
default: return "Valorizza parametri query";
|
|
6523
6643
|
}
|
|
6524
6644
|
}
|
|
6645
|
+
static get QuickSearchSettings_DeleteConfirmFor1() {
|
|
6646
|
+
switch (this._cultureID) {
|
|
6647
|
+
case CultureIDs.De_DE: return "Schnellsuche-Konfiguration für '{{0}}' löschen?";
|
|
6648
|
+
case CultureIDs.En_US: return "Delete the quick search setup for '{{0}}'?";
|
|
6649
|
+
case CultureIDs.Es_ES: return "¿Eliminar la configuración de la búsqueda rápida de '{{0}}'?";
|
|
6650
|
+
case CultureIDs.Fr_FR: return "Supprimer la configuration de la recherche rapide de '{{0}}' ?";
|
|
6651
|
+
case CultureIDs.Pt_PT: return "Eliminar a configuração da pesquisa rápida de '{{0}}'?";
|
|
6652
|
+
default: return "Eliminare la configurazione della ricerca rapida di '{{0}}'?";
|
|
6653
|
+
}
|
|
6654
|
+
}
|
|
6525
6655
|
static get ReadOnly() {
|
|
6526
6656
|
switch (this._cultureID) {
|
|
6527
6657
|
case CultureIDs.De_DE: return "Nur Lesen";
|
|
@@ -6623,6 +6753,26 @@ export class SDKUI_Localizator {
|
|
|
6623
6753
|
default: return "Nessuna correlazione trovata";
|
|
6624
6754
|
}
|
|
6625
6755
|
}
|
|
6756
|
+
static get StopRelationsCalculation() {
|
|
6757
|
+
switch (this._cultureID) {
|
|
6758
|
+
case CultureIDs.De_DE: return "Berechnung unterbrechen und die bereits berechneten Korrelationen anzeigen";
|
|
6759
|
+
case CultureIDs.En_US: return "Stop the calculation and show the already calculated correlations";
|
|
6760
|
+
case CultureIDs.Es_ES: return "Interrumpir el cálculo y mostrar las correlaciones ya calculadas";
|
|
6761
|
+
case CultureIDs.Fr_FR: return "Interrompre le calcul et afficher les corrélations déjà calculées";
|
|
6762
|
+
case CultureIDs.Pt_PT: return "Interromper o cálculo e mostrar as correlações já calculadas";
|
|
6763
|
+
default: return "Interrompi il calcolo e mostra le correlazioni già calcolate";
|
|
6764
|
+
}
|
|
6765
|
+
}
|
|
6766
|
+
static get RelationsCalculationStopped() {
|
|
6767
|
+
switch (this._cultureID) {
|
|
6768
|
+
case CultureIDs.De_DE: return "Berechnung der Korrelationen unterbrochen: Es werden nur die bereits berechneten Korrelationen angezeigt.";
|
|
6769
|
+
case CultureIDs.En_US: return "Correlations calculation stopped: only the already calculated correlations are shown.";
|
|
6770
|
+
case CultureIDs.Es_ES: return "Cálculo de correlaciones interrumpido: solo se muestran las correlaciones ya calculadas.";
|
|
6771
|
+
case CultureIDs.Fr_FR: return "Calcul des corrélations interrompu : seules les corrélations déjà calculées sont affichées.";
|
|
6772
|
+
case CultureIDs.Pt_PT: return "Cálculo das correlações interrompido: são mostradas apenas as correlações já calculadas.";
|
|
6773
|
+
default: return "Calcolo delle correlazioni interrotto: vengono mostrate solo le correlazioni già calcolate.";
|
|
6774
|
+
}
|
|
6775
|
+
}
|
|
6626
6776
|
static get RelatedDcmtsNotFound() {
|
|
6627
6777
|
switch (this._cultureID) {
|
|
6628
6778
|
case CultureIDs.De_DE: return "Für das ausgewählte Dokument wurden keine zugehörigen Dokumente gefunden.";
|
|
@@ -6663,6 +6813,16 @@ export class SDKUI_Localizator {
|
|
|
6663
6813
|
default: return "Rimuovi filtro contestuale";
|
|
6664
6814
|
}
|
|
6665
6815
|
}
|
|
6816
|
+
static get RemoveDetailFromSummary_Confirm() {
|
|
6817
|
+
switch (this._cultureID) {
|
|
6818
|
+
case CultureIDs.De_DE: return "Detail entfernen? Es wird nicht archiviert.";
|
|
6819
|
+
case CultureIDs.En_US: return "Remove this detail? It won't be archived.";
|
|
6820
|
+
case CultureIDs.Es_ES: return "¿Eliminar este detalle? No se archivará.";
|
|
6821
|
+
case CultureIDs.Fr_FR: return "Supprimer ce détail ? Il ne sera pas archivé.";
|
|
6822
|
+
case CultureIDs.Pt_PT: return "Remover este detalhe? Não será arquivado.";
|
|
6823
|
+
default: return "Rimuovere questo dettaglio? Non verrà archiviato.";
|
|
6824
|
+
}
|
|
6825
|
+
}
|
|
6666
6826
|
static get RemoveFromCache() {
|
|
6667
6827
|
switch (this._cultureID) {
|
|
6668
6828
|
case CultureIDs.De_DE: return "Element aus Cache entfernen";
|
|
@@ -7149,6 +7309,16 @@ export class SDKUI_Localizator {
|
|
|
7149
7309
|
default: return "Cerca";
|
|
7150
7310
|
}
|
|
7151
7311
|
}
|
|
7312
|
+
static get SearchAndAppend() {
|
|
7313
|
+
switch (this._cultureID) {
|
|
7314
|
+
case CultureIDs.De_DE: return "Suchen und anhängen";
|
|
7315
|
+
case CultureIDs.En_US: return "Search and append";
|
|
7316
|
+
case CultureIDs.Es_ES: return "Buscar y añadir";
|
|
7317
|
+
case CultureIDs.Fr_FR: return "Rechercher et ajouter";
|
|
7318
|
+
case CultureIDs.Pt_PT: return "Pesquisar e acrescentar";
|
|
7319
|
+
default: return "Ricerca e accoda";
|
|
7320
|
+
}
|
|
7321
|
+
}
|
|
7152
7322
|
static get Search_Advanced() {
|
|
7153
7323
|
switch (this._cultureID) {
|
|
7154
7324
|
case CultureIDs.De_DE: return "Erweiterte Suche";
|
|
@@ -7259,6 +7429,16 @@ export class SDKUI_Localizator {
|
|
|
7259
7429
|
default: return "Seleziona un documento per visualizzare i dettagli";
|
|
7260
7430
|
}
|
|
7261
7431
|
}
|
|
7432
|
+
static get SelectDcmtTypeForDetailArchiving() {
|
|
7433
|
+
switch (this._cultureID) {
|
|
7434
|
+
case CultureIDs.De_DE: return "Dokumenttyp auswählen, für den die Details archiviert werden sollen";
|
|
7435
|
+
case CultureIDs.En_US: return "Select the document type for which to archive the details";
|
|
7436
|
+
case CultureIDs.Es_ES: return "Seleccionar el tipo de documento sobre el cual archivar los detalles";
|
|
7437
|
+
case CultureIDs.Fr_FR: return "Sélectionner le type de document sur lequel archiver les détails";
|
|
7438
|
+
case CultureIDs.Pt_PT: return "Selecionar o tipo de documento no qual arquivar os detalhes";
|
|
7439
|
+
default: return "Selezionare il tipo documento sul quale effettuare l'archiviazione dei dettagli";
|
|
7440
|
+
}
|
|
7441
|
+
}
|
|
7262
7442
|
static get SelectArchiveToStart() {
|
|
7263
7443
|
switch (this._cultureID) {
|
|
7264
7444
|
case CultureIDs.De_DE: return "Klicken Sie auf Archivieren, um zu beginnen.";
|
|
@@ -7590,6 +7770,16 @@ export class SDKUI_Localizator {
|
|
|
7590
7770
|
default: return "Mostra tutti";
|
|
7591
7771
|
}
|
|
7592
7772
|
}
|
|
7773
|
+
static get ShowArchivedDetails() {
|
|
7774
|
+
switch (this._cultureID) {
|
|
7775
|
+
case CultureIDs.De_DE: return "Bereits archivierte Details anzeigen";
|
|
7776
|
+
case CultureIDs.En_US: return "Show already archived details";
|
|
7777
|
+
case CultureIDs.Es_ES: return "Mostrar los detalles ya archivados";
|
|
7778
|
+
case CultureIDs.Fr_FR: return "Afficher les détails déjà archivés";
|
|
7779
|
+
case CultureIDs.Pt_PT: return "Mostrar os detalhes já arquivados";
|
|
7780
|
+
default: return "Mostra i dettagli già archiviati";
|
|
7781
|
+
}
|
|
7782
|
+
}
|
|
7593
7783
|
static get ShowColumnSelection() {
|
|
7594
7784
|
switch (this._cultureID) {
|
|
7595
7785
|
case CultureIDs.De_DE: return "Spaltenauswahl anzeigen";
|
|
@@ -7600,6 +7790,16 @@ export class SDKUI_Localizator {
|
|
|
7600
7790
|
default: return "Mostra selezione colonne";
|
|
7601
7791
|
}
|
|
7602
7792
|
}
|
|
7793
|
+
static get ShowDcmtTypes() {
|
|
7794
|
+
switch (this._cultureID) {
|
|
7795
|
+
case CultureIDs.De_DE: return "Dokumenttypen anzeigen";
|
|
7796
|
+
case CultureIDs.En_US: return "Show document types";
|
|
7797
|
+
case CultureIDs.Es_ES: return "Mostrar tipos de documento";
|
|
7798
|
+
case CultureIDs.Fr_FR: return "Afficher les types de document";
|
|
7799
|
+
case CultureIDs.Pt_PT: return "Mostrar tipos de documento";
|
|
7800
|
+
default: return "Mostra tipi documento";
|
|
7801
|
+
}
|
|
7802
|
+
}
|
|
7603
7803
|
static get ShowFloatingBar() {
|
|
7604
7804
|
switch (this._cultureID) {
|
|
7605
7805
|
case CultureIDs.De_DE: return "Floating-Leiste anzeigen";
|
|
@@ -7640,6 +7840,16 @@ export class SDKUI_Localizator {
|
|
|
7640
7840
|
default: return "Mostra dettagli";
|
|
7641
7841
|
}
|
|
7642
7842
|
}
|
|
7843
|
+
static get ShowDetailsToArchive() {
|
|
7844
|
+
switch (this._cultureID) {
|
|
7845
|
+
case CultureIDs.De_DE: return "Zu archivierende Details anzeigen";
|
|
7846
|
+
case CultureIDs.En_US: return "Show details to archive";
|
|
7847
|
+
case CultureIDs.Es_ES: return "Mostrar los detalles a archivar";
|
|
7848
|
+
case CultureIDs.Fr_FR: return "Afficher les détails à archiver";
|
|
7849
|
+
case CultureIDs.Pt_PT: return "Mostrar os detalhes a arquivar";
|
|
7850
|
+
default: return "Mostra i dettagli da archiviare";
|
|
7851
|
+
}
|
|
7852
|
+
}
|
|
7643
7853
|
static get ShowDetailsWithZeroDocs() {
|
|
7644
7854
|
switch (this._cultureID) {
|
|
7645
7855
|
case CultureIDs.De_DE: return "Details mit 0 Dokumenten anzeigen";
|
|
@@ -7690,6 +7900,26 @@ export class SDKUI_Localizator {
|
|
|
7690
7900
|
default: return "Mostra il pannello sinistro";
|
|
7691
7901
|
}
|
|
7692
7902
|
}
|
|
7903
|
+
static get ShowMasterInfo() {
|
|
7904
|
+
switch (this._cultureID) {
|
|
7905
|
+
case CultureIDs.De_DE: return "Master-Informationen anzeigen";
|
|
7906
|
+
case CultureIDs.En_US: return "Show master information";
|
|
7907
|
+
case CultureIDs.Es_ES: return "Mostrar la información del maestro";
|
|
7908
|
+
case CultureIDs.Fr_FR: return "Afficher les informations du maître";
|
|
7909
|
+
case CultureIDs.Pt_PT: return "Mostrar as informações do mestre";
|
|
7910
|
+
default: return "Mostra le informazioni del master";
|
|
7911
|
+
}
|
|
7912
|
+
}
|
|
7913
|
+
static get ShowPartialResults() {
|
|
7914
|
+
switch (this._cultureID) {
|
|
7915
|
+
case CultureIDs.De_DE: return "Teilergebnisse anzeigen";
|
|
7916
|
+
case CultureIDs.En_US: return "Show partial results";
|
|
7917
|
+
case CultureIDs.Es_ES: return "Mostrar resultados parciales";
|
|
7918
|
+
case CultureIDs.Fr_FR: return "Afficher les résultats partiels";
|
|
7919
|
+
case CultureIDs.Pt_PT: return "Mostrar resultados parciais";
|
|
7920
|
+
default: return "Mostra risultati parziali";
|
|
7921
|
+
}
|
|
7922
|
+
}
|
|
7693
7923
|
static get ShowSearch() {
|
|
7694
7924
|
switch (this._cultureID) {
|
|
7695
7925
|
case CultureIDs.De_DE: return "Suche anzeigen";
|
|
@@ -7950,6 +8180,16 @@ export class SDKUI_Localizator {
|
|
|
7950
8180
|
default: return "Stato e risposta";
|
|
7951
8181
|
}
|
|
7952
8182
|
}
|
|
8183
|
+
static get StopOnFirstError() {
|
|
8184
|
+
switch (this._cultureID) {
|
|
8185
|
+
case CultureIDs.De_DE: return "Beim ersten Fehler abbrechen";
|
|
8186
|
+
case CultureIDs.En_US: return "Stop at the first error";
|
|
8187
|
+
case CultureIDs.Es_ES: return "Detener en el primer error";
|
|
8188
|
+
case CultureIDs.Fr_FR: return "Arrêter à la première erreur";
|
|
8189
|
+
case CultureIDs.Pt_PT: return "Parar no primeiro erro";
|
|
8190
|
+
default: return "Interrompi al primo errore";
|
|
8191
|
+
}
|
|
8192
|
+
}
|
|
7953
8193
|
static get Subject() {
|
|
7954
8194
|
switch (this._cultureID) {
|
|
7955
8195
|
case CultureIDs.De_DE: return "Betreff";
|
package/lib/helper/TMIcons.d.ts
CHANGED
|
@@ -271,6 +271,7 @@ export declare function IconWizard4(props: React.SVGProps<SVGSVGElement>): impor
|
|
|
271
271
|
export declare function IconNew(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
272
272
|
export declare function IconFileOpenOutline(props: Readonly<React.SVGProps<SVGSVGElement>>): import("react/jsx-runtime").JSX.Element;
|
|
273
273
|
export declare function IconArchiveDetail(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
274
|
+
export declare function IconArchiveMultipleDetailDocuments(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
274
275
|
export declare function IconArchiveMaster(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
275
276
|
export declare function IconPair(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
|
276
277
|
export declare function IconUnpair(props: React.SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
|
package/lib/helper/TMIcons.js
CHANGED
|
@@ -673,6 +673,9 @@ export function IconFileOpenOutline(props) {
|
|
|
673
673
|
export function IconArchiveDetail(props) {
|
|
674
674
|
return (_jsxs("svg", { fontSize: props.fontSize ?? FONTSIZE, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "1em", height: "1em", ...props, children: [" ", _jsx("path", { fill: "currentColor", d: "m20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27M12 17.5L6.5 12H10v-2h4v2h3.5zM5.12 5l.81-1h12l.94 1z" }), " "] }));
|
|
675
675
|
}
|
|
676
|
+
export function IconArchiveMultipleDetailDocuments(props) {
|
|
677
|
+
return (_jsxs("svg", { fontSize: props.fontSize ?? FONTSIZE, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 48 48", width: "1em", height: "1em", ...props, children: [_jsx("path", { fill: "currentColor", d: "M40,35v5H8v-5H4v5c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4v-5H40z" }), _jsxs("g", { fill: "currentColor", children: [_jsx("polygon", { points: "24,23.4 17,15 31,15" }), _jsx("rect", { x: "22", y: "4", width: "4", height: "14" }), _jsx("path", { d: "M31.5,26.9L30.8,28l3.5,1.9l0.6-1.2c1.6-3,2.6-4.7,3.5-5.2C39.3,23,41,23,44,23v-4C36.3,19,35.6,19.4,31.5,26.9z" }), _jsx("polygon", { points: "38.4,31 29.4,35 28,25" }), _jsx("path", { d: "M16.5,26.9l0.6,1.2L13.6,30L13,28.8c-1.6-3-2.6-4.7-3.5-5.2C8.7,23,7,23,4,23v-4C11.7,19,12.4,19.4,16.5,26.9z" }), _jsx("polygon", { points: "20,25 18.6,35 9.6,31" })] })] }));
|
|
678
|
+
}
|
|
676
679
|
export function IconArchiveMaster(props) {
|
|
677
680
|
return (_jsxs("svg", { fontSize: props.fontSize ?? FONTSIZE, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "1em", height: "1em", ...props, children: [" ", _jsx("path", { fill: "currentColor", d: "m20.55 5.22l-1.39-1.68A1.51 1.51 0 0 0 18 3H6c-.47 0-.88.21-1.15.55L3.46 5.22C3.17 5.57 3 6.01 3 6.5V19a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6.5c0-.49-.17-.93-.45-1.28M12 9.5l5.5 5.5H14v2h-4v-2H6.5zM5.12 5l.82-1h12l.93 1z" }), " "] }));
|
|
678
681
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MetadataFormats } from '@topconsultnpm/sdk-ts';
|
|
2
|
+
/** Testo mostrato in una colonna per una riga: è quello su cui va cercato ciò che l'utente digita */
|
|
3
|
+
export type SearchTextGetter = (rowData: any) => string;
|
|
4
|
+
/** Testo con cui una data viene mostrata nella griglia: è quello che l'utente vede e quindi quello che cerca */
|
|
5
|
+
export declare const getDateDisplayText: (value: any, format: MetadataFormats | undefined, formatCulture: string | undefined | null) => string;
|
|
6
|
+
/** Testo con cui un numero viene mostrato nella griglia (separatore delle migliaia, valuta, decimali) */
|
|
7
|
+
export declare const getNumberDisplayText: (value: any, format: MetadataFormats | undefined, formatCulture: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Dirotta la ricerca della griglia sul testo mostrato, per le colonne indicate (chiave: il `dataField`).
|
|
10
|
+
*
|
|
11
|
+
* La ricerca di DevExtreme lavora sul valore archiviato, quindi non trova nulla dove il testo mostrato è
|
|
12
|
+
* diverso:
|
|
13
|
+
* - **date**, che nei dati sono stringhe ISO: DevExtreme prova a interpretare il testo digitato con il
|
|
14
|
+
* formato della colonna, non riesce (il formato è un formatter personalizzato, non un pattern) e scarta
|
|
15
|
+
* la colonna dalla ricerca — cercando `29/01/2023` non trova nulla;
|
|
16
|
+
* - **numeri formattati**, per lo stesso motivo (separatore delle migliaia, simbolo di valuta);
|
|
17
|
+
* - **liste dati e utenti**, dove viene confrontata la chiave archiviata invece della descrizione
|
|
18
|
+
* visualizzata — cercando `FATTURA` non trova nulla, cercando `TD01` sì.
|
|
19
|
+
*
|
|
20
|
+
* Da passare a `customizeColumns` della griglia. Va fatto lì perché solo lì è disponibile la
|
|
21
|
+
* `calculateFilterExpression` predefinita di DevExtreme, che resta in uso per il filtro di intestazione e
|
|
22
|
+
* per il generatore di filtri: quelli funzionano già correttamente e vanno lasciati intatti.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const searchTextGetters = useMemo(() => new Map([['TM_1_2', (row) => getDateDisplayText(row?.TM_1_2, format, culture)]]), [...]);
|
|
26
|
+
* const customizeColumns = useMemo(() => customizeSearchByDisplayText(searchTextGetters), [searchTextGetters]);
|
|
27
|
+
*/
|
|
28
|
+
export declare const customizeSearchByDisplayText: (searchTextGetters: Map<string, SearchTextGetter>) => (columns: Array<any>) => void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { formatDateTimeByMetadataFormat, formatNumberByMetadataFormat } from './TMUtils';
|
|
2
|
+
/** Testo con cui una data viene mostrata nella griglia: è quello che l'utente vede e quindi quello che cerca */
|
|
3
|
+
export const getDateDisplayText = (value, format, formatCulture) => {
|
|
4
|
+
if (value === undefined || value === null || value === '')
|
|
5
|
+
return '';
|
|
6
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
7
|
+
return Number.isNaN(date.getTime()) ? '' : formatDateTimeByMetadataFormat(date, format, formatCulture);
|
|
8
|
+
};
|
|
9
|
+
/** Testo con cui un numero viene mostrato nella griglia (separatore delle migliaia, valuta, decimali) */
|
|
10
|
+
export const getNumberDisplayText = (value, format, formatCulture) => {
|
|
11
|
+
if (value === undefined || value === null || value === '')
|
|
12
|
+
return '';
|
|
13
|
+
return formatNumberByMetadataFormat(value, format, formatCulture);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Dirotta la ricerca della griglia sul testo mostrato, per le colonne indicate (chiave: il `dataField`).
|
|
17
|
+
*
|
|
18
|
+
* La ricerca di DevExtreme lavora sul valore archiviato, quindi non trova nulla dove il testo mostrato è
|
|
19
|
+
* diverso:
|
|
20
|
+
* - **date**, che nei dati sono stringhe ISO: DevExtreme prova a interpretare il testo digitato con il
|
|
21
|
+
* formato della colonna, non riesce (il formato è un formatter personalizzato, non un pattern) e scarta
|
|
22
|
+
* la colonna dalla ricerca — cercando `29/01/2023` non trova nulla;
|
|
23
|
+
* - **numeri formattati**, per lo stesso motivo (separatore delle migliaia, simbolo di valuta);
|
|
24
|
+
* - **liste dati e utenti**, dove viene confrontata la chiave archiviata invece della descrizione
|
|
25
|
+
* visualizzata — cercando `FATTURA` non trova nulla, cercando `TD01` sì.
|
|
26
|
+
*
|
|
27
|
+
* Da passare a `customizeColumns` della griglia. Va fatto lì perché solo lì è disponibile la
|
|
28
|
+
* `calculateFilterExpression` predefinita di DevExtreme, che resta in uso per il filtro di intestazione e
|
|
29
|
+
* per il generatore di filtri: quelli funzionano già correttamente e vanno lasciati intatti.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* const searchTextGetters = useMemo(() => new Map([['TM_1_2', (row) => getDateDisplayText(row?.TM_1_2, format, culture)]]), [...]);
|
|
33
|
+
* const customizeColumns = useMemo(() => customizeSearchByDisplayText(searchTextGetters), [searchTextGetters]);
|
|
34
|
+
*/
|
|
35
|
+
export const customizeSearchByDisplayText = (searchTextGetters) => (columns) => {
|
|
36
|
+
columns.forEach((column) => {
|
|
37
|
+
const getSearchText = column?.dataField ? searchTextGetters.get(column.dataField) : undefined;
|
|
38
|
+
// customizeColumns viene richiamata a ogni aggiornamento delle colonne: senza il marcatore i wrapper si anniderebbero
|
|
39
|
+
if (!getSearchText || column.tmSearchByDisplayText)
|
|
40
|
+
return;
|
|
41
|
+
const defaultCalculateFilterExpression = column.calculateFilterExpression;
|
|
42
|
+
// Senza questo DevExtreme prova a convertire il testo digitato nel tipo della colonna e, non riuscendo, la scarta
|
|
43
|
+
column.parseValue = (text) => text;
|
|
44
|
+
column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
|
|
45
|
+
if (target === 'search')
|
|
46
|
+
return [getSearchText, 'contains', filterValue];
|
|
47
|
+
return defaultCalculateFilterExpression?.apply(this, arguments);
|
|
48
|
+
};
|
|
49
|
+
column.tmSearchByDisplayText = true;
|
|
50
|
+
});
|
|
51
|
+
};
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
+
import { DcmtTypeDescriptor, MetadataDataTypes, MetadataDescriptor, MetadataFormats, RelationDescriptor } from "@topconsultnpm/sdk-ts";
|
|
1
2
|
import { MetadataValueDescriptorEx } from "../ts";
|
|
3
|
+
/** Metadati utente (esclusi quelli di sistema) del tipo documento, in ordine di visualizzazione */
|
|
4
|
+
export declare const getUserMetadataSorted: (dtd: DcmtTypeDescriptor | undefined) => Array<MetadataDescriptor>;
|
|
5
|
+
/** Formatta un valore scalare (non lista dati): date e numeri rispettano Format e FormatCulture del metadato */
|
|
6
|
+
export declare const formatScalarValue: (value: any, dataType: MetadataDataTypes | undefined, format: MetadataFormats | undefined, formatCulture: string | undefined) => string;
|
|
2
7
|
/** Check if dcmtType (mTID) has configured Detail or Many-to-Many relations */
|
|
3
8
|
export declare const hasDetailRelations: (mTID: number | undefined) => Promise<boolean>;
|
|
4
9
|
/** Check if dcmtType (mTID) has configured Master or Many-to-Many relations */
|
|
5
10
|
export declare const hasMasterRelations: (mTID: number | undefined) => Promise<boolean>;
|
|
11
|
+
export declare const getDcmtMetadataByMid: (dcmt: {
|
|
12
|
+
TID?: number;
|
|
13
|
+
DID?: number;
|
|
14
|
+
} | undefined) => Promise<Map<number, any>>;
|
|
15
|
+
export declare const mapAssociationsFromMetadata: (relation: RelationDescriptor, type: "detail" | "master", metadataByMid: Map<number, any>) => Array<{
|
|
16
|
+
mid: number;
|
|
17
|
+
value: string;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const mapRelationAssociationsToMids: (relation: RelationDescriptor, type: "detail" | "master", dcmt: {
|
|
20
|
+
TID?: number;
|
|
21
|
+
DID?: number;
|
|
22
|
+
} | undefined) => Promise<Array<{
|
|
23
|
+
mid: number;
|
|
24
|
+
value: string;
|
|
25
|
+
}>>;
|
|
6
26
|
export declare const isXMLFileExt: (fileExt: string | undefined) => boolean;
|
|
7
27
|
export declare const getButtonAttributes: (args: string | undefined, formData: MetadataValueDescriptorEx[] | undefined, selectedItems: Array<any> | undefined) => Record<string, any> | undefined;
|
|
8
28
|
export declare const getSelectedItem: (args: string | undefined, formData: MetadataValueDescriptorEx[] | undefined, item: any) => Record<string, any> | undefined;
|
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
import { RelationCacheService, RelationTypes, SDK_Globals } from "@topconsultnpm/sdk-ts";
|
|
1
|
+
import { MetadataDataTypes, RelationCacheService, RelationTypes, SDK_Globals } from "@topconsultnpm/sdk-ts";
|
|
2
|
+
import { formatDateTimeByMetadataFormat, formatNumberByMetadataFormat } from "./TMUtils";
|
|
3
|
+
/** Metadati utente (esclusi quelli di sistema) del tipo documento, in ordine di visualizzazione */
|
|
4
|
+
export const getUserMetadataSorted = (dtd) => {
|
|
5
|
+
return (dtd?.metadata ?? [])
|
|
6
|
+
.filter(md => md.id !== undefined && md.id > 100 && md.isSystem !== 1)
|
|
7
|
+
.sort((a, b) => (a.ordinalPosition ?? 0) - (b.ordinalPosition ?? 0));
|
|
8
|
+
};
|
|
9
|
+
/** Formatta un valore scalare (non lista dati): date e numeri rispettano Format e FormatCulture del metadato */
|
|
10
|
+
export const formatScalarValue = (value, dataType, format, formatCulture) => {
|
|
11
|
+
if (value === undefined || value === null || value === '')
|
|
12
|
+
return '';
|
|
13
|
+
switch (dataType) {
|
|
14
|
+
case MetadataDataTypes.DateTime: return formatDateTimeByMetadataFormat(value instanceof Date ? value : new Date(value), format, formatCulture);
|
|
15
|
+
case MetadataDataTypes.Number: return formatNumberByMetadataFormat(value, format, formatCulture ?? window.navigator.language);
|
|
16
|
+
default: return String(value);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
2
19
|
/** Check if dcmtType (mTID) has configured Detail or Many-to-Many relations */
|
|
3
20
|
export const hasDetailRelations = async (mTID) => {
|
|
4
21
|
let allRelations = await RelationCacheService.GetAllAsync();
|
|
@@ -13,6 +30,46 @@ export const hasMasterRelations = async (mTID) => {
|
|
|
13
30
|
let rdlManyToMany = allRelations?.filter(o => o.relationType == RelationTypes.ManyToMany && (o.masterTID == mTID || o.detailTID == mTID)) ?? [];
|
|
14
31
|
return rdlManyToMany.length > 0 || rdlOneToMany.length > 0;
|
|
15
32
|
};
|
|
33
|
+
// Legge i metadati di un documento
|
|
34
|
+
export const getDcmtMetadataByMid = async (dcmt) => {
|
|
35
|
+
const metadataMap = new Map();
|
|
36
|
+
if (!dcmt?.TID || !dcmt?.DID)
|
|
37
|
+
return metadataMap; // Documento non identificabile: mappa vuota
|
|
38
|
+
const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
|
|
39
|
+
if (!searchEngine)
|
|
40
|
+
return metadataMap; // Nessuna sessione attiva: mappa vuota
|
|
41
|
+
const allMetadata = await searchEngine.GetMetadataAsync(dcmt.TID, dcmt.DID, false);
|
|
42
|
+
const row = allMetadata?.dtdResult?.rows?.[0]; // Prima (e unica) riga = il documento richiesto
|
|
43
|
+
const mids = allMetadata?.selectMIDs; // MID nello stesso ordine dei valori di riga
|
|
44
|
+
if (row && mids)
|
|
45
|
+
mids.forEach((mid, index) => metadataMap.set(mid, row[index])); // Accoppia mid -> valore per posizione
|
|
46
|
+
return metadataMap;
|
|
47
|
+
};
|
|
48
|
+
// Mappa le associazioni della relazione nei MID di destinazione, usando i metadati sorgente già letti.
|
|
49
|
+
// 'detail' = archivio dettagli dal master (sorgente item1 -> destinazione item2); 'master' = archivio master dal dettaglio (item2 -> item1).
|
|
50
|
+
// Emette una voce per ogni associazione, anche vuota, per coprire tutti i collegamenti.
|
|
51
|
+
export const mapAssociationsFromMetadata = (relation, type, metadataByMid) => {
|
|
52
|
+
if (!relation.associations || relation.associations.length === 0)
|
|
53
|
+
return []; // Relazione senza collegamenti
|
|
54
|
+
return relation.associations.map(assoc => {
|
|
55
|
+
const sourceMid = type === 'detail' ? (assoc.item1 ?? 0) : (assoc.item2 ?? 0); // MID da cui leggere il valore
|
|
56
|
+
const targetMid = type === 'detail' ? (assoc.item2 ?? 0) : (assoc.item1 ?? 0); // MID da valorizzare
|
|
57
|
+
const value = metadataByMid.get(sourceMid); // Valore sorgente (può mancare)
|
|
58
|
+
return { mid: targetMid, value: value !== undefined && value !== null ? value.toString() : '' }; // Assente/null -> stringa vuota
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
// Legge il documento sorgente (master per 'detail', dettaglio per 'master') e mappa le associazioni nei MID di destinazione.
|
|
62
|
+
// Per letture ripetute dello stesso documento, riusare la mappa e chiamare direttamente `mapAssociationsFromMetadata`.
|
|
63
|
+
export const mapRelationAssociationsToMids = async (relation, type, dcmt) => {
|
|
64
|
+
if (!relation.associations || relation.associations.length === 0)
|
|
65
|
+
return []; // Relazione senza collegamenti
|
|
66
|
+
if (!dcmt?.TID || !dcmt?.DID)
|
|
67
|
+
return []; // Documento sorgente non identificabile
|
|
68
|
+
const metadataByMid = await getDcmtMetadataByMid(dcmt);
|
|
69
|
+
if (metadataByMid.size === 0)
|
|
70
|
+
return []; // Nessun metadato leggibile: [] come nel flusso originale (niente collegamenti a vuoto)
|
|
71
|
+
return mapAssociationsFromMetadata(relation, type, metadataByMid);
|
|
72
|
+
};
|
|
16
73
|
export const isXMLFileExt = (fileExt) => {
|
|
17
74
|
const fileExtension = fileExt?.toLowerCase() ?? '';
|
|
18
75
|
switch (fileExtension) {
|
package/lib/helper/helpers.d.ts
CHANGED
|
@@ -2,6 +2,15 @@ import { Colors as ColorsType } from "../components/base/TMEditorBase";
|
|
|
2
2
|
import { DeviceType } from "../components";
|
|
3
3
|
import { AppModules, DataColumnDescriptor, DcmtTypeDescriptor, ITopMediaSession, MetadataDescriptor, QueryDescriptor, SearchResultDescriptor, TaskDescriptor } from "@topconsultnpm/sdk-ts";
|
|
4
4
|
import { FileExtensionHandler, FormModes, moduleTypes } from "../ts";
|
|
5
|
+
import React from "react";
|
|
6
|
+
/**
|
|
7
|
+
* Handler di hover per elementi con stili inline: applica `over` all'ingresso del mouse e `out` all'uscita.
|
|
8
|
+
* Da spandere sull'elemento: `{...hoverStyle({ background: 'red' }, { background: 'transparent' })}`
|
|
9
|
+
*/
|
|
10
|
+
export declare const hoverStyle: (over: React.CSSProperties, out: React.CSSProperties) => {
|
|
11
|
+
onMouseEnter: (e: React.MouseEvent<HTMLElement>) => CSSStyleDeclaration & React.CSSProperties;
|
|
12
|
+
onMouseLeave: (e: React.MouseEvent<HTMLElement>) => CSSStyleDeclaration & React.CSSProperties;
|
|
13
|
+
};
|
|
5
14
|
declare const calcResponsiveSizes: (deviceType: DeviceType | undefined, desktopSize: string, tabletSize: string, mobileSize: string) => string;
|
|
6
15
|
declare const taskModalSizes: (deviceType: DeviceType | undefined, formMode: FormModes) => {
|
|
7
16
|
width: string;
|
|
@@ -35,6 +44,17 @@ export declare const getDataColumnName: (fromTID: number | undefined, dtColumn:
|
|
|
35
44
|
*/
|
|
36
45
|
export declare const generateUniqueColumnKeys: (columns: DataColumnDescriptor[] | undefined, fromTID: number | undefined) => string[];
|
|
37
46
|
export declare const searchResultDescriptorToSimpleArray: (searchResult: SearchResultDescriptor | undefined) => any[] | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Unisce ("accoda") il risultato di una nuova ricerca a quello precedente, sullo stesso tipo documento.
|
|
49
|
+
* - Le righe della nuova ricerca vengono messe in cima (più recenti in alto)
|
|
50
|
+
* - Le righe duplicate sono accettate: lo stesso documento può comparire più volte
|
|
51
|
+
* - Aggiorna i contatori globali (dcmtsFound / dcmtsReturned) sul totale unito
|
|
52
|
+
*
|
|
53
|
+
* @param previous Risultato attualmente in memoria (può essere undefined al primo giro)
|
|
54
|
+
* @param next Nuovo risultato appena ottenuto
|
|
55
|
+
* @returns Un nuovo SearchResultDescriptor con le righe unite, oppure il singolo risultato disponibile
|
|
56
|
+
*/
|
|
57
|
+
export declare const mergeSearchResultsAppend: (previous: SearchResultDescriptor | undefined, next: SearchResultDescriptor | undefined) => SearchResultDescriptor | undefined;
|
|
38
58
|
export declare const getCompleteMetadataName: (dcmtTypeName: string | undefined, metadataName: string | undefined) => string;
|
|
39
59
|
export declare const getQueryCountAsync: (qd: QueryDescriptor, showSpinner: boolean) => Promise<void>;
|
|
40
60
|
export declare function getTIDByMID(mid: number | undefined, defaultTid?: number): number;
|