@topconsultnpm/sdkui-react 6.20.0-dev2.8 → 6.20.0-dev3.1
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/styles.d.ts +3 -1
- package/lib/components/NewComponents/ContextMenu/styles.js +7 -5
- package/lib/components/base/Styled.d.ts +4 -1
- package/lib/components/base/Styled.js +11 -3
- package/lib/components/base/TMTreeView.d.ts +3 -1
- package/lib/components/base/TMTreeView.js +64 -21
- package/lib/components/choosers/TMDataListItemEditor.d.ts +11 -0
- package/lib/components/choosers/TMDataListItemEditor.js +130 -0
- package/lib/components/choosers/TMDataListItemFields.d.ts +11 -0
- package/lib/components/choosers/TMDataListItemFields.js +61 -0
- package/lib/components/choosers/TMDataListItemPicker.d.ts +1 -0
- package/lib/components/choosers/TMDataListItemPicker.js +178 -18
- package/lib/components/choosers/TMDynDataListItemChooser.js +11 -6
- package/lib/components/choosers/TMImageIDChooser.d.ts +16 -0
- package/lib/components/choosers/TMImageIDChooser.js +53 -0
- package/lib/components/choosers/TMMetadataChooser.js +1 -1
- package/lib/components/editors/TMDateBox.js +1 -1
- package/lib/components/editors/TMHtmlEditor.js +1 -1
- package/lib/components/editors/TMLocalizedTextBox.d.ts +1 -0
- package/lib/components/editors/TMLocalizedTextBox.js +3 -3
- package/lib/components/editors/TMMetadataValues.js +3 -1
- package/lib/components/editors/TMTextBox.js +9 -10
- package/lib/components/features/archive/TMArchive.d.ts +2 -1
- package/lib/components/features/archive/TMArchive.js +31 -44
- package/lib/components/features/blog/TMBlogCommentForm.d.ts +3 -0
- package/lib/components/features/blog/TMBlogCommentForm.js +42 -36
- package/lib/components/features/documents/TMDcmtForm.d.ts +3 -1
- package/lib/components/features/documents/TMDcmtForm.js +197 -45
- package/lib/components/features/documents/TMDcmtTasks.d.ts +3 -1
- package/lib/components/features/documents/TMDcmtTasks.js +2 -2
- package/lib/components/features/documents/TMFileUploader.d.ts +4 -0
- package/lib/components/features/documents/TMFileUploader.js +23 -6
- package/lib/components/features/documents/TMMasterDetailDcmts.js +68 -84
- package/lib/components/features/documents/TMRelationViewer.d.ts +7 -1
- package/lib/components/features/documents/TMRelationViewer.js +395 -78
- package/lib/components/features/search/TMSearchResult.d.ts +2 -0
- package/lib/components/features/search/TMSearchResult.js +82 -79
- package/lib/components/features/search/TMSearchResultsMenuItems.js +2 -2
- package/lib/components/features/tasks/TMTaskForm.d.ts +1 -0
- package/lib/components/features/tasks/TMTaskForm.js +61 -193
- package/lib/components/features/tasks/TMTaskFormUtils.d.ts +80 -0
- package/lib/components/features/tasks/TMTaskFormUtils.js +559 -0
- package/lib/components/features/tasks/TMTasksUtils.d.ts +3 -1
- package/lib/components/features/tasks/TMTasksUtils.js +46 -16
- package/lib/components/features/tasks/TMTasksUtilsView.d.ts +0 -7
- package/lib/components/features/tasks/TMTasksUtilsView.js +7 -14
- package/lib/components/features/tasks/TMTasksView.js +5 -3
- package/lib/components/features/workflow/TMWorkflowPopup.d.ts +20 -3
- package/lib/components/features/workflow/TMWorkflowPopup.js +14 -92
- package/lib/components/features/workflow/diagram/ConnectionComponent.d.ts +1 -0
- package/lib/components/features/workflow/diagram/ConnectionComponent.js +6 -2
- package/lib/components/features/workflow/diagram/DiagramItemForm.js +1 -1
- package/lib/components/features/workflow/diagram/WFDiagram.js +75 -5
- package/lib/components/forms/Login/TMLoginForm.js +1 -1
- package/lib/components/forms/TMSaveForm.js +61 -13
- package/lib/components/grids/TMBlogsPost.js +8 -8
- package/lib/components/grids/TMBlogsPostUtils.js +2 -2
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.js +2 -0
- package/lib/components/pages/TMPage.js +4 -0
- package/lib/components/query/TMQueryEditor.d.ts +1 -0
- package/lib/components/query/TMQueryEditor.js +2 -2
- package/lib/helper/Enum_Localizator.js +5 -0
- package/lib/helper/GlobalStyles.js +3 -0
- package/lib/helper/SDKUI_Globals.d.ts +8 -0
- package/lib/helper/SDKUI_Globals.js +12 -0
- package/lib/helper/SDKUI_Localizator.d.ts +19 -3
- package/lib/helper/SDKUI_Localizator.js +182 -22
- package/lib/helper/TMIcons.d.ts +2 -1
- package/lib/helper/TMIcons.js +4 -1
- package/lib/helper/TMUtils.d.ts +5 -0
- package/lib/helper/TMUtils.js +10 -5
- package/lib/helper/helpers.d.ts +6 -2
- package/lib/helper/helpers.js +24 -8
- package/lib/helper/index.d.ts +1 -0
- package/lib/helper/index.js +1 -0
- package/lib/helper/queryHelper.js +1 -1
- package/lib/hooks/useBetaFeatures.d.ts +1 -0
- package/lib/hooks/useBetaFeatures.js +41 -0
- package/lib/hooks/useDcmtOperations.js +14 -2
- package/lib/hooks/useRelatedDocuments.js +34 -11
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/services/platform_services.d.ts +1 -1
- package/lib/services/platform_services.js +4 -0
- package/package.json +2 -2
|
@@ -8,13 +8,15 @@ import ConnectionComponent from './ConnectionComponent';
|
|
|
8
8
|
import DiagramItemComponent from './DiagramItemComponent';
|
|
9
9
|
import DiagramItemSvgContent from './DiagramItemSvgContent';
|
|
10
10
|
import { calculateArrowAngle, downloadFile, getConnectionPoint, getNewWfDiagram, isConnectionNonLinear, validateDiagram } from './workflowHelpers';
|
|
11
|
-
import { IconFlowChart, IconUndo, IconRestore, IconAdjust, IconCopy, IconCut, IconPaste, IconPin, IconUnpin, IconChevronRight, IconCloseOutline, IconNew, SDKUI_Localizator, generateUUID, IconExport, IconImport, IconWindowMaximize, IconZoomIn, IconZoomOut, IconPencil, IconLock, LocalizeDiagramItemType, IconWindowMinimize, IconZoomAuto } from '../../../../helper';
|
|
11
|
+
import { IconFlowChart, IconUndo, IconRestore, IconAdjust, IconCopy, IconCut, IconPaste, IconPin, IconUnpin, IconChevronRight, IconCloseOutline, IconNew, SDKUI_Localizator, generateUUID, IconExport, IconImport, IconWindowMaximize, IconZoomIn, IconZoomOut, IconPencil, IconLock, LocalizeDiagramItemType, IconWindowMinimize, IconZoomAuto, IconCloseCircle, IconSuccess } from '../../../../helper';
|
|
12
12
|
import { ButtonNames, TMExceptionBoxManager, TMMessageBoxManager } from '../../../base/TMPopUp';
|
|
13
13
|
import { StyledLoadingContainer, StyledSpinner } from '../../../base/Styled';
|
|
14
14
|
import DiagramItemForm from './DiagramItemForm';
|
|
15
15
|
import ReactDOM from 'react-dom';
|
|
16
16
|
import ConnectionForm from './ConnectionForm';
|
|
17
17
|
import TMFloatingMenuBar from '../../../NewComponents/FloatingMenuBar';
|
|
18
|
+
import TMContextMenu from '../../../NewComponents/ContextMenu/TMContextMenu';
|
|
19
|
+
import { TMColors } from '../../../../utils/theme';
|
|
18
20
|
const ZoomLevelText = styled.span `
|
|
19
21
|
font-size: 0.9em;
|
|
20
22
|
color: #555;
|
|
@@ -331,6 +333,9 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, allowEdit = true, onDiagram
|
|
|
331
333
|
const [wfDiagram, setWfDiagram] = useState(null);
|
|
332
334
|
const [selectedItems, setSelectedItems] = useState(new Set());
|
|
333
335
|
const [selectedConnections, setSelectedConnections] = useState(new Set());
|
|
336
|
+
// Context menu per le connections
|
|
337
|
+
const [connectionContextMenuPosition, setConnectionContextMenuPosition] = useState({ x: 0, y: 0 });
|
|
338
|
+
const [contextMenuConnectionId, setContextMenuConnectionId] = useState(null);
|
|
334
339
|
const [wfDiagramHistory, setWfDiagramHistory] = useState([]);
|
|
335
340
|
const [historyIndex, setHistoryIndex] = useState(-1);
|
|
336
341
|
const isUndoingRedoing = useRef(false);
|
|
@@ -1311,6 +1316,62 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, allowEdit = true, onDiagram
|
|
|
1311
1316
|
if (!isCtrlPressed)
|
|
1312
1317
|
setSelectedItems(new Set());
|
|
1313
1318
|
}, [isReadOnly]);
|
|
1319
|
+
const handleConnectionContextMenu = useCallback((id, event) => {
|
|
1320
|
+
if (isReadOnly)
|
|
1321
|
+
return;
|
|
1322
|
+
event.preventDefault();
|
|
1323
|
+
event.stopPropagation();
|
|
1324
|
+
// Trova la connection
|
|
1325
|
+
const connection = wfDiagram?.Connections.find(conn => conn.ID === id);
|
|
1326
|
+
if (!connection)
|
|
1327
|
+
return;
|
|
1328
|
+
// Verifica se esce da un DiagramItemTypes.Condition o Approval
|
|
1329
|
+
const sourceItem = wfDiagram?.DiagramItems.find(item => item.ID === connection.Source.ParentDiagramItem.ID);
|
|
1330
|
+
if (!sourceItem || ![DiagramItemTypes.Condition, DiagramItemTypes.Approval].includes(sourceItem.Type))
|
|
1331
|
+
return;
|
|
1332
|
+
// Mostra il context menu
|
|
1333
|
+
setContextMenuConnectionId(id);
|
|
1334
|
+
setConnectionContextMenuPosition({ x: event.clientX, y: event.clientY });
|
|
1335
|
+
}, [isReadOnly, wfDiagram]);
|
|
1336
|
+
const handleChangeConnectionOutputStatus = useCallback((connectionId) => {
|
|
1337
|
+
if (isReadOnly || !wfDiagram)
|
|
1338
|
+
return;
|
|
1339
|
+
const connection = wfDiagram.Connections.find(conn => conn.ID === connectionId);
|
|
1340
|
+
if (!connection)
|
|
1341
|
+
return;
|
|
1342
|
+
// Cambia l'OutputStatus da Completed a Rejected e viceversa
|
|
1343
|
+
const newStatus = connection.OutputStatus === WorkItemStatus.Completed
|
|
1344
|
+
? WorkItemStatus.Rejected
|
|
1345
|
+
: WorkItemStatus.Completed;
|
|
1346
|
+
const updatedDiagram = {
|
|
1347
|
+
...wfDiagram,
|
|
1348
|
+
Connections: wfDiagram.Connections.map(conn => conn.ID === connectionId ? { ...conn, OutputStatus: newStatus } : conn)
|
|
1349
|
+
};
|
|
1350
|
+
updateDiagram(updatedDiagram);
|
|
1351
|
+
setWfDiagram(updatedDiagram);
|
|
1352
|
+
setContextMenuConnectionId(null);
|
|
1353
|
+
}, [isReadOnly, wfDiagram, updateDiagram]);
|
|
1354
|
+
const closeConnectionContextMenu = useCallback(() => {
|
|
1355
|
+
setContextMenuConnectionId(null);
|
|
1356
|
+
}, []);
|
|
1357
|
+
// Menu items per il context menu delle connections
|
|
1358
|
+
const connectionContextMenuItems = useMemo(() => {
|
|
1359
|
+
if (!contextMenuConnectionId || !wfDiagram)
|
|
1360
|
+
return [];
|
|
1361
|
+
const connection = wfDiagram.Connections.find(conn => conn.ID === contextMenuConnectionId);
|
|
1362
|
+
if (!connection)
|
|
1363
|
+
return [];
|
|
1364
|
+
const targetStatus = connection.OutputStatus === WorkItemStatus.Completed
|
|
1365
|
+
? SDKUI_Localizator.WorkItemStatus_Rejected
|
|
1366
|
+
: SDKUI_Localizator.WorkItemStatus_Completed;
|
|
1367
|
+
return [{
|
|
1368
|
+
icon: connection.OutputStatus === WorkItemStatus.Completed
|
|
1369
|
+
? _jsx(IconCloseCircle, { color: TMColors.error, fontSize: 16 })
|
|
1370
|
+
: _jsx(IconSuccess, { color: TMColors.success, fontSize: 16 }),
|
|
1371
|
+
name: SDKUI_Localizator.ChangeStatusTo.replaceParams(targetStatus),
|
|
1372
|
+
onClick: () => handleChangeConnectionOutputStatus(contextMenuConnectionId)
|
|
1373
|
+
}];
|
|
1374
|
+
}, [contextMenuConnectionId, wfDiagram, handleChangeConnectionOutputStatus]);
|
|
1314
1375
|
const handleDrag = useCallback((id, newX, newY) => {
|
|
1315
1376
|
if (isReadOnly)
|
|
1316
1377
|
return;
|
|
@@ -1393,10 +1454,15 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, allowEdit = true, onDiagram
|
|
|
1393
1454
|
if (sourceItem.Type === DiagramItemTypes.Condition || sourceItem.Type === DiagramItemTypes.Approval) {
|
|
1394
1455
|
const existingConnectionsFromSource = wfDiagram.Connections.filter(conn => conn.Source.ParentDiagramItem.ID === sourceItem.ID);
|
|
1395
1456
|
if (existingConnectionsFromSource.length === 0) {
|
|
1457
|
+
// Prima connessione → Completed
|
|
1396
1458
|
outputStatus = WorkItemStatus.Completed;
|
|
1397
1459
|
}
|
|
1398
1460
|
else if (existingConnectionsFromSource.length === 1) {
|
|
1399
|
-
|
|
1461
|
+
// Seconda connessione → contrario della prima
|
|
1462
|
+
const firstConnection = existingConnectionsFromSource[0];
|
|
1463
|
+
outputStatus = firstConnection.OutputStatus === WorkItemStatus.Completed
|
|
1464
|
+
? WorkItemStatus.Rejected
|
|
1465
|
+
: WorkItemStatus.Completed;
|
|
1400
1466
|
}
|
|
1401
1467
|
}
|
|
1402
1468
|
const newConnection = {
|
|
@@ -1820,7 +1886,7 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, allowEdit = true, onDiagram
|
|
|
1820
1886
|
fullScreenRef.current.focus();
|
|
1821
1887
|
}
|
|
1822
1888
|
}, [isFullScreen]);
|
|
1823
|
-
const diagramContent = (_jsxs(CanvasContainer, { onDoubleClick: handleCanvasDoubleClick, children: [_jsx("input", { ref: fileInputRef, type: "file", accept: ".xml" // Filtra per file XML
|
|
1889
|
+
const diagramContent = (_jsxs(CanvasContainer, { onDoubleClick: handleCanvasDoubleClick, onContextMenu: (e) => e.preventDefault(), children: [_jsx("input", { ref: fileInputRef, type: "file", accept: ".xml" // Filtra per file XML
|
|
1824
1890
|
, onChange: handleFileChange, style: { display: 'none' } }), SDK_Globals.tmSession?.SessionDescr?.appModuleID === AppModules.SURFER ?
|
|
1825
1891
|
_jsx(TMFloatingMenuBar, { containerRef: diagramRef, defaultPosition: { x: 45, y: 85 }, enableConfigMode: false, fixedItems: [
|
|
1826
1892
|
{ icon: _jsx(IconZoomIn, {}), name: SDKUI_Localizator.ZoomIn, disabled: isAutoZoomEnabled, onClick: () => { handleZoomIn(); }, id: 'zoom-in', isPinned: true },
|
|
@@ -1842,8 +1908,12 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, allowEdit = true, onDiagram
|
|
|
1842
1908
|
const sinkPoint = getConnectionPoint(sinkItem, connection.Sink.ConnectorName);
|
|
1843
1909
|
// Determina se questa è la connessione che stiamo trascinando
|
|
1844
1910
|
const isThisConnectionBeingDragged = isDraggingExistingConnectionEndpoint && draggingConnectionId === connection.ID;
|
|
1845
|
-
return (_jsx(ConnectionComponent, { connection: connection, isSelected: selectedConnections.has(connection.ID), sourcePoint: sourcePoint, sinkPoint: sinkPoint, isTemporary: isThisConnectionBeingDragged, onClick: handleConnectionClick, onDoubleClick: handleDoubleClickConnection, onConnectionEndpointMouseDown: handleConnectionEndpointMouseDown }, connection.ID));
|
|
1846
|
-
}), isDrawingConnection && tempConnectionPathData && (_jsx(TempConnectionPath, { d: tempConnectionPathData })), isDraggingExistingConnectionEndpoint && tempConnectionPathData && (_jsx(TempConnectionPath, { d: tempConnectionPathData })), isDrawingSelectionRect && currentSelectionRect && (_jsx(SelectionRect, { x: currentSelectionRect.x, y: currentSelectionRect.y, width: currentSelectionRect.width, height: currentSelectionRect.height }))] }) })) : (_jsx(DiagramMessage, { children: `${SDKUI_Localizator.WorkflowDiagramMissingOrInvalid} ...` })) }), isModalOpen && itemToEdit && (_jsx(DiagramItemForm, { itemToEdit: itemToEdit, wf: wfDiagram?.Info, onClose: handleCloseModal, onApply: handleUpdateDiagramItem })), isConnectionModalOpen && connectionToEdit && (_jsx(ConnectionForm, { connectionToEdit: connectionToEdit, onClose: () => setIsConnectionModalOpen(false), onApply: handleUpdateConnection }))
|
|
1911
|
+
return (_jsx(ConnectionComponent, { connection: connection, isSelected: selectedConnections.has(connection.ID), sourcePoint: sourcePoint, sinkPoint: sinkPoint, isTemporary: isThisConnectionBeingDragged, onClick: handleConnectionClick, onDoubleClick: handleDoubleClickConnection, onConnectionEndpointMouseDown: handleConnectionEndpointMouseDown, onContextMenu: handleConnectionContextMenu }, connection.ID));
|
|
1912
|
+
}), isDrawingConnection && tempConnectionPathData && (_jsx(TempConnectionPath, { d: tempConnectionPathData })), isDraggingExistingConnectionEndpoint && tempConnectionPathData && (_jsx(TempConnectionPath, { d: tempConnectionPathData })), isDrawingSelectionRect && currentSelectionRect && (_jsx(SelectionRect, { x: currentSelectionRect.x, y: currentSelectionRect.y, width: currentSelectionRect.width, height: currentSelectionRect.height }))] }) })) : (_jsx(DiagramMessage, { children: `${SDKUI_Localizator.WorkflowDiagramMissingOrInvalid} ...` })) }), isModalOpen && itemToEdit && (_jsx(DiagramItemForm, { itemToEdit: itemToEdit, wf: wfDiagram?.Info, onClose: handleCloseModal, onApply: handleUpdateDiagramItem })), isConnectionModalOpen && connectionToEdit && (_jsx(ConnectionForm, { connectionToEdit: connectionToEdit, onClose: () => setIsConnectionModalOpen(false), onApply: handleUpdateConnection })), _jsx(TMContextMenu, { items: connectionContextMenuItems, externalControl: {
|
|
1913
|
+
visible: contextMenuConnectionId !== null,
|
|
1914
|
+
position: connectionContextMenuPosition,
|
|
1915
|
+
onClose: closeConnectionContextMenu
|
|
1916
|
+
} })] }));
|
|
1847
1917
|
return (_jsxs(_Fragment, { children: [!isFullScreen && (_jsx(DiagramWrapper, { ref: diagramRef, children: diagramContent })), isFullScreen && ReactDOM.createPortal(_jsx(FullScreenContainer, { ref: fullScreenRef, tabIndex: 0, onKeyDown: handleFullScreenKeyDown, children: diagramContent }), document.body)] }));
|
|
1848
1918
|
};
|
|
1849
1919
|
export default WFDiagram;
|
|
@@ -115,7 +115,7 @@ const TMLoginForm = (props) => {
|
|
|
115
115
|
const [dcmtArchive, setDcmtArchive] = useState();
|
|
116
116
|
const [manualArchiveID, setManualArchiveID] = useState('');
|
|
117
117
|
const [authMode, setAuthMode] = useState(AuthenticationModes.TopMedia);
|
|
118
|
-
const [username, setUsername] = useState('
|
|
118
|
+
const [username, setUsername] = useState('');
|
|
119
119
|
const [password, setPassword] = useState('');
|
|
120
120
|
const [authDomain, setAuthDomain] = useState('');
|
|
121
121
|
const [usernameOnBehalf, setUsernameOnBehalf] = useState('');
|
|
@@ -11,7 +11,7 @@ import { TMColors } from '../../utils/theme';
|
|
|
11
11
|
import TMValidationItemsList from '../grids/TMValidationItemsList';
|
|
12
12
|
import TMModal from '../base/TMModal';
|
|
13
13
|
import { DeviceType, useDeviceType } from '../base/TMDeviceProvider';
|
|
14
|
-
const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipIsModifiedCheck = false, title, children, isModal, exception, customToolbarElements, hasNavigation, showSaveButton = true, customSaveButton, customTooltipSaveButton, showBackButton, showWarningsCount = true, showErrorCount = true, showUndoButton = true, onClose, onSaveAsync, onNext, onPrev, canNext, canPrev, isModified, onShowList, validationItems = [], onUndo, onCancel, width, height, askClosingConfirm = false, showTitleFormMode = true, showCloseButton = true }) => {
|
|
14
|
+
const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipIsModifiedCheck = false, title, children, isModal, exception, customToolbarElements, hasNavigation, showSaveButton = true, customSaveButton, customTooltipSaveButton, showBackButton, showWarningsCount = true, showErrorCount = true, showUndoButton = true, onClose, onSaveAsync, onNext, onPrev, canNext, canPrev, isModified, onShowList, validationItems = [], onUndo, onCancel, width, height, askClosingConfirm = false, showTitleFormMode = true, showCloseButton = true, resizable = true }) => {
|
|
15
15
|
const [showList, setShowList] = useState(true);
|
|
16
16
|
const [showErrorGrid, setShowErrorGrid] = useState(false);
|
|
17
17
|
const deviceType = useDeviceType();
|
|
@@ -65,26 +65,74 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
|
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
67
|
};
|
|
68
|
-
const doClose = () => {
|
|
68
|
+
const doClose = async () => {
|
|
69
|
+
// Se non ci sono modifiche o vogliamo ignorare il controllo delle modifiche
|
|
69
70
|
if (!isModified || skipIsModifiedCheck) {
|
|
70
71
|
onClose?.();
|
|
71
|
-
|
|
72
|
+
// Se il dispositivo è mobile, mostra di nuovo la lista
|
|
73
|
+
if (deviceType === DeviceType.MOBILE) {
|
|
74
|
+
setShowList(true);
|
|
75
|
+
onShowList?.(true);
|
|
76
|
+
}
|
|
72
77
|
return;
|
|
73
78
|
}
|
|
79
|
+
// Determina il messaggio e i pulsanti da mostrare in base alla presenza di errori
|
|
80
|
+
const hasValidationErrors = validationItems.length > 0;
|
|
81
|
+
const message = (isModified && hasValidationErrors) ? SDKUI_Localizator.FormErrorsProceedQuestion : SDKUI_Localizator.SaveQuestion;
|
|
82
|
+
const buttons = hasValidationErrors
|
|
83
|
+
? [ButtonNames.YES, ButtonNames.NO]
|
|
84
|
+
: [ButtonNames.YES, ButtonNames.NO, ButtonNames.CANCEL];
|
|
85
|
+
// Mostra il messaggio di conferma
|
|
74
86
|
TMMessageBoxManager.show({
|
|
75
|
-
parentId: isModal ?
|
|
76
|
-
message
|
|
77
|
-
|
|
87
|
+
parentId: isModal ? `TMSaveFormShowConfirmForClose-${id}` : undefined,
|
|
88
|
+
message,
|
|
89
|
+
buttons,
|
|
90
|
+
onButtonClick: async (buttonClicked) => {
|
|
78
91
|
try {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
92
|
+
// Caso con errori di validazione
|
|
93
|
+
if (hasValidationErrors) {
|
|
94
|
+
if (buttonClicked === ButtonNames.NO)
|
|
95
|
+
return; // Non fare nulla
|
|
96
|
+
if (buttonClicked === ButtonNames.YES) {
|
|
97
|
+
if (deviceType === DeviceType.MOBILE) {
|
|
98
|
+
onUndo();
|
|
99
|
+
setShowList(true);
|
|
100
|
+
onShowList?.(true);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
onUndo();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Caso senza errori
|
|
109
|
+
switch (buttonClicked) {
|
|
110
|
+
case ButtonNames.CANCEL:
|
|
111
|
+
return; // Non fare nulla
|
|
112
|
+
case ButtonNames.NO:
|
|
113
|
+
if (deviceType === DeviceType.MOBILE) {
|
|
114
|
+
onUndo();
|
|
115
|
+
setShowList(true);
|
|
116
|
+
onShowList?.(true);
|
|
117
|
+
}
|
|
118
|
+
break;
|
|
119
|
+
case ButtonNames.YES:
|
|
120
|
+
if (deviceType === DeviceType.MOBILE) {
|
|
121
|
+
await onSaveAsync?.();
|
|
122
|
+
setShowList(true);
|
|
123
|
+
onShowList?.(true);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
await onSaveAsync?.();
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Chiude il form/modal
|
|
85
132
|
onClose?.();
|
|
86
133
|
}
|
|
87
134
|
catch (ex) {
|
|
135
|
+
// Mostra eventuali eccezioni
|
|
88
136
|
TMExceptionBoxManager.show({ exception: ex });
|
|
89
137
|
}
|
|
90
138
|
}
|
|
@@ -102,7 +150,7 @@ const TMSaveForm = ({ id, formMode = FormModes.Update, showToolbar = true, skipI
|
|
|
102
150
|
_jsx("div", { style: { width: '100%', height: '100%', marginTop: '50px', display: 'flex', alignItems: 'center', justifyContent: 'center', flexDirection: 'column', color: getColor('error') }, children: 'Si è verificato un errore' })
|
|
103
151
|
: _jsx(_Fragment, { children: children }) }), showErrorGrid && validationItems.length > 0 ? _jsx(TMCard, { scrollY: true, padding: false, showBorder: false, children: _jsx(TMValidationItemsList, { validationItems: validationItems }) }) : _jsx(_Fragment, {})] }) }), (isModal && onClose) && _jsx("div", { id: "TMSaveFormShowConfirmForClose-" + id })] }));
|
|
104
152
|
};
|
|
105
|
-
return (_jsx(_Fragment, { children: (isModal && onClose) ? _jsx(_Fragment, { children: _jsx(TMModal, { title: `${title}${showTitleFormMode ? ` - ${LocalizeFormModes(formMode)}` : ''}`, onClose: doClose, width: width ?? '100%', height: height ?? '100%', hidePopup: false, askClosingConfirm: askClosingConfirm, showCloseButton: showCloseButton, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block' }, children: renderSaveForm() }) }) })
|
|
153
|
+
return (_jsx(_Fragment, { children: (isModal && onClose) ? _jsx(_Fragment, { children: _jsx(TMModal, { title: `${title}${showTitleFormMode ? ` - ${LocalizeFormModes(formMode)}` : ''}`, onClose: doClose, width: width ?? '100%', height: height ?? '100%', hidePopup: false, askClosingConfirm: askClosingConfirm, showCloseButton: showCloseButton, resizable: resizable, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block' }, children: renderSaveForm() }) }) })
|
|
106
154
|
: renderSaveForm() }));
|
|
107
155
|
};
|
|
108
156
|
export default TMSaveForm;
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
3
3
|
import { DossierEngine, LayoutModes, ObjectClasses, ResultTypes, SDK_Globals, TaskDescriptor, WorkingGroupEngine } from "@topconsultnpm/sdk-ts";
|
|
4
4
|
import { ContextMenu as TMContextMenu } from "../NewComponents/ContextMenu";
|
|
5
|
-
import { SDKUI_Localizator, Globalization, getExceptionMessage, TMConditionalWrapper,
|
|
5
|
+
import { SDKUI_Localizator, Globalization, getExceptionMessage, TMConditionalWrapper, getMoreInfoTasksForDocument, taskModalSizes } from "../../helper";
|
|
6
6
|
import TMToppyMessage from "../../helper/TMToppyMessage";
|
|
7
7
|
import { useDcmtOperations } from "../../hooks/useDcmtOperations";
|
|
8
8
|
import { DownloadTypes, FormModes } from "../../ts";
|
|
@@ -629,10 +629,10 @@ const TMBlogsPost = (props) => {
|
|
|
629
629
|
console.warn(`Unhandled object type: ${ref.objClass}`);
|
|
630
630
|
}
|
|
631
631
|
};
|
|
632
|
-
return _jsx("div", { ref: containerRef, style: { height: height, width: width }, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: localShowWaitPanel, showWaitPanelPrimary: localShowPrimary, waitPanelTitle: localWaitPanelTitle, waitPanelTextPrimary: localWaitPanelTextPrimary, waitPanelValuePrimary: localWaitPanelValuePrimary, waitPanelMaxValuePrimary: localWaitPanelMaxValuePrimary, isCancelable: true, abortController: localAbortController, children: [_jsx(TMBlogHeader, { isVisible: currentHeader !== undefined && !isHeaderHidden, layoutMode: layoutMode, height: layoutMode === 'extended' ? "40px" : "70px", width: "100%", allPosts: posts, postsToShow: postsToShow, onPostsToShowChange: handlePostsToShowChange, categoryIdDataSource: categoryIdDataSource, appliedCategoryIdFilters: appliedCategoryIdFilters, setAppliedCategoryIdFilters: setAppliedCategoryIdFilters, searchText: searchText, onSearchChange: handleSearchChange }), _jsxs("div", { style: {
|
|
632
|
+
return _jsx("div", { ref: containerRef, style: { height: height, width: width }, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: localShowWaitPanel, showWaitPanelPrimary: localShowPrimary, waitPanelTitle: localWaitPanelTitle, waitPanelTextPrimary: localWaitPanelTextPrimary, waitPanelValuePrimary: localWaitPanelValuePrimary, waitPanelMaxValuePrimary: localWaitPanelMaxValuePrimary, isCancelable: true, abortController: localAbortController, children: [_jsx(TMBlogHeader, { isVisible: currentHeader !== undefined && !isHeaderHidden, layoutMode: layoutMode, height: layoutMode === 'extended' ? "40px" : "70px", width: "100%", allPosts: posts, postsToShow: postsToShow, onPostsToShowChange: handlePostsToShowChange, categoryIdDataSource: categoryIdDataSource, appliedCategoryIdFilters: appliedCategoryIdFilters, setAppliedCategoryIdFilters: setAppliedCategoryIdFilters, searchText: searchText, onSearchChange: handleSearchChange }), _jsxs("div", { id: `${id}-blogs-wrapper`, onContextMenu: onContextMenu, style: {
|
|
633
633
|
width: "100%",
|
|
634
634
|
height: currentHeader !== undefined && !isHeaderHidden ? `calc(100% - ${layoutMode === 'extended' ? "40px" : "70px"})` : "100%",
|
|
635
|
-
}, children: [blogPosts.length === 0 && _jsx(TMToppyMessage, { message: searchText.length > 0 ? SDKUI_Localizator.NoMessagesFound : SDKUI_Localizator.NoMessages }), blogPosts.length > 0 && _jsxs("div", { id: `${id}-blogs-container`, tabIndex: 0, onKeyDown: handleKeyDown,
|
|
635
|
+
}, children: [blogPosts.length === 0 && _jsx(TMToppyMessage, { message: searchText.length > 0 ? SDKUI_Localizator.NoMessagesFound : SDKUI_Localizator.NoMessages }), blogPosts.length > 0 && _jsxs("div", { id: `${id}-blogs-container`, tabIndex: 0, onKeyDown: handleKeyDown, style: {
|
|
636
636
|
height: '100%',
|
|
637
637
|
width: '100%',
|
|
638
638
|
outline: "none",
|
|
@@ -680,11 +680,11 @@ const TMBlogsPost = (props) => {
|
|
|
680
680
|
boxShadow: isFocused ? "0 4px 12px rgba(19, 85, 150, 0.6)" : "none",
|
|
681
681
|
cursor: 'pointer',
|
|
682
682
|
}, children: [_jsx(BlogPostTitle, { displayMode: displayMode, layoutMode: layoutMode, blogPost: blogPost, isSelected: isSelected, isOwnComment: isOwnComment, searchText: searchText, isSys: isSys, isHomeBlogPost: isHomeBlogPost, showId: localShowId, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), isNew && _jsx(NewBadge, { layoutMode: layoutMode }), _jsx("div", { style: { fontSize: '1rem', color: "#000", marginTop: "10px", overflow: "hidden" }, children: _jsx(TMHtmlContentDisplay, { markup: blogPost.description ?? '-', searchText: searchText, isSelected: isSelected }) }), showExtendedAttachments && blogPost.attachments && blogPost.attachments.length > 0 && (_jsx(TMBlogAttachments, { attachments: blogPost.attachments, layoutMode: layoutMode, isSelected: isSelected, searchText: searchText, dcmtTypeDescriptors: dcmtTypeDescriptors, treeFs: treeFs, draftLatestInfoMap: draftLatestInfoMap, archivedDocumentMap: archivedDocumentMap, handleAttachmentFocus: handleFocusedAttachment, openDcmtForm: openDcmtForm }))] }, `${id}-blogpost-${blogPost.id}`) })] }, "blog-post-wrapper-" + id + "-" + blogPost.id);
|
|
683
|
-
}), _jsx("div", { ref: bottomRef }), _jsx(TMContextMenu, { items: menuItems, target: `#${id}-blogs-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
683
|
+
}), _jsx("div", { ref: bottomRef })] }), _jsx(TMContextMenu, { items: menuItems, target: `#${id}-blogs-wrapper`, externalControl: {
|
|
684
|
+
visible: menuVisible,
|
|
685
|
+
position: menuPosition,
|
|
686
|
+
onClose: closeContextMenu,
|
|
687
|
+
} }), (showTaskForm && handleNavigateToWGs && handleNavigateToDossiers && getAllTasks && deleteTaskByIdsCallback && addTaskCallback && editTaskCallback) && _jsx("div", { style: { height: "100%", width: "100%" }, children: _jsx(TMTaskForm, { id: -1, title: SDKUI_Localizator.ContextualTask, isModal: true, width: taskModalSizes(deviceType, FormModes.Create).width, height: taskModalSizes(deviceType, FormModes.Create).height, formMode: FormModes.Create, visualizedTasks: [], currentTask: currentTask, setCurrentTask: () => { }, selectedRowKeys: [], handleFocusedRowKeyChange: () => { }, onStatusChanged: () => { }, onSaved: onSavedTaskFormCallback, onClose: () => closeTaskFormCallback(), onCancel: () => closeTaskFormCallback(), usersList: participants, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, isContextualCreate: true, taskContext: taskContext, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback }) }), (dcmtForm.dcmt && dcmtForm.dcmt.TID && dcmtForm.dcmt.DID) && _jsx(TMDcmtForm, { TID: Number(dcmtForm.dcmt.TID), DID: Number(dcmtForm.dcmt.DID), layoutMode: LayoutModes.Update, onClose: closeDcmtForm, isClosable: true, titleModal: SDKUI_Localizator.Attachment + ": " + dcmtForm.dcmt.fileName, isModal: true, widthModal: "95%", heightModal: "95%", allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, Number(dcmtForm.dcmt.TID), Number(dcmtForm.dcmt.DID)) }), (showFloatingCommentButton && showCommentFormCallback && !(context?.engine === 'WorkingGroupEngine' && context?.object?.customData1 === 1)) && _jsx("button", { style: {
|
|
688
688
|
position: 'absolute',
|
|
689
689
|
bottom: '18px',
|
|
690
690
|
right: '20px',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { DcmtTypeListCacheService } from "@topconsultnpm/sdk-ts";
|
|
3
|
-
import { getAvatarColor, extractInitialsFromName, SDKUI_Localizator, formatBytes, IconMenuCAWorkingGroups, IconCADossier, Globalization } from "../../helper";
|
|
3
|
+
import { getAvatarColor, extractInitialsFromName, SDKUI_Localizator, formatBytes, IconMenuCAWorkingGroups, IconCADossier, Globalization, PDGS_COLORS } from "../../helper";
|
|
4
4
|
import { TMColors } from "../../utils/theme";
|
|
5
5
|
import TMTooltip from "../base/TMTooltip";
|
|
6
6
|
export const DRAFT_TYPE_TID = 6;
|
|
@@ -167,7 +167,7 @@ export const getDcmtTypeDescriptor = async (blogPosts) => {
|
|
|
167
167
|
};
|
|
168
168
|
export const BlogPostHomeHeader = (header, classId, isSelected, searchText, headerClickCallback) => {
|
|
169
169
|
const isWorkGroup = classId === 'WG';
|
|
170
|
-
const iconColor = isSelected ? '#ffffff' : isWorkGroup ?
|
|
170
|
+
const iconColor = isSelected ? '#ffffff' : isWorkGroup ? PDGS_COLORS.WORKING_GROUP : PDGS_COLORS.DOSSIER;
|
|
171
171
|
return (_jsxs("div", { style: {
|
|
172
172
|
display: "flex",
|
|
173
173
|
alignItems: "center",
|
|
@@ -43,6 +43,8 @@ export { editorColorManager } from './editors/TMEditorStyled';
|
|
|
43
43
|
export { default as TMLocalizedTextBox } from './editors/TMLocalizedTextBox';
|
|
44
44
|
export * from './choosers/TMCultureIDPicker';
|
|
45
45
|
export * from './choosers/TMDataListItemChooser';
|
|
46
|
+
export * from './choosers/TMDataListItemFields';
|
|
47
|
+
export * from './choosers/TMImageIDChooser';
|
|
46
48
|
export * from './choosers/TMDistinctValues';
|
|
47
49
|
export * from './choosers/TMDiskChooser';
|
|
48
50
|
export * from './choosers/TMDynDataListItemChooser';
|
package/lib/components/index.js
CHANGED
|
@@ -46,6 +46,8 @@ export { default as TMLocalizedTextBox } from './editors/TMLocalizedTextBox';
|
|
|
46
46
|
// chooserss
|
|
47
47
|
export * from './choosers/TMCultureIDPicker';
|
|
48
48
|
export * from './choosers/TMDataListItemChooser';
|
|
49
|
+
export * from './choosers/TMDataListItemFields';
|
|
50
|
+
export * from './choosers/TMImageIDChooser';
|
|
49
51
|
export * from './choosers/TMDistinctValues';
|
|
50
52
|
export * from './choosers/TMDiskChooser';
|
|
51
53
|
export * from './choosers/TMDynDataListItemChooser';
|
|
@@ -41,6 +41,8 @@ const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastR
|
|
|
41
41
|
let itemsCount = gridInstance?.instance().getDataSource().items().length;
|
|
42
42
|
if (itemsCount && itemsCount > 0) {
|
|
43
43
|
gridInstance?.instance().selectRows(selectedItems?.map((item) => item.id) ?? [], false);
|
|
44
|
+
if (selectedItems && selectedItems.length > 0 && (selectedItems?.[0]).id)
|
|
45
|
+
gridInstance?.instance()?.navigateToRow((selectedItems?.[0]).id);
|
|
44
46
|
}
|
|
45
47
|
}, [selectedItems]);
|
|
46
48
|
useEffect(() => {
|
|
@@ -52,6 +54,8 @@ const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastR
|
|
|
52
54
|
useEffect(() => {
|
|
53
55
|
if (lastRefreshTime) {
|
|
54
56
|
loadDataAsync(id);
|
|
57
|
+
if (id)
|
|
58
|
+
gridInstance?.instance()?.navigateToRow(id);
|
|
55
59
|
}
|
|
56
60
|
}, [lastRefreshTime]);
|
|
57
61
|
useEffect(() => {
|
|
@@ -48,6 +48,7 @@ interface ITMQueryEditor extends ITMApplyFormProps<QueryDescriptor> {
|
|
|
48
48
|
ShowOnlySAP?: boolean;
|
|
49
49
|
updateIsModalOpen?: (isOpen: boolean) => void;
|
|
50
50
|
showSearchResultSidebar?: boolean;
|
|
51
|
+
showDcmtFormSidebar?: boolean;
|
|
51
52
|
showToppyDraggableHelpCenter?: boolean;
|
|
52
53
|
toppyHelpCenterUsePortal?: boolean;
|
|
53
54
|
}
|
|
@@ -62,7 +62,7 @@ export function useQueryApplyForm(d, formMode, inputData, onApplied, parameters)
|
|
|
62
62
|
const [validationItems, setValidationItems] = useState([]);
|
|
63
63
|
return { formData, setFormData, formDataOrig, validationItems, setValidationItems, exception, applyData };
|
|
64
64
|
}
|
|
65
|
-
const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDistinct = false, showToolbar = true, validateSelect = true, validateOrderBy = true, raiseWarningForOnlyMetadataDcmtTypes = false, onApplied, onClose, height = 'auto', borderRadius = '4px', searchText, showApply, showUndo, showBack, onFromTIDChanged, ShowOnlySAP, updateIsModalOpen, showSearchResultSidebar = true, showToppyDraggableHelpCenter = true, toppyHelpCenterUsePortal = false }) => {
|
|
65
|
+
const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDistinct = false, showToolbar = true, validateSelect = true, validateOrderBy = true, raiseWarningForOnlyMetadataDcmtTypes = false, onApplied, onClose, height = 'auto', borderRadius = '4px', searchText, showApply, showUndo, showBack, onFromTIDChanged, ShowOnlySAP, updateIsModalOpen, showSearchResultSidebar = true, showDcmtFormSidebar = true, showToppyDraggableHelpCenter = true, toppyHelpCenterUsePortal = false }) => {
|
|
66
66
|
const [confirmQueryParams, ConfirmQueryParamsDialog] = useQueryParametersDialog();
|
|
67
67
|
const { formData, setFormData, formDataOrig, validationItems, setValidationItems, exception, applyData } = useQueryApplyForm(Descriptors.Query, formMode, inputData, onApplied);
|
|
68
68
|
const [dcmtTypesList, setDcmtTypesList] = useState([]);
|
|
@@ -598,7 +598,7 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDis
|
|
|
598
598
|
// #region Ricerca
|
|
599
599
|
const renderResultSearchForm = (_jsx(TMSearchResult, { context: SearchResultContext.METADATA_SEARCH, allowFloatingBar: false, onClose: () => {
|
|
600
600
|
setShowResultSearch(false);
|
|
601
|
-
}, searchResults: resultSearch, showSearchResultSidebar: showSearchResultSidebar, showToppyDraggableHelpCenter: showToppyDraggableHelpCenter, toppyHelpCenterUsePortal: toppyHelpCenterUsePortal }));
|
|
601
|
+
}, searchResults: resultSearch, showSearchResultSidebar: showSearchResultSidebar, showDcmtFormSidebar: showDcmtFormSidebar, showToppyDraggableHelpCenter: showToppyDraggableHelpCenter, toppyHelpCenterUsePortal: toppyHelpCenterUsePortal }));
|
|
602
602
|
const onSearchAsync = async (qdInput) => {
|
|
603
603
|
try {
|
|
604
604
|
let qdSearch = await prepareQdForSearchAsync(qdInput);
|
|
@@ -101,6 +101,11 @@ export function LocalizeJobTypes(value) {
|
|
|
101
101
|
case CultureIDs.It_IT: return value?.toString();
|
|
102
102
|
default: return "CustomsDrawerPlus";
|
|
103
103
|
}
|
|
104
|
+
// case JobTypes.CassettoDoganaleDistiller:
|
|
105
|
+
// switch (cultureID) {
|
|
106
|
+
// case CultureIDs.It_IT: return value?.toString();
|
|
107
|
+
// default: return "CustomsDrawerDistiller";
|
|
108
|
+
// }
|
|
104
109
|
default: return value?.toString() ?? '';
|
|
105
110
|
}
|
|
106
111
|
}
|
|
@@ -16,6 +16,8 @@ export declare class UserSettings {
|
|
|
16
16
|
fullTextSettings: FullTextSettings;
|
|
17
17
|
searchSettings: SearchSettings;
|
|
18
18
|
themeSettings: ThemeSettings;
|
|
19
|
+
devSettings: DevSettings;
|
|
20
|
+
ctrlWfSettings: CtrlWfSettings;
|
|
19
21
|
dcmtFormSettings: DcmtFormSettings[];
|
|
20
22
|
wgDraftCheckoutInfo: CheckoutInfo[];
|
|
21
23
|
dcmtCheckoutInfo: CheckoutInfo[];
|
|
@@ -84,6 +86,9 @@ export declare class ArchivingSettings {
|
|
|
84
86
|
export declare class FullTextSettings {
|
|
85
87
|
mruTerms: string[];
|
|
86
88
|
}
|
|
89
|
+
export declare class DevSettings {
|
|
90
|
+
betaFeatures: number;
|
|
91
|
+
}
|
|
87
92
|
export declare class AdvancedSettings {
|
|
88
93
|
private _expertMode;
|
|
89
94
|
get expertMode(): number;
|
|
@@ -92,6 +97,9 @@ export declare class AdvancedSettings {
|
|
|
92
97
|
expertMode: number;
|
|
93
98
|
};
|
|
94
99
|
}
|
|
100
|
+
export declare class CtrlWfSettings {
|
|
101
|
+
detailWIFormWidth: string;
|
|
102
|
+
}
|
|
95
103
|
export declare class DcmtFormSettings {
|
|
96
104
|
TID: number | undefined;
|
|
97
105
|
layout: {
|
|
@@ -18,6 +18,8 @@ export class UserSettings {
|
|
|
18
18
|
this.fullTextSettings = new FullTextSettings();
|
|
19
19
|
this.searchSettings = new SearchSettings();
|
|
20
20
|
this.themeSettings = new ThemeSettings(true);
|
|
21
|
+
this.devSettings = new DevSettings();
|
|
22
|
+
this.ctrlWfSettings = new CtrlWfSettings();
|
|
21
23
|
this.dcmtFormSettings = [];
|
|
22
24
|
this.wgDraftCheckoutInfo = [];
|
|
23
25
|
this.dcmtCheckoutInfo = [];
|
|
@@ -120,6 +122,11 @@ export class FullTextSettings {
|
|
|
120
122
|
this.mruTerms = [];
|
|
121
123
|
}
|
|
122
124
|
}
|
|
125
|
+
export class DevSettings {
|
|
126
|
+
constructor() {
|
|
127
|
+
this.betaFeatures = 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
123
130
|
export class AdvancedSettings {
|
|
124
131
|
constructor() {
|
|
125
132
|
this._expertMode = 0;
|
|
@@ -142,6 +149,11 @@ export class AdvancedSettings {
|
|
|
142
149
|
};
|
|
143
150
|
}
|
|
144
151
|
}
|
|
152
|
+
export class CtrlWfSettings {
|
|
153
|
+
constructor() {
|
|
154
|
+
this.detailWIFormWidth = '30';
|
|
155
|
+
}
|
|
156
|
+
}
|
|
145
157
|
export class DcmtFormSettings {
|
|
146
158
|
constructor() {
|
|
147
159
|
this.layout = {};
|
|
@@ -37,6 +37,7 @@ export declare class SDKUI_Localizator {
|
|
|
37
37
|
static get Anomalies(): "Anomalien" | "Anomalies" | "Anomalías" | "Anomalias" | "Anomalie";
|
|
38
38
|
static get Answer(): "Antwort" | "Answer" | "Respuesta" | "Réponse" | "Resposta" | "Risposta";
|
|
39
39
|
static get AnswerTooltip(): "Die Antwort kann nur bearbeitet werden, wenn der Aktivitätsstatus \"Abgeschlossen\", \"Ausstehend\" oder \"Verschoben\" ist." | "The answer can be edited only if the activity status is \"Completed\", \"Pending\", or \"Deferred\"." | "La respuesta solo se puede editar si el estado de la actividad es \"Completada\", \"Pendiente\" o \"Pospuesta\"." | "La réponse peut être modifiée uniquement si l'état de l’activité est \"Terminée\", \"En attente\" ou \"Reportée\"." | "A resposta só pode ser editada se o estado da atividade for \"Concluída\", \"Pendente\" ou \"Adiada\"." | "La risposta può essere modificata solo se lo stato dell’attività è \"Completata\", \"In attesa\" o \"Rinviata\".";
|
|
40
|
+
static get NoAnswerProvided(): "Keine Antwort" | "No answer" | "Sin respuesta" | "Aucune réponse" | "Nenhuma resposta" | "Nessuna risposta";
|
|
40
41
|
static get Application(): "Anwendung" | "Application" | "Aplicación" | "Aplicação" | "Applicazione";
|
|
41
42
|
static get Applied(): string;
|
|
42
43
|
static get Apply(): "Anwenden" | "Apply" | "Aplicar" | "Applique" | "Applica";
|
|
@@ -84,6 +85,7 @@ export declare class SDKUI_Localizator {
|
|
|
84
85
|
static get CancelCheckOut(): string;
|
|
85
86
|
static get Cancel(): "Abbrechen" | "Cancel" | "Anular" | "Annuler" | "Cancelar" | "Annulla";
|
|
86
87
|
static get ChangePassword(): "Kennwort ändern" | "Change password" | "Cambiar la contraseña" | "Changer le mot de passe" | "Alterar a senha" | "Cambia password";
|
|
88
|
+
static get ChangeStatusTo(): string;
|
|
87
89
|
static get CharactersRemaining(): "verbleibende Zeichen" | "characters remaining" | "caracteres restantes" | "caractères restants" | "caratteri rimanenti";
|
|
88
90
|
static get CheckIn(): "Check in" | "Enregistrement";
|
|
89
91
|
static get CheckInElementConfirm(): string;
|
|
@@ -99,6 +101,8 @@ export declare class SDKUI_Localizator {
|
|
|
99
101
|
static get ClearCache(): string;
|
|
100
102
|
static get ClearOTP(): "OTP löschen" | "Clear OTP" | "Borrar OTP" | "Effacer l'OTP" | "Limpar OTP" | "Cancella OTP";
|
|
101
103
|
static get Close(): "Ausgang" | "Close" | "Salida" | "Sortie" | "Saída" | "Chiudi";
|
|
104
|
+
static get Closed(): "Geschlossen" | "Closed" | "Cerrada" | "Fermée" | "Fechada" | "Chiusa";
|
|
105
|
+
static get CloseTask(): string;
|
|
102
106
|
static get Columns_All_Hide(): "Alle Spalten ausblenden" | "Hide all columns" | "Ocultar todas las columnas" | "Masquer toutes les colonnes" | "Ocultar todas as colunas" | "Nascondi tutte le colonne";
|
|
103
107
|
static get Columns_All_Show(): "Alle Spalten anzeigen" | "Show all columns" | "Mostrar todas las columnas" | "Afficher toutes les colonnes" | "Mostrar todas as colunas" | "Visualizza tutte le colonne";
|
|
104
108
|
static get Comment(): string;
|
|
@@ -212,6 +216,7 @@ export declare class SDKUI_Localizator {
|
|
|
212
216
|
static get DuplicateDocument(): string;
|
|
213
217
|
static get DuplicateNameError(): "Der Name existiert bereits in der Anmeldehistorie. Bitte wählen Sie einen anderen Namen" | "The name already exists in the login history. Please choose a different nam" | "El nombre ya existe en el historial de inicio de sesión. Por favor, elija un nombre diferente" | "Le nom existe déjà dans l'historique de connexion. Veuillez choisir un autre nom" | "O nome já existe no histórico de login. Por favor, escolha um nome diferente" | "Il nome esiste già nella cronologia di accesso. Si prega di scegliere un nome diverso";
|
|
214
218
|
static get DuplicationOperationInterrupted(): "Duplikationsvorgang abgebrochen" | "Duplication operation interrupted" | "Operación de duplicación interrumpida" | "Opération de duplication interrompue" | "Operação de duplicação interrompida" | "Operazione di duplicazione interrotta";
|
|
219
|
+
static get DuplicateActivity(): string;
|
|
215
220
|
static get Edit_ConfirmFor1(): "Möchten Sie '{{0}}' ändern?" | "Are you sure you want to modify '{{0}}'?" | "¿Estás seguro de que deseas modificar '{{0}}'?" | "Êtes-vous sûr de vouloir modifier '{{0}}'?" | "Você tem certeza que deseja modificar '{{0}}'?" | "Sei sicuro di voler modificare '{{0}}'?";
|
|
216
221
|
static get Edit_ConfirmForN(): "{{0}} ausgewählte Objekte. Alle ändern?" | "{{0}} selected objects. Modify them all?" | "{{0}} objetos seleccionados. ¿Modificar todos?" | "{{0}} objets sélectionnés. Voulez-vous tous les modifier?" | "{{0}} objetos selecionados. Modificá-los todos?" | "{{0}} oggetti selezionati. Modificare tutti?";
|
|
217
222
|
static get EditorConfiguration(): string;
|
|
@@ -240,6 +245,8 @@ export declare class SDKUI_Localizator {
|
|
|
240
245
|
static get EvaluateResult(): "Bewerten Sie das Ergebnis" | "Evaluate result" | "Valorar el resultado" | "Évalue les résultats" | "Avalia os resultados" | "Valuta il risultato";
|
|
241
246
|
static get Expected(): "Erwartet" | "Expected" | "Esperado" | "Attendu" | "Atteso";
|
|
242
247
|
static get Expiration(): "Ablaufdatum" | "Expiration" | "Fecha de expiración" | "Date d'expiration" | "Data de expiração" | "Scadenza";
|
|
248
|
+
static get ExpirationDate(): "Ablaufdatum" | "Expiration date" | "Fecha de vencimiento" | "Date d'échéance" | "Data de validade" | "Data di scadenza";
|
|
249
|
+
static get ExpirationDateMustBeAfterCurrentDateTime(): "Das Ablaufdatum muss nach dem aktuellen Datum und der aktuellen Uhrzeit liegen." | "The expiration date must be after the current date and time." | "La fecha de vencimiento debe ser posterior a la fecha y hora actual." | "La date d'expiration doit être postérieure à la date et l'heure actuelles." | "A data de validade deve ser posterior à data e hora atuais." | "La data di scadenza deve essere successiva alla data e ora corrente.";
|
|
243
250
|
static get ExpertMode(): "Expertenmodus" | "Expert mode" | "Modo experto" | "Mode expert" | "Modo especialista" | "Modalità esperto";
|
|
244
251
|
static get Expiring(): "Ablaufend" | "Expiring" | "Por vencer" | "Expirant" | "Vencendo" | "In scadenza";
|
|
245
252
|
static get Export(): "Exportieren" | "Export" | "Exportar" | "Exporter" | "Esporta";
|
|
@@ -458,6 +465,7 @@ export declare class SDKUI_Localizator {
|
|
|
458
465
|
static get ParametricFilterTypes_ByUserID(): "Filtern nach {@UserID}" | "Filter on {@UserID}" | "Filtro en {@UserID}" | "Filtre sur {@UserID}" | "Filtre on {@UserID}" | "Filtro su {@UserID}";
|
|
459
466
|
static get ParametricFilterTypes_ByUserName(): "Filtern nach {@Benutzername} (=)" | "Filter on {@UserName} (=)" | "Filtro en {@UserName} (=)" | "Filtre sur {@UserName} (=)" | "Filtre on {@UserName} (=)" | "Filtro su {@UserName} (=)";
|
|
460
467
|
static get ParametricFilterTypes_ByUserNameC(): "Filter nach {@Benutzername} (Enthält)" | "Filter on {@UserName} (Contains)" | "Filtro en {@UserName} (Contiene)" | "Filtre sur {@UserName} (Contient)" | "Filtre on {@UserName} (Contém)" | "Filtro su {@UserName} (Contiene)";
|
|
468
|
+
static get PaginationInfo(): string;
|
|
461
469
|
static get Participants(): "Teilnehmer" | "Participants" | "Participantes" | "Partecipanti";
|
|
462
470
|
static get Password(): "Passwort" | "Password" | "Contraseña" | "Mot de passe" | "Senha";
|
|
463
471
|
static get PassToArchive(): "Zur Archivierung übergeben" | "Pass to archive" | "Pasar a archivo" | "Passer à l'archivage" | "Passar para arquivo" | "Passa ad archiviazione";
|
|
@@ -515,6 +523,8 @@ export declare class SDKUI_Localizator {
|
|
|
515
523
|
static get Redo(): "Wiederherstellen" | "Redo" | "Rehacer" | "Rétablir" | "Refazer" | "Rifai";
|
|
516
524
|
static get Reject(): "Ablehnen" | "Reject" | "Rechazar" | "Rejeter" | "Rejeitar" | "Rifiuta";
|
|
517
525
|
static get Relations(): "Korrelationen" | "Correlations" | "Correlaciones" | "Relations" | "Correlacionados" | "Correlazioni";
|
|
526
|
+
static get RelationsNotFound(): "Keine Korrelationen gefunden" | "No correlations found" | "No se encontraron correlaciones" | "Aucune corrélation trouvée" | "Nenhuma correlação encontrada" | "Nessuna correlazione trovata";
|
|
527
|
+
static get RelatedDcmtsNotFound(): "Für das ausgewählte Dokument wurden keine zugehörigen Dokumente gefunden." | "No related documents were found for the selected document." | "No se encontraron documentos relacionados para el documento seleccionado." | "Aucun document associé n'a été trouvé pour le document sélectionné." | "Nenhum documento relacionado foi encontrado para o documento selecionado." | "Non sono stati trovati documenti correlati per il documento selezionato.";
|
|
518
528
|
static get RelationManyToMany(): "Folge viele mit vielen" | "Relation many to many" | "Correlación muchos a muchos" | "Corrélation plusieurs à plusieurs" | "Muitos para muitos relação" | "Correlazione molti a molti";
|
|
519
529
|
static get RelationType(): "Art der Beziehung" | "Relation type" | "Tipo de relación" | "Type de relation" | "Tipo de relacionamento" | "Tipo di relazione";
|
|
520
530
|
static get RemoveContextualFilter(): "Kontextbezogenen Filter entfernen" | "Remove contextual filter" | "Eliminar filtro contextual" | "Supprimer le filtre contextuel" | "Remover filtro contextual" | "Rimuovi filtro contestuale";
|
|
@@ -535,7 +545,6 @@ export declare class SDKUI_Localizator {
|
|
|
535
545
|
static get RequiredNOT(): "Nicht obligatorisch" | "Not mandatory" | "No obligatorio" | "Pas obligatoire" | "Não é obrigatório" | "Non obbligatorio";
|
|
536
546
|
static get Refresh(): "Aktualisieren" | "Refresh" | "Actualizar" | "Mis à jour" | "Refrescar" | "Aggiorna";
|
|
537
547
|
static get Reminder(): "Erinnerung" | "Reminder" | "Recordatorio" | "Rappel" | "Lembrete" | "Promemoria";
|
|
538
|
-
static get ReminderDateMustBeBeforeEndDate(): "Das Erinnerungsdatum muss vor dem Enddatum liegen" | "The reminder date must be before the end date" | "La fecha de recordatorio debe ser anterior a la fecha de finalización" | "La date de rappel doit être antérieure à la date de fin" | "A data de lembrete deve ser anterior à data de término" | "La data di promemoria deve essere precedente alla data di fine";
|
|
539
548
|
static get ReminderSetForToday(): "Es gibt eine Erinnerung, die für heute eingestellt ist und bis zum Ablaufdatum gültig ist" | "There is a reminder set for today, valid until the expiration date" | "Hay un recordatorio establecido para hoy, válido hasta la fecha de vencimiento" | "Il y a un rappel réglé pour aujourd'hui, valable jusqu'à la date d'échéance" | "Há um lembrete definido para hoje, válido até à data de expiração" | "È presente un promemoria impostato per oggi, valido fino alla data di scadenza";
|
|
540
549
|
static get Remove(): "Entfernen" | "Remove" | "Quitar" | "Supprime" | "Remover" | "Rimuovi";
|
|
541
550
|
static get RemoveAll(): "Alle entfernen" | "Remove all" | "Eliminar todo" | "Supprime tout" | "Remover todos" | "Rimuovi tutto";
|
|
@@ -551,7 +560,10 @@ export declare class SDKUI_Localizator {
|
|
|
551
560
|
static get Rows(): "Linien" | "rows" | "líneas" | "lignes" | "linhas" | "righe";
|
|
552
561
|
static get Save(): "Speichern" | "Save" | "Guardar" | "Enregistre" | "Salvar" | "Salva";
|
|
553
562
|
static get SaveAndLogin(): string;
|
|
563
|
+
static get SaveAndClose(): string;
|
|
564
|
+
static get SavingInProgress(): string;
|
|
554
565
|
static get SaveQuestion(): "Ihre Änderungen speichern?" | "Save modifications?" | "¿Guardar modificaciones aportadas?" | "Enregistrez les modifications?" | "Salve as alterações?" | "Salvare le modifiche apportate?";
|
|
566
|
+
static get FormErrorsProceedQuestion(): "Es gibt Fehler im Formular. Wenn Sie fortfahren, werden die Daten nicht gespeichert. Möchten Sie trotzdem fortfahren?" | "There are errors in the form. If you continue, the data will not be saved. Do you want to proceed anyway?" | "Hay errores en el formulario. Si continúas, los datos no se guardarán. ¿Quieres proceder de todos modos?" | "Il y a des erreurs dans le formulaire. Si vous continuez, les données ne seront pas enregistrées. Voulez-vous continuer quand même?" | "Há erros no formulário. Se continuar, os dados não serão salvos. Deseja prosseguir mesmo assim?" | "Ci sono errori nel form. Se continui, i dati non saranno salvati. Vuoi comunque procedere?";
|
|
555
567
|
static get SavedQueryNew(): "Neue Suche speichern" | "Save new search" | "Guardar nueva búsqueda" | "Enregistrer la nouvelle recherche" | "Guardar nova pesquisa" | "Salva nuova ricerca";
|
|
556
568
|
static get SavedQueryUpdate(): "Suche bearbeiten" | "Modify query" | "Modificar búsqueda" | "Modifie la recherche" | "Mudar pesquisa" | "Modifica ricerca";
|
|
557
569
|
static get Search(): "Auf der Suche nach" | "Search" | "Búsqueda" | "Recherche" | "Pesquisa" | "Ricerca";
|
|
@@ -569,6 +581,7 @@ export declare class SDKUI_Localizator {
|
|
|
569
581
|
static get SelectArchiveToStart(): "Klicken Sie auf Archivieren, um zu beginnen." | "Click on Archive button to start." | "Haz clic en el botón Archivar para comenzar." | "Cliquez sur le bouton Archiver pour commencer." | "Clique no botão Arquivar para iniciar." | "Clicca sul pulsante Archivia per iniziare.";
|
|
570
582
|
static get SelectAttachToStart(): "Sie können Dateien zu Ihrer E-Mail hinzufügen, klicken Sie auf Anhängen, um zu beginnen." | "You can attach files to your email, click on Attach button to start." | "Puedes adjuntar archivos a tu correo electrónico, haz clic en el botón Adjuntar para comenzar." | "Vous pouvez joindre des fichiers à votre e-mail, cliquez sur le bouton Joindre pour commencer." | "Você pode anexar arquivos ao seu e-mail, clique no botão Anexar para iniciar." | "Puoi allegare file alla tua email, clicca sul pulsante Allega per iniziare.";
|
|
571
583
|
static get SelectFromAttachments(): "Aus Anhängen auswählen" | "Select from attachments" | "Seleccionar de archivos adjuntos" | "Sélectionner parmi les pièces jointes" | "Selecionar dos anexos" | "Seleziona dagli allegati";
|
|
584
|
+
static get SelectMetadata(): "Metadaten auswählen" | "Select metadata" | "Seleccionar metadatos" | "Sélectionner les métadonnées" | "Selecionar metadados" | "Seleziona metadato";
|
|
572
585
|
static get SelectSupportAreaMessage(): "Wählen Sie einen Ablagebereich aus" | "Select a support area" | "Seleccione un área de apoyo" | "Sélectionnez une zone de support" | "Selecione uma área de apoio" | "Selezionare un'area di appoggio";
|
|
573
586
|
static get SelectedSingular(): string;
|
|
574
587
|
static get Selected(): "Ausgewählt" | "Selected" | "Sélectionné" | "Selecionado" | "Seleccionados" | "Selezionati";
|
|
@@ -627,12 +640,15 @@ export declare class SDKUI_Localizator {
|
|
|
627
640
|
static get StartDateMustBeBeforeEndDate(): "Das Startdatum muss vor dem Enddatum liegen" | "The start date must be before the end date" | "La fecha de inicio debe ser anterior a la fecha de finalización" | "La date de début doit être antérieure à la date de fin" | "A data de início deve ser anterior à data de término" | "La data di inizio deve essere precedente alla data di fine";
|
|
628
641
|
static get Statistics(): "Statistiken" | "Statistics" | "Estadística" | "Statistiques" | "Estatísticas" | "Statistiche";
|
|
629
642
|
static get Status(): "Status" | "Estado" | "Statut" | "Stato";
|
|
643
|
+
static get StatusAndAnswer(): "Status und Antwort" | "Status and answer" | "Estado y respuesta" | "Statut et réponse" | "Estado e resposta" | "Stato e risposta";
|
|
630
644
|
static get Subject(): "Betreff" | "Subject" | "Asunto" | "Objet" | "Assunto" | "Oggetto";
|
|
631
645
|
static get Summary(): "Zusammenfassung" | "Summary" | "Resumen" | "Résumé" | "Resumo" | "Riepilogo";
|
|
632
646
|
static get SwitchUser(): "Benutzer wechseln" | "Switch user" | "Cambiar usuario" | "Changer d'utilisateur" | "Mudar de usuário" | "Cambia utente";
|
|
633
647
|
static get TargetedSearch(): "Gezielte Suche" | "Targeted search" | "Búsqueda dirigida" | "Recherche ciblée" | "Pesquisa direcionada" | "Ricerca puntuale";
|
|
634
|
-
static get TaskAssignedMessage(): "
|
|
635
|
-
static get
|
|
648
|
+
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}}\".";
|
|
649
|
+
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}}\".";
|
|
650
|
+
static get MoreInfoRequested(): "Weitere Informationen angefordert" | "More information requested" | "Solicitud de más información" | "Demande d'informations supplémentaires" | "Pedido de mais informações" | "Richiesta di maggiori informazioni";
|
|
651
|
+
static get TaskAssignedToUserMessage(): "Aufgabe zugewiesen an den Benutzer \"{{0}}\"" | "Task assigned to user \"{{0}}\"" | "Tarea asignada al usuario \"{{0}}\"" | "Tâche assignée à l'utilisateur \"{{0}}\"" | "Tarefa atribuída ao usuário \"{{0}}\"" | "Attività assegnata all'utente \"{{0}}\"";
|
|
636
652
|
static get TaskConsideredExpiring(): "Die Aufgabe wird als ablaufend betrachtet, wenn" | "The task is considered expiring if" | "La tarea se considera por vencer si" | "La tâche est considérée comme expirante si" | "A tarefa é considerada vencendo se" | "L'attività è considerata in scadenza se";
|
|
637
653
|
static get TasksEmpty(): string;
|
|
638
654
|
static get TaskSavedSuccessfully(): string;
|