@topconsultnpm/sdkui-react-beta 6.14.17 → 6.14.19
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/base/TMFileManager.js +2 -1
- package/lib/components/base/TMFileManagerThumbnailItems.js +1 -1
- package/lib/components/base/TMPanel.js +7 -7
- package/lib/components/choosers/TMDataListItemChooser.js +4 -3
- package/lib/components/choosers/TMDynDataListItemChooser.js +6 -2
- package/lib/components/choosers/TMUserChooser.js +4 -3
- package/lib/components/features/archive/TMArchive.js +4 -4
- package/lib/components/features/documents/TMDcmtForm.js +10 -10
- package/lib/components/viewers/TMDataListItemViewer.js +3 -0
- package/lib/services/platform_services.d.ts +2 -2
- package/package.json +1 -1
|
@@ -146,7 +146,8 @@ const TMFileManager = (props) => {
|
|
|
146
146
|
// Render each TreeView item (directories) with custom styling/icons
|
|
147
147
|
const renderTreeViewItem = (itemData) => {
|
|
148
148
|
const isSelected = selectedFolder && selectedFolder.id === itemData.id;
|
|
149
|
-
|
|
149
|
+
const tooltipContent = _jsxs("div", { style: { textAlign: "center" }, children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "ID" }), ": ", itemData.id] });
|
|
150
|
+
return (_jsxs("div", { style: { whiteSpace: "nowrap", display: "flex", alignItems: "center" }, className: isSelected ? 'treeview-selected-item-manager' : '', children: [_jsx(TMTooltip, { content: tooltipContent, children: _jsx(IconFolder, { style: { marginRight: 5, color: '#e6c200' } }) }), itemData.text, " (", itemData.subFileFolderCount, ")"] }));
|
|
150
151
|
};
|
|
151
152
|
const handleTreeViewContextMenu = (e) => {
|
|
152
153
|
if (!e)
|
|
@@ -120,7 +120,7 @@ const TMFileManagerThumbnailItems = (props) => {
|
|
|
120
120
|
bgHoverColor = isSelected ? colors.PRIMARY_BLUE : "#fff59d";
|
|
121
121
|
}
|
|
122
122
|
const editLockTooltipText = _jsxs(_Fragment, { children: [_jsxs("div", { style: { textAlign: "center" }, children: [editMode && (_jsxs(_Fragment, { children: [_jsx("i", { style: { fontSize: "18px", color: colors.MEDIUM_GREEN, fontWeight: "bold" }, className: "dx-icon-edit" }), SDKUI_Localizator.CurrentUserExtract] })), lockMode && (_jsxs(_Fragment, { children: [_jsx("i", { style: { fontSize: "18px", color: colors.MEDIUM_GREEN, fontWeight: "bold" }, className: "dx-icon-lock" }), SDKUI_Localizator.ExtractedFromOtherUser] }))] }), _jsx("hr", {}), _jsxs("div", { style: { textAlign: "left" }, children: [_jsxs("ul", { children: [_jsxs("li", { children: ["- ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDKUI_Localizator.ExtractedBy }), ": ", item.checkOutUserName ?? '-', " (ID: ", item.checkOutUserID, ")"] }), _jsxs("li", { children: ["- ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDKUI_Localizator.ExtractedOn }), ": ", Globalization.getDateTimeDisplayValue(item.checkoutDate?.toString())] })] }), _jsx("hr", {}), _jsx("ul", { children: _jsxs("li", { children: ["- ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDKUI_Localizator.Version }), ": ", item.version ?? 1] }) }), _jsx("hr", {}), _jsxs("ul", { children: [_jsxs("li", { children: ["- ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDKUI_Localizator.Type }), ": ", item.ext] }), _jsxs("li", { children: ["- ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDKUI_Localizator.CreationTime }), ": ", Globalization.getDateTimeDisplayValue(item.creationTime?.toString())] }), _jsxs("li", { children: ["- ", _jsx("span", { style: { fontWeight: 'bold' }, children: SDKUI_Localizator.LastUpdateTime }), ": ", Globalization.getDateTimeDisplayValue(item.lastUpdateTime?.toString())] })] })] })] });
|
|
123
|
-
const tooltipContent = (_jsxs("div", { style: { textAlign: 'left' }, children: [_jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Name, ":"] }), " ", item.name ?? '-'] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Author, ":"] }), " ", item.updaterName ?? '-'] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Version, ":"] }), " ", item.version] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Size, ":"] }), " ", formatBytes(item.size ?? 0)] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.CreationTime, ":"] }), " ", Globalization.getDateTimeDisplayValue(item.creationTime)] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.LastUpdateTime, ":"] }), " ", Globalization.getDateTimeDisplayValue(item.lastUpdateTime)] })] }));
|
|
123
|
+
const tooltipContent = (_jsxs("div", { style: { textAlign: 'left' }, children: [_jsxs("div", { children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "ID:" }), " ", item.id ?? '-'] }), _jsxs("div", { children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "DID:" }), " ", item.did ?? '-'] }), _jsxs("div", { children: [_jsx("span", { style: { fontWeight: 'bold' }, children: "TID:" }), " ", item.tid ?? '-'] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Name, ":"] }), " ", item.name ?? '-'] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Author, ":"] }), " ", item.updaterName ?? '-'] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Version, ":"] }), " ", item.version] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.Size, ":"] }), " ", formatBytes(item.size ?? 0)] }), _jsx("hr", {}), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.CreationTime, ":"] }), " ", Globalization.getDateTimeDisplayValue(item.creationTime)] }), _jsxs("div", { children: [_jsxs("span", { style: { fontWeight: 'bold' }, children: [SDKUI_Localizator.LastUpdateTime, ":"] }), " ", Globalization.getDateTimeDisplayValue(item.lastUpdateTime)] })] }));
|
|
124
124
|
return _jsx(FileItemContainer, { ref: containerRef, id: item.id.toString(), "$backgroundColor": bgColor, "$bgHoverColor": bgHoverColor, "$textColor": textColor, onDoubleClick: () => onDoubleClickHandler(item), onContextMenu: (e) => onContextMenu(e, item), onClick: () => onClickHandler(item), tabIndex: 0, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, children: _jsxs("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', width: '100%' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', flex: 1, minWidth: 0 }, children: [_jsxs("div", { style: { marginRight: '16px', flexShrink: 0 }, children: [getFileIcon(item.ext, item.version, tooltipContent), editMode && _jsx(TMTooltip, { content: editLockTooltipText, children: _jsx("i", { style: { fontSize: "18px", color: colors.MEDIUM_GREEN, fontWeight: "bold" }, className: "dx-icon-edit" }) }), lockMode && _jsx(TMTooltip, { content: editLockTooltipText, children: _jsx("i", { style: { fontSize: "18px", color: colors.MEDIUM_GREEN, fontWeight: "bold" }, className: "dx-icon-lock" }) })] }), _jsxs("div", { style: { overflow: 'hidden', minWidth: 0 }, children: [_jsx("div", { style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', width: '100%', display: 'block', fontSize: '1rem', fontWeight: "bold" }, children: _jsx(TMTooltip, { parentStyle: { overflow: 'hidden' }, childStyle: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', width: '100%', display: 'block' }, children: highlightText(item.name, searchText, isSelected) }) }), _jsx("div", { style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', width: '100%', display: 'block', fontSize: 'calc(1rem - 1px)' }, children: formatBytes(item.size ?? 0) })] })] }), item.version && (_jsx("div", { style: { flexShrink: 0, marginLeft: '12px', whiteSpace: 'nowrap' }, children: _jsx(TMTooltip, { content: SDKUI_Localizator.Version, children: _jsx("div", { style: { border: "2px solid #28a745", backgroundColor: "#28a745", color: "#ffffff", borderRadius: '50%', width: '30px', height: '30px', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '12px', fontWeight: 'bold' }, children: item.version }) }) }))] }) }, "item-file-manager-" + item.id);
|
|
125
125
|
}) });
|
|
126
126
|
};
|
|
@@ -79,14 +79,14 @@ const TMPanel = ({ allowMaximize = true, color, backgroundColor, backgroundColor
|
|
|
79
79
|
// Usiamo un setTimeout per dare il tempo al browser di spostare il focus
|
|
80
80
|
// e controllare se il focus è andato a un figlio che poi si è disconnesso
|
|
81
81
|
// o se il focus è uscito definitivamente dal pannello
|
|
82
|
-
setTimeout(() => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
82
|
+
// setTimeout(() => {
|
|
83
|
+
if (!document.activeElement || !document.activeElement.closest('tmpanel-container')) {
|
|
84
|
+
if (isActive) {
|
|
85
|
+
setIsActive(false);
|
|
86
|
+
onActiveChanged?.(false);
|
|
88
87
|
}
|
|
89
|
-
}
|
|
88
|
+
}
|
|
89
|
+
// }, 0); // Un piccolo ritardo per consentire al browser di stabilire il nuovo activeElement
|
|
90
90
|
}, [isActive, onActiveChanged]);
|
|
91
91
|
// handler for external maximize management
|
|
92
92
|
const handleMaximize = () => {
|
|
@@ -10,7 +10,8 @@ import TMDataListItemViewer from '../viewers/TMDataListItemViewer';
|
|
|
10
10
|
const TMDataListItemChooser = ({ labelColor, dataListId, icon, backgroundColor, showBorder = true, readOnly, openChooserBySingleClick, buttons = [], elementStyle, allowMultipleSelection, values, isModifiedWhen, label, placeHolder, titleForm, showClearButton = false, validationItems = [], onValueChanged }) => {
|
|
11
11
|
const [showChooser, setShowChooser] = useState(false);
|
|
12
12
|
const renderTemplate = () => {
|
|
13
|
-
|
|
13
|
+
const isPlaceholder = values?.[0] === placeHolder;
|
|
14
|
+
return (_jsxs(StyledDivHorizontal, { style: { minWidth: '125px', color: isPlaceholder ? '#a9a9a9' : 'inherit' }, children: [values && values.length > 0 && _jsx(TMDataListItemViewer, { dataListId: dataListId, value: values?.[0] }), values && values.length > 1 && _jsx("p", { style: { marginLeft: '10px' }, children: `(+${values.length - 1} ${values.length == 2 ? 'altro' : 'altri'})` })] }));
|
|
14
15
|
};
|
|
15
16
|
return (_jsxs(_Fragment, { children: [_jsx(TMSummary, { placeHolder: placeHolder, labelColor: labelColor, icon: icon, buttons: buttons, readOnly: readOnly, backgroundColor: backgroundColor, showBorder: showBorder, hasValue: values && values.length > 0, showClearButton: showClearButton, iconEditButton: _jsx(IconSearch, { fontSize: 16 }), onEditorClick: () => !readOnly && setShowChooser(true), elementStyle: elementStyle, isModifiedWhen: isModifiedWhen, label: label, openEditorOnSummaryClick: openChooserBySingleClick, template: renderTemplate(), onClearClick: showClearButton ? () => { onValueChanged?.([]); } : undefined, validationItems: validationItems }), showChooser &&
|
|
16
17
|
_jsx(TMDataListItemChooserForm, { allowMultipleSelection: allowMultipleSelection, title: titleForm, dataListId: dataListId, selectedIDs: values, onClose: () => setShowChooser(false), onChoose: (IDs) => { onValueChanged?.(IDs); } })] }));
|
|
@@ -20,8 +21,8 @@ const cellRenderIcon = (data) => _jsx(TMImageLibrary, { imageID: data.data?.imag
|
|
|
20
21
|
export const TMDataListItemChooserForm = (props) => {
|
|
21
22
|
const dataColumns = useMemo(() => {
|
|
22
23
|
return [
|
|
23
|
-
{
|
|
24
|
-
{
|
|
24
|
+
{ dataField: 'value', caption: SDKUI_Localizator.Value },
|
|
25
|
+
{ dataField: 'name', caption: SDKUI_Localizator.Description }
|
|
25
26
|
];
|
|
26
27
|
}, []);
|
|
27
28
|
const getItems = async (refreshCache) => {
|
|
@@ -8,6 +8,7 @@ import TMSummary from '../editors/TMSummary';
|
|
|
8
8
|
import TMChooserForm from '../forms/TMChooserForm';
|
|
9
9
|
import { TMColors } from '../../utils/theme';
|
|
10
10
|
import TMTooltip from '../base/TMTooltip';
|
|
11
|
+
import { FormulaHelper } from '../editors/TMFormulaEditor';
|
|
11
12
|
const TMDynDataListItemChooser = ({ tid, md, titleForm, openChooserBySingleClick, readOnly, layoutMode = LayoutModes.None, queryParamsDynDataList, buttons = [], backgroundColor, showBorder = true, elementStyle, allowMultipleSelection, values, isModifiedWhen, label, placeHolder, validationItems = [], icon, labelColor, showClearButton, onValueChanged, onCascadeRefreshDynDataLists, onCascadeUpdateMIDs }) => {
|
|
12
13
|
const [showChooser, setShowChooser] = useState(false);
|
|
13
14
|
const [dynDl, setDynDl] = useState();
|
|
@@ -66,6 +67,8 @@ const TMDynDataListItemChooser = ({ tid, md, titleForm, openChooserBySingleClick
|
|
|
66
67
|
return null;
|
|
67
68
|
if (!values?.[0])
|
|
68
69
|
return null;
|
|
70
|
+
if (FormulaHelper.isFormula(values?.[0]))
|
|
71
|
+
return null;
|
|
69
72
|
if (!dynDl)
|
|
70
73
|
return _jsx(IconDetails, {});
|
|
71
74
|
let description = dataSource?.dtdResult?.rows?.filter(o => o[dynDl.selectItemForValue ?? 0] == values?.[0])?.[0]?.[dynDl.selectItemForDescription ?? 0];
|
|
@@ -73,7 +76,8 @@ const TMDynDataListItemChooser = ({ tid, md, titleForm, openChooserBySingleClick
|
|
|
73
76
|
_jsx(TMTooltip, { content: SDKUI_Localizator.ValueNotPresent, children: _jsx(IconWarning, { color: TMColors.warning }) });
|
|
74
77
|
};
|
|
75
78
|
const renderTemplate = () => {
|
|
76
|
-
|
|
79
|
+
const isPlaceholder = values?.[0] === placeHolder;
|
|
80
|
+
return (_jsxs(StyledDivHorizontal, { style: { minWidth: '125px', color: isPlaceholder ? '#a9a9a9' : 'inherit' }, children: [dataSource && _jsxs(StyledDivHorizontal, { children: [getIcon(), _jsx("p", { style: { marginLeft: '5px' }, children: getDescription() })] }), values && values.length > 1 && _jsx("p", { style: { marginLeft: '10px' }, children: `(+${values.length - 1} ${values.length == 2 ? 'altro' : 'altri'})` })] }));
|
|
77
81
|
};
|
|
78
82
|
return (_jsxs(_Fragment, { children: [_jsx(TMSummary, { placeHolder: placeHolder, icon: icon, labelColor: labelColor, backgroundColor: backgroundColor, buttons: buttons, showBorder: showBorder, readOnly: readOnly, hasValue: values && values.length > 0, showClearButton: showClearButton, iconEditButton: _jsx(IconSearch, { fontSize: 16 }), onEditorClick: () => !readOnly && setShowChooser(true), elementStyle: elementStyle, isModifiedWhen: isModifiedWhen, openEditorOnSummaryClick: openChooserBySingleClick, label: label, template: renderTemplate(), onClearClick: showClearButton ? () => { onValueChanged?.([]); } : undefined, validationItems: validationItems }), showChooser &&
|
|
79
83
|
_jsx(TMDynDataListItemChooserForm, { TID: tid, MID: md?.id, dynDL: dynDl, title: titleForm, allowMultipleSelection: allowMultipleSelection, searchResult: dataSource, selectedIDs: values, onClose: () => setShowChooser(false), onChoose: (IDs) => {
|
|
@@ -128,7 +132,7 @@ export const TMDynDataListItemChooserForm = (props) => {
|
|
|
128
132
|
default: return "string";
|
|
129
133
|
}
|
|
130
134
|
};
|
|
131
|
-
return {
|
|
135
|
+
return { dataField: keyField, caption: col.caption, visible: isVisible, dataType: dataType(), format: col.dataType === DataColumnTypes.DateTime ? Globalization.getDateDisplayFormat() : "" };
|
|
132
136
|
});
|
|
133
137
|
const keyValue = props.searchResult ? getDataColumnName(props.searchResult?.fromTID, props.searchResult?.dtdResult?.columns?.[props.dynDL?.selectItemForValue ?? 0]) : '';
|
|
134
138
|
const getItems = async (refreshCache) => {
|
|
@@ -15,7 +15,8 @@ const TMUserChooser = ({ labelColor, titleForm, filter, readOnly = false, icon,
|
|
|
15
15
|
setShowChooser(initialShowChooser);
|
|
16
16
|
}, [initialShowChooser]);
|
|
17
17
|
const renderTemplate = () => {
|
|
18
|
-
|
|
18
|
+
const isPlaceholder = values?.[0] === placeHolder;
|
|
19
|
+
return (_jsxs(StyledDivHorizontal, { style: { minWidth: '125px', color: isPlaceholder ? '#a9a9a9' : 'inherit' }, children: [values && values.length > 0 && _jsx(TMUserIdViewer, { userId: values?.[0], showIcon: true, noneSelectionText: '' }), values && values.length > 1 && _jsx("p", { style: { marginLeft: '10px' }, children: `(+${values.length - 1} ${values.length == 2 ? 'altro' : 'altri'})` })] }));
|
|
19
20
|
};
|
|
20
21
|
return (_jsxs(_Fragment, { children: [_jsx(TMSummary, { disabled: disabled, placeHolder: placeHolder, readOnly: readOnly, labelColor: labelColor, icon: icon, backgroundColor: backgroundColor, buttons: buttons, showBorder: showBorder, hasValue: values && values.length > 0, showClearButton: showClearButton, iconEditButton: _jsx(IconSearch, { fontSize: 16 }), onEditorClick: () => !readOnly && setShowChooser(true), elementStyle: elementStyle, isModifiedWhen: isModifiedWhen, openEditorOnSummaryClick: openChooserBySingleClick, label: label, template: renderTemplate(), onClearClick: showClearButton ? () => { onValueChanged?.([]); } : undefined, validationItems: validationItems }), showChooser &&
|
|
21
22
|
_jsx(TMUserChooserForm, { title: titleForm, allowMultipleSelection: allowMultipleSelection, hasShowOnlySelectedItems: true, dataSource: dataSource, filter: filter, selectedIDs: values, hideRefresh: hideRefresh, hideShowId: hideShowId, onClose: () => setShowChooser(false), onChoose: (IDs) => { onValueChanged?.(IDs); } })] }));
|
|
@@ -24,8 +25,8 @@ export default TMUserChooser;
|
|
|
24
25
|
export const TMUserChooserForm = ({ allowMultipleSelection, columns, hideRefresh = false, hideShowId = false, startWithShowOnlySelectedItems = true, filter, title, hasShowOnlySelectedItems, width, height, selectedIDs, dataSource, onClose, onChoose }) => {
|
|
25
26
|
const dataColumns = useMemo(() => {
|
|
26
27
|
return [
|
|
27
|
-
{
|
|
28
|
-
{
|
|
28
|
+
{ dataField: 'domain', caption: SDKUI_Localizator.Domain, dataType: 'string' },
|
|
29
|
+
{ dataField: 'name', caption: SDKUI_Localizator.UserName, dataType: 'string' }
|
|
29
30
|
];
|
|
30
31
|
}, []);
|
|
31
32
|
const getItems = async (refreshCache) => {
|
|
@@ -18,7 +18,7 @@ const TMArchive = ({ inputTID, fileFromConnector = null }) => {
|
|
|
18
18
|
const [currentMruTID, setCurrentMruTID] = useState(0);
|
|
19
19
|
const [fromDTD, setFromDTD] = useState();
|
|
20
20
|
const deviceType = useDeviceType();
|
|
21
|
-
useEffect(() => {
|
|
21
|
+
useEffect(() => { setMruTIDs(SDKUI_Globals.userSettings.archivingSettings.mruTIDs); }, []);
|
|
22
22
|
useEffect(() => {
|
|
23
23
|
if (!inputTID)
|
|
24
24
|
return;
|
|
@@ -131,11 +131,11 @@ const TMTreeSelectorWrapper = ({ isMobile, onSelectedTIDChanged }) => {
|
|
|
131
131
|
};
|
|
132
132
|
const TMRecentsManagerWrapper = ({ mruTIDs, currentMruTID, deviceType, onSelectedTID, onDeletedTID }) => {
|
|
133
133
|
const { setPanelVisibilityById, setToolbarButtonVisibility } = useTMPanelManagerContext();
|
|
134
|
-
useEffect(() => { console.log('TMRecentsManagerWrapper -mruTIDs', mruTIDs); }, [mruTIDs]);
|
|
135
134
|
return (_jsx(TMRecentsManager, { mruTIDs: mruTIDs, currentMruTID: currentMruTID, deviceType: deviceType, onSelectedTID: (tid) => {
|
|
136
135
|
onSelectedTID?.(tid);
|
|
137
|
-
if (deviceType === DeviceType.MOBILE)
|
|
138
|
-
setPanelVisibilityById('
|
|
136
|
+
if (deviceType === DeviceType.MOBILE) {
|
|
137
|
+
setPanelVisibilityById('tmDcmtForm', true);
|
|
138
|
+
}
|
|
139
139
|
else {
|
|
140
140
|
setPanelVisibilityById('tmDcmtForm', true);
|
|
141
141
|
setPanelVisibilityById('tmDcmtPreview', true);
|
|
@@ -9,7 +9,7 @@ import { DownloadTypes, FormModes } from '../../../ts';
|
|
|
9
9
|
import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
|
|
10
10
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
|
11
11
|
import { handleArchiveVisibility, searchResultToMetadataValues } from '../../../helper/queryHelper';
|
|
12
|
-
import { genUniqueId, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDetailDcmts, svgToString, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconPreview } from '../../../helper';
|
|
12
|
+
import { genUniqueId, IconShow, SDKUI_Localizator, updateMruTids, IconBoard, IconDcmtTypeSys, IconDetailDcmts, svgToString, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconPreview } from '../../../helper';
|
|
13
13
|
import { hasDetailRelations, hasMasterRelations, isXMLFileExt } from '../../../helper/dcmtsHelper';
|
|
14
14
|
import { TMColors } from '../../../utils/theme';
|
|
15
15
|
import { StyledFormButtonsContainer, StyledModalContainer, StyledToolbarCardContainer } from '../../base/Styled';
|
|
@@ -32,7 +32,6 @@ import toppy from '../../../assets/Toppy-generico.png';
|
|
|
32
32
|
import { useTMPanelManagerContext } from '../../layout/panelManager/TMPanelManagerContext';
|
|
33
33
|
import TMPanelManagerContainer from '../../layout/panelManager/TMPanelManagerContainer';
|
|
34
34
|
import { TMPanelManagerWithPersistenceProvider } from '../../layout/panelManager/TMPanelManagerWithPersistenceProvider';
|
|
35
|
-
import { updateMruTids } from '../../../helper';
|
|
36
35
|
let abortControllerLocal = new AbortController();
|
|
37
36
|
//#endregion
|
|
38
37
|
const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, allowNavigation = true, allowRelations = true, isClosable = false, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtFormSidebar = true, invokedByTodo = false, titleModal, isModal = false, widthModal = "100%", heightModal = "100%", groupId, onWFOperationCompleted, fileFromConnector = null, }) => {
|
|
@@ -428,12 +427,12 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
|
428
427
|
break;
|
|
429
428
|
}
|
|
430
429
|
} }), _jsxs(StyledFormButtonsContainer, { children: [_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 10 }, children: _jsx("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: layoutMode === LayoutModes.Update ? _jsxs(_Fragment, { children: [_jsx(TMSaveFormButtonSave, { showTooltip: false, btnStyle: 'advanced', advancedColor: '#f09c0a', isModified: isModified, formMode: formMode, errorsCount: validationItems.filter(o => o.ResultType == ResultTypes.ERROR).length, onSaveAsync: confirmActionPopup }), _jsx(TMSaveFormButtonUndo, { btnStyle: 'toolbar', showTooltip: true, color: 'primary', isModified: isModified, formMode: formMode, onUndo: onUndoHandler })] }) :
|
|
431
|
-
_jsxs(_Fragment, { children: [_jsx(TMButton, { disabled: archiveBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconBoxArchiveIn, {}), width: 'auto', showTooltip: false, caption: SDKUI_Localizator.Archive, advancedColor: TMColors.success, onClick: confirmActionPopup }), _jsx(TMButton, { disabled: !clearFormBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconClear, {}), width: 'auto', showTooltip: false, caption: SDKUI_Localizator.Clear, advancedColor: TMColors.tertiary, onClick: clearFormHandler }), DID && _jsx(TMButton, { disabled: undoBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconUndo, {}), width: '150px', showTooltip: false, caption: SDKUI_Localizator.Undo, advancedColor: TMColors.tertiary, onClick: onUndoHandler })] }) }) }), totalItems > listMaxItems && _jsx(TMShowAllOrMaxItemsButton, { showAll: showAll, dataSourceLength: totalItems, onClick: () => { setShowAll(!showAll); } })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: TID, DID: DID, isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: TID, DID: DID, isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: TID, DID: DID, onClose: () => setShowReAssignPopup(false) }), _jsx(ConfirmAttachmentsDialog, {})] }) }), [TID, DID, formData, formDataOrig, dcmtFile, focusedMetadataValue, isOpenDistinctValues, isOpenFormulaEditor, validationItems, showAll, showApprovePopup, showRejectPopup, showReAssignPopup]);
|
|
430
|
+
_jsxs(_Fragment, { children: [_jsx(TMButton, { disabled: archiveBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconBoxArchiveIn, {}), width: 'auto', showTooltip: false, caption: SDKUI_Localizator.Archive, advancedColor: TMColors.success, onClick: confirmActionPopup }), _jsx(TMButton, { disabled: !clearFormBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconClear, {}), width: 'auto', showTooltip: false, caption: SDKUI_Localizator.Clear, advancedColor: TMColors.tertiary, onClick: clearFormHandler }), DID && _jsx(TMButton, { disabled: undoBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconUndo, {}), width: '150px', showTooltip: false, caption: SDKUI_Localizator.Undo, advancedColor: TMColors.tertiary, onClick: onUndoHandler })] }) }) }), totalItems > listMaxItems && _jsx(TMShowAllOrMaxItemsButton, { showAll: showAll, dataSourceLength: totalItems, onClick: () => { setShowAll(!showAll); } })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: TID, DID: DID, isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: TID, DID: DID, isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: TID, DID: DID, onClose: () => setShowReAssignPopup(false) }), _jsx(ConfirmAttachmentsDialog, {})] }) }), [TID, DID, formData, formDataOrig, dcmtFile, focusedMetadataValue, isOpenDistinctValues, isOpenFormulaEditor, validationItems, showAll, showApprovePopup, showRejectPopup, showReAssignPopup, fileFromConnector]);
|
|
432
431
|
const tmBlog = useMemo(() => _jsx(TMDcmtBlog, { tid: TID, did: DID }), [TID, DID]);
|
|
433
432
|
const tmSysMetadata = useMemo(() => _jsx(TMMetadataValues, { layoutMode: layoutMode, openChooserBySingleClick: !isOpenDistinctValues, TID: TID, isReadOnly: true, deviceType: deviceType, metadataValues: formData.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: formData.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] }), [TID, layoutMode, formData, deviceType]);
|
|
434
433
|
const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt, dcmtFile: dcmtFile, deviceType: deviceType, fromDTD: fromDTD, layoutMode: layoutMode, onFileUpload: (setFile) => {
|
|
435
434
|
setDcmtFile(setFile);
|
|
436
|
-
} }), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode]);
|
|
435
|
+
} }), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode, fileFromConnector]);
|
|
437
436
|
const normalizedTID = TID !== undefined ? Number(TID) : undefined;
|
|
438
437
|
const defaultPanelDimensions = {
|
|
439
438
|
'tmDcmtForm': { width: '20%', height: '100%' },
|
|
@@ -582,11 +581,11 @@ const validateMetadataList = (mvdList = []) => {
|
|
|
582
581
|
if (!Array.isArray(mvdList)) {
|
|
583
582
|
throw new TypeError("metadataList must be an array of ITMMetadataProps.");
|
|
584
583
|
}
|
|
585
|
-
return mvdList.reduce((validationItems,
|
|
586
|
-
const value =
|
|
587
|
-
if (isValidForValidation(
|
|
588
|
-
validateRequiredField(
|
|
589
|
-
validateMaxLength(
|
|
584
|
+
return mvdList.reduce((validationItems, mvd) => {
|
|
585
|
+
const value = mvd.value?.toString() ?? "";
|
|
586
|
+
if (isValidForValidation(mvd)) {
|
|
587
|
+
validateRequiredField(mvd, value, validationItems);
|
|
588
|
+
validateMaxLength(mvd, value, validationItems);
|
|
590
589
|
}
|
|
591
590
|
return validationItems;
|
|
592
591
|
}, []);
|
|
@@ -602,7 +601,8 @@ const validateMaxLength = (mvd, value, validationItems) => {
|
|
|
602
601
|
const regex = /[!?[\],./*-+'<>:";]/g;
|
|
603
602
|
const maxLength = mvd.md?.length ?? 0;
|
|
604
603
|
const isTextOrNumber = mvd.md?.dataType === MetadataDataTypes.Varchar || mvd.md?.dataType === MetadataDataTypes.Number;
|
|
605
|
-
|
|
604
|
+
const isFormula = FormulaHelper.isFormula(value);
|
|
605
|
+
if (isTextOrNumber && !isFormula && mvd.md?.length && value.replace(regex, '').length > maxLength) {
|
|
606
606
|
const message = `"${mvd.md.nameLoc ?? "no-name"}" ha superata massimo lunghezza di ${maxLength} caratteri.`;
|
|
607
607
|
validationItems.push(new ValidationItem(ResultTypes.ERROR, mvd.md.nameLoc ?? "", message));
|
|
608
608
|
}
|
|
@@ -6,6 +6,7 @@ import { StyledDivHorizontal } from '../base/Styled';
|
|
|
6
6
|
import TMTooltip from '../base/TMTooltip';
|
|
7
7
|
import { TMColors } from '../../utils/theme';
|
|
8
8
|
import { TMExceptionBoxManager } from '../base/TMPopUp';
|
|
9
|
+
import { FormulaHelper } from '../editors/TMFormulaEditor';
|
|
9
10
|
const TMDataListItemViewer = ({ dataListId, value, viewMode = DataListViewModes.ImageAndDescription }) => {
|
|
10
11
|
const [dataListItem, setDataListItem] = useState();
|
|
11
12
|
useEffect(() => {
|
|
@@ -21,6 +22,8 @@ const TMDataListItemViewer = ({ dataListId, value, viewMode = DataListViewModes.
|
|
|
21
22
|
return null;
|
|
22
23
|
if (!value)
|
|
23
24
|
return null;
|
|
25
|
+
if (FormulaHelper.isFormula(value))
|
|
26
|
+
return null;
|
|
24
27
|
return dataListItem ? _jsx(TMImageLibrary, { imageID: dataListItem.imageID }) : _jsx(IconWarning, { color: TMColors.warning });
|
|
25
28
|
};
|
|
26
29
|
const getDescription = () => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JobTypes, ObjectClasses, ProcessDescriptor, DcmtTypeDescriptor } from "@topconsultnpm/sdk-ts-beta";
|
|
2
2
|
export declare class PlatformObjectService {
|
|
3
3
|
private static readonly retrieveAllJobsAsync;
|
|
4
|
-
static readonly retrieveAllAsync: (objClass: ObjectClasses, jobType?: JobTypes) => Promise<DcmtTypeDescriptor[] | import("@topconsultnpm/sdk-ts-beta").
|
|
4
|
+
static readonly retrieveAllAsync: (objClass: ObjectClasses, jobType?: JobTypes) => Promise<DcmtTypeDescriptor[] | import("@topconsultnpm/sdk-ts-beta").FEDistillerJobDescriptor[] | import("@topconsultnpm/sdk-ts-beta").AreaDescriptor[] | import("@topconsultnpm/sdk-ts-beta").DataListDescriptor[] | import("@topconsultnpm/sdk-ts-beta").DiskDescriptor[] | import("@topconsultnpm/sdk-ts-beta").GroupDescriptor[] | import("@topconsultnpm/sdk-ts-beta").LDAPDescriptor[] | import("@topconsultnpm/sdk-ts-beta").NumeratorDescriptor[] | import("@topconsultnpm/sdk-ts-beta").SAPLoginDescriptor[] | import("@topconsultnpm/sdk-ts-beta").SignCertDescriptor[] | import("@topconsultnpm/sdk-ts-beta").SignServerDescriptor[] | import("@topconsultnpm/sdk-ts-beta").TreeDescriptor[] | import("@topconsultnpm/sdk-ts-beta").TSADescriptor[] | import("@topconsultnpm/sdk-ts-beta").UserDescriptor[] | ProcessDescriptor[] | import("@topconsultnpm/sdk-ts-beta").TaskDescriptor[] | undefined>;
|
|
5
5
|
private static readonly loadCacheForJobAsync;
|
|
6
6
|
private static readonly retrieveAdminJobAsync;
|
|
7
|
-
static readonly retrieveAdminAsync: (objClass: ObjectClasses, jobType: JobTypes, id: number) => Promise<-1 | import("@topconsultnpm/sdk-ts-beta").MailSenderJobDescriptor | DcmtTypeDescriptor | import("@topconsultnpm/sdk-ts-beta").SavedQueryDescriptor | import("@topconsultnpm/sdk-ts-beta").
|
|
7
|
+
static readonly retrieveAdminAsync: (objClass: ObjectClasses, jobType: JobTypes, id: number) => Promise<-1 | import("@topconsultnpm/sdk-ts-beta").MailSenderJobDescriptor | DcmtTypeDescriptor | import("@topconsultnpm/sdk-ts-beta").SavedQueryDescriptor | import("@topconsultnpm/sdk-ts-beta").BarcodeArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").BatchUpdaterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoDoganaleJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoDoganalePlusJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoFiscaleQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoFiscaleSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CheckSequenceJobDescriptor | import("@topconsultnpm/sdk-ts-beta").COSCheckerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtConverterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtDeleterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtNoteJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtPrinterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEAttacherJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FECreatorTxtJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEDetacherJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEDistillerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FESenderWsJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FESplitterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEValidatorJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileCheckerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileExecJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileExportJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileMoverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").LexJobDescriptor | import("@topconsultnpm/sdk-ts-beta").LinkerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MailArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MailQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MigrationJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdDCreatorJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PDFArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdVArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdVQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdVSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PeppolQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PeppolSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PostelQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PostelSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").ReplicatorJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPAlignerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPBarcodeJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPDataReaderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPDataWriterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SignerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SpoolArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").UpdaterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").AreaDescriptor | import("@topconsultnpm/sdk-ts-beta").BasketTypeDescriptor | import("@topconsultnpm/sdk-ts-beta").DataListDescriptor | import("@topconsultnpm/sdk-ts-beta").DiskDescriptor | import("@topconsultnpm/sdk-ts-beta").GroupDescriptor | import("@topconsultnpm/sdk-ts-beta").LDAPDescriptor | import("@topconsultnpm/sdk-ts-beta").NumeratorDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPLoginDescriptor | import("@topconsultnpm/sdk-ts-beta").SignCertDescriptor | import("@topconsultnpm/sdk-ts-beta").SignServerDescriptor | import("@topconsultnpm/sdk-ts-beta").TreeDescriptor | import("@topconsultnpm/sdk-ts-beta").TSADescriptor | import("@topconsultnpm/sdk-ts-beta").UserDescriptor | ProcessDescriptor | import("@topconsultnpm/sdk-ts-beta").TaskDescriptor | import("@topconsultnpm/sdk-ts-beta").WorkingGroupDescriptor | undefined>;
|
|
8
8
|
private static readonly updateJobAsync;
|
|
9
9
|
static readonly updateAsync: (objClass: ObjectClasses, jobType: JobTypes, d: any) => Promise<number | undefined>;
|
|
10
10
|
private static readonly createJobAsync;
|