@topconsultnpm/sdkui-react 6.21.0-dev2.20 → 6.21.0-dev2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
-
import { LayoutModes, MetadataDataDomains, AccessLevels, MetadataDataTypes, SDK_Globals, DcmtTypeListCacheService, DataColumnTypes } from '@topconsultnpm/sdk-ts';
|
|
3
|
+
import { LayoutModes, MetadataDataDomains, AccessLevels, MetadataDataTypes, SDK_Globals, DcmtTypeListCacheService, DataColumnTypes, DataListViewModes } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import styled from 'styled-components';
|
|
5
5
|
import { SDKUI_Localizator, stringIsNullOrEmpty } from '../../helper';
|
|
6
6
|
import TMDataGrid, { TMDataGridPageSize } from '../base/TMDataGrid';
|
|
@@ -9,14 +9,17 @@ import TMSpinner from '../base/TMSpinner';
|
|
|
9
9
|
import TMCheckBox from '../editors/TMCheckBox';
|
|
10
10
|
import TMPanel from '../base/TMPanel';
|
|
11
11
|
import TMModal from '../base/TMModal';
|
|
12
|
+
import { useDataListItem } from '../../hooks/useDataListItem';
|
|
13
|
+
import { useDataUserIdItem } from '../../hooks/useDataUserIdItem';
|
|
12
14
|
const StyledDistinctValues = styled.div `display: flex; flex-direction: column; height: 100%; overflow: hidden; gap: 10px;`;
|
|
13
|
-
const StyledPanelContainer = styled.div ` width: 100%; height: 100%; padding: 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; `;
|
|
14
15
|
const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppendMode = true, showHeader = true, isModal, separator = " ", onSelectionChanged, onClosePanelCallback }) => {
|
|
15
16
|
const [focusedItem, setFocusedItem] = useState();
|
|
16
17
|
const [dataSource, setDataSource] = useState([]);
|
|
17
18
|
const [isAppendMode, setIsAppendMode] = useState(false);
|
|
18
19
|
const [md, setMd] = useState();
|
|
19
20
|
const [currentValue, setCurrentValue] = useState('');
|
|
21
|
+
const { loadDataListsAsync, renderDataListCell, dataListsCache } = useDataListItem();
|
|
22
|
+
const { loadUsersAsync, renderUserIdViewer, usersCache } = useDataUserIdItem();
|
|
20
23
|
useEffect(() => {
|
|
21
24
|
getDistictValuesAsync();
|
|
22
25
|
}, [mid]);
|
|
@@ -57,8 +60,23 @@ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppend
|
|
|
57
60
|
try {
|
|
58
61
|
TMSpinner.show({ description: 'Caricamento dei valori distinti...' });
|
|
59
62
|
let dtd = await DcmtTypeListCacheService.GetAsync(tid, true);
|
|
60
|
-
|
|
63
|
+
const currentMd = dtd?.metadata?.find(o => o.id === mid);
|
|
64
|
+
setMd(currentMd);
|
|
61
65
|
let result = await SDK_Globals.tmSession?.NewSearchEngine().GetDistinctValuesAsync(tid, mid, 10000);
|
|
66
|
+
// Load DataList or UserID cache based on metadata domain
|
|
67
|
+
if (currentMd?.dataDomain === MetadataDataDomains.DataList && currentMd.dataListID) {
|
|
68
|
+
await loadDataListsAsync(new Set([currentMd.dataListID]));
|
|
69
|
+
}
|
|
70
|
+
if (currentMd?.dataDomain === MetadataDataDomains.UserID && result?.dtdResult?.rows) {
|
|
71
|
+
const userIDs = new Set();
|
|
72
|
+
result.dtdResult.rows.forEach((row) => {
|
|
73
|
+
const userId = Number(row[0]);
|
|
74
|
+
if (userId && userId > 0) {
|
|
75
|
+
userIDs.add(userId);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
await loadUsersAsync(userIDs);
|
|
79
|
+
}
|
|
62
80
|
setDataSource(convertDataTableToObject(result?.dtdResult));
|
|
63
81
|
}
|
|
64
82
|
catch (e) {
|
|
@@ -69,31 +87,27 @@ const TMDistinctValues = ({ tid, mid, layoutMode = LayoutModes.None, allowAppend
|
|
|
69
87
|
TMSpinner.hide();
|
|
70
88
|
}
|
|
71
89
|
};
|
|
72
|
-
const getDcmtTypeAsync = async () => {
|
|
73
|
-
if (!tid)
|
|
74
|
-
return;
|
|
75
|
-
try {
|
|
76
|
-
TMSpinner.show({ description: 'Caricamento dei valori distinti...' });
|
|
77
|
-
let dtd = await DcmtTypeListCacheService.GetAsync(tid, true);
|
|
78
|
-
setMd(dtd?.metadata?.find(o => o.id === mid));
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
let err = e;
|
|
82
|
-
TMExceptionBoxManager.show({ exception: err });
|
|
83
|
-
}
|
|
84
|
-
finally {
|
|
85
|
-
TMSpinner.hide();
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
90
|
const onFocusedRowChanged = useCallback((e) => {
|
|
89
91
|
setFocusedItem(e.row?.data);
|
|
90
92
|
}, []);
|
|
93
|
+
const valueCellRender = useCallback((cellData) => {
|
|
94
|
+
if (!cellData || cellData.value === undefined)
|
|
95
|
+
return null;
|
|
96
|
+
if (md?.dataDomain === MetadataDataDomains.DataList && md.dataListID) {
|
|
97
|
+
return renderDataListCell(cellData.value, md.dataListID, md.dataListViewMode ?? DataListViewModes.None);
|
|
98
|
+
}
|
|
99
|
+
if (md?.dataDomain === MetadataDataDomains.UserID) {
|
|
100
|
+
return renderUserIdViewer(Number(cellData.value), true);
|
|
101
|
+
}
|
|
102
|
+
return _jsx("div", { children: cellData.text });
|
|
103
|
+
}, [md, renderDataListCell, renderUserIdViewer]);
|
|
91
104
|
const customColumns = useMemo(() => {
|
|
105
|
+
const needsCellRender = md?.dataDomain === MetadataDataDomains.DataList || md?.dataDomain === MetadataDataDomains.UserID;
|
|
92
106
|
return ([
|
|
93
|
-
{ dataField: 'value', dataType: md?.dataType === MetadataDataTypes.DateTime ? 'date' : 'string', caption: md?.nameLoc, width: 'min-content' },
|
|
107
|
+
{ dataField: 'value', dataType: md?.dataType === MetadataDataTypes.DateTime ? 'date' : 'string', caption: md?.nameLoc, width: 'min-content', ...(needsCellRender && { cellRender: valueCellRender }) },
|
|
94
108
|
{ dataField: 'Count', dataType: 'number', caption: 'N°' }
|
|
95
109
|
]);
|
|
96
|
-
}, [md]);
|
|
110
|
+
}, [md, valueCellRender]);
|
|
97
111
|
const customSummary = useMemo(() => {
|
|
98
112
|
return ({
|
|
99
113
|
totalItems: [
|
|
@@ -695,6 +695,7 @@ export declare class SDKUI_Localizator {
|
|
|
695
695
|
static get Subject(): "Betreff" | "Subject" | "Asunto" | "Objet" | "Assunto" | "Oggetto";
|
|
696
696
|
static get Summary(): "Zusammenfassung" | "Summary" | "Resumen" | "Résumé" | "Resumo" | "Riepilogo";
|
|
697
697
|
static get SwitchUser(): "Benutzer wechseln" | "Switch user" | "Cambiar usuario" | "Changer d'utilisateur" | "Mudar de usuário" | "Cambia utente";
|
|
698
|
+
static get SystemUser(): string;
|
|
698
699
|
static get TargetedSearch(): "Gezielte Suche" | "Targeted search" | "Búsqueda dirigida" | "Recherche ciblée" | "Pesquisa direcionada" | "Ricerca puntuale";
|
|
699
700
|
static get TaskAssignedMessage(): "Aufgabe wurde vom Benutzer \"{{0}}\" zugewiesen." | "Task assigned by user \"{{0}}\"." | "Tarea asignada por el usuario \"{{0}}\"." | "Tâche assignée par l'utilisateur \"{{0}}\"." | "Tarefa atribuída pelo usuário \"{{0}}\"." | "Attività assegnata dall'utente \"{{0}}\".";
|
|
700
701
|
static get MoreInfoRequestedTo(): "Weitere Informationen angefordert von \"{{0}}\"." | "More information requested to \"{{0}}\"." | "Solicitud de más información a \"{{0}}\"." | "Demande d'informations supplémentaires à \"{{0}}\"." | "Pedido de mais informações a \"{{0}}\"." | "Richiesta di maggiori informazioni a \"{{0}}\".";
|
|
@@ -6924,6 +6924,16 @@ export class SDKUI_Localizator {
|
|
|
6924
6924
|
default: return "Cambia utente";
|
|
6925
6925
|
}
|
|
6926
6926
|
}
|
|
6927
|
+
static get SystemUser() {
|
|
6928
|
+
switch (this._cultureID) {
|
|
6929
|
+
case CultureIDs.De_DE: return "Systembenutzer";
|
|
6930
|
+
case CultureIDs.En_US: return "System user";
|
|
6931
|
+
case CultureIDs.Es_ES: return "Usuario del sistema";
|
|
6932
|
+
case CultureIDs.Fr_FR: return "Utilisateur système";
|
|
6933
|
+
case CultureIDs.Pt_PT: return "Usuário do sistema";
|
|
6934
|
+
default: return "Utente di sistema";
|
|
6935
|
+
}
|
|
6936
|
+
}
|
|
6927
6937
|
static get TargetedSearch() {
|
|
6928
6938
|
switch (this._cultureID) {
|
|
6929
6939
|
case CultureIDs.De_DE: return "Gezielte Suche";
|
|
@@ -15,7 +15,7 @@ export const useDataUserIdItem = () => {
|
|
|
15
15
|
if (userIDs.size === 0)
|
|
16
16
|
return;
|
|
17
17
|
try {
|
|
18
|
-
const results = await Promise.all(Array.from(userIDs).map(id => UserListCacheService.GetAsync(id).then(user => ({ id, user }))
|
|
18
|
+
const results = await Promise.all(Array.from(userIDs).filter(id => id > 0).map(id => UserListCacheService.GetAsync(id).then(user => ({ id, user }))
|
|
19
19
|
.catch(() => ({ id, user: undefined }))));
|
|
20
20
|
const newCache = new Map();
|
|
21
21
|
results.forEach(({ id, user }) => {
|
|
@@ -70,17 +70,19 @@ export const useDataUserIdItem = () => {
|
|
|
70
70
|
* @returns Elemento React per visualizzare l'utente
|
|
71
71
|
*/
|
|
72
72
|
const renderUserIdViewer = useCallback((userId, showIcon = false, showTitile = true) => {
|
|
73
|
-
const ud = userId && userId > 0 ? getUserItem(userId) : undefined;
|
|
73
|
+
const ud = userId !== undefined && userId > 0 ? getUserItem(userId) : undefined;
|
|
74
74
|
const getIcon = () => {
|
|
75
75
|
if (!showIcon)
|
|
76
76
|
return null;
|
|
77
|
-
if (
|
|
77
|
+
if (userId === undefined)
|
|
78
78
|
return null;
|
|
79
79
|
return ud ? _jsx(TMUserIcon, { ud: ud }) : _jsx("span", { title: showTitile ? SDKUI_Localizator.ValueNotPresent : undefined, style: { display: 'inline-flex', alignItems: 'center' }, children: _jsx(IconWarning, { color: TMColors.warning }) });
|
|
80
80
|
};
|
|
81
81
|
const getDescription = () => {
|
|
82
|
-
if (
|
|
82
|
+
if (userId == null)
|
|
83
83
|
return undefined;
|
|
84
|
+
if (userId === 0)
|
|
85
|
+
return SDKUI_Localizator.SystemUser;
|
|
84
86
|
return ud ? getCompleteUserName(ud.domain, ud.name) : userId.toString() ?? SDKUI_Localizator.NoneSelection;
|
|
85
87
|
};
|
|
86
88
|
return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: '4px', lineHeight: 1 }, children: [getIcon(), _jsx("span", { style: { lineHeight: 'normal' }, children: getDescription() })] }));
|