@topconsultnpm/sdkui-react 6.20.0-dev2.9 → 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/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/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 -53
- 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
|
@@ -28,8 +28,7 @@ const getNonDirectoryFiles = (items, exclude) => {
|
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
30
|
const TMBlogCommentForm = (props) => {
|
|
31
|
-
const maxLength = 1000;
|
|
32
|
-
const { participants, selectedAttachments, selectedAttachmentDid, allFileItems, allArchivedDocumentsFileItems = [], onClose, context, showAttachmentsSection = true, removeAndEditAttachment = true, onFilterCreated, refreshCallback, isCommentRequired = false } = props;
|
|
31
|
+
const { participants, selectedAttachments, selectedAttachmentDid, allFileItems, allArchivedDocumentsFileItems = [], onClose, context, showAttachmentsSection = true, removeAndEditAttachment = true, onFilterCreated, refreshCallback, isCommentRequired = false, maxLength = 1000, onCustomSave } = props;
|
|
33
32
|
// Initialize state with combined array
|
|
34
33
|
const [dataSource, setDataSource] = useState(() => [...getNonDirectoryFiles(allFileItems?.items || [], []), ...allArchivedDocumentsFileItems]);
|
|
35
34
|
const [isEditorEnabled, setIsEditorEnabled] = useState(true);
|
|
@@ -101,14 +100,6 @@ const TMBlogCommentForm = (props) => {
|
|
|
101
100
|
try {
|
|
102
101
|
// Show a loading spinner with a localized description
|
|
103
102
|
TMSpinner.show({ description: SDKUI_Localizator.Comment });
|
|
104
|
-
// Exit early if the engine or its required identifiers are undefined
|
|
105
|
-
if (context.object === undefined
|
|
106
|
-
|| (context.engine === 'WorkingGroupEngine' && !context.object.id)
|
|
107
|
-
|| (context.engine === 'SearchEngine' && (!context.object.tid || !context.object.did))
|
|
108
|
-
|| (context.engine === 'DossierEngine' && !context.object.id)) {
|
|
109
|
-
TMSpinner.hide();
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
103
|
// Create a new BlogPost object
|
|
113
104
|
const blogPost = new BlogPost();
|
|
114
105
|
// Retrieve the comment from formData, or use an empty string if undefined
|
|
@@ -132,36 +123,51 @@ const TMBlogCommentForm = (props) => {
|
|
|
132
123
|
});
|
|
133
124
|
blogPost.attachments = attachment;
|
|
134
125
|
}
|
|
135
|
-
if (
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
// Call the BlogPostAddAsync method to add the blog post to the working group
|
|
139
|
-
const newBlogPostId = await workingGroupEngine.BlogPostAddAsync(context.object.id, blogPost);
|
|
126
|
+
if (onCustomSave) {
|
|
127
|
+
// Use the external save handler - logic is managed externally
|
|
128
|
+
await onCustomSave(blogPost);
|
|
140
129
|
await refreshCallback?.();
|
|
141
|
-
if (newBlogPostId && onFilterCreated) {
|
|
142
|
-
onFilterCreated(post => post.id === newBlogPostId);
|
|
143
|
-
}
|
|
144
|
-
;
|
|
145
130
|
}
|
|
146
|
-
else
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
131
|
+
else {
|
|
132
|
+
// Validate context only when using internal engine logic
|
|
133
|
+
if (context.object === undefined
|
|
134
|
+
|| (context.engine === 'WorkingGroupEngine' && !context.object.id)
|
|
135
|
+
|| (context.engine === 'SearchEngine' && (!context.object.tid || !context.object.did))
|
|
136
|
+
|| (context.engine === 'DossierEngine' && !context.object.id)) {
|
|
137
|
+
TMSpinner.hide();
|
|
138
|
+
return;
|
|
153
139
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
140
|
+
if (context.engine === 'WorkingGroupEngine' && context.object && context.object.id) {
|
|
141
|
+
// Create an instance of WorkingGroupEngine to interact with the working group
|
|
142
|
+
const workingGroupEngine = new WorkingGroupEngine(SDK_Globals.tmSession);
|
|
143
|
+
// Call the BlogPostAddAsync method to add the blog post to the working group
|
|
144
|
+
const newBlogPostId = await workingGroupEngine.BlogPostAddAsync(context.object.id, blogPost);
|
|
145
|
+
await refreshCallback?.();
|
|
146
|
+
if (newBlogPostId && onFilterCreated) {
|
|
147
|
+
onFilterCreated(post => post.id === newBlogPostId);
|
|
148
|
+
}
|
|
149
|
+
;
|
|
150
|
+
}
|
|
151
|
+
else if (context.engine === 'SearchEngine') {
|
|
152
|
+
// Create an instance of SearchEngine
|
|
153
|
+
const searchEngine = SDK_Globals.tmSession?.NewSearchEngine();
|
|
154
|
+
const newBlogPostId = await searchEngine.BlogPostAddAsync(context.object.tid, context.object.did, cleanComment);
|
|
155
|
+
await refreshCallback?.();
|
|
156
|
+
if (newBlogPostId && onFilterCreated) {
|
|
157
|
+
onFilterCreated(post => post.id === newBlogPostId);
|
|
158
|
+
}
|
|
159
|
+
;
|
|
160
|
+
}
|
|
161
|
+
else if (context.engine === 'DossierEngine' && context.object && context.object.id) {
|
|
162
|
+
// Create an instance of DossierEngine
|
|
163
|
+
const dossierEngine = SDK_Globals.tmSession?.NewDossierEngine();
|
|
164
|
+
const newBlogPostId = await dossierEngine.BlogPostAddAsync(context.object.id, blogPost);
|
|
165
|
+
await refreshCallback?.();
|
|
166
|
+
if (newBlogPostId && onFilterCreated) {
|
|
167
|
+
onFilterCreated(post => post.id === newBlogPostId);
|
|
168
|
+
}
|
|
169
|
+
;
|
|
163
170
|
}
|
|
164
|
-
;
|
|
165
171
|
}
|
|
166
172
|
}
|
|
167
173
|
catch (e) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { HomeBlogPost, LayoutModes, ObjectRef, SearchResultDescriptor, TaskDescriptor, ValidationItem } from '@topconsultnpm/sdk-ts';
|
|
2
|
+
import { DcmtTypeDescriptor, HomeBlogPost, LayoutModes, ObjectRef, SearchResultDescriptor, TaskDescriptor, ValidationItem } from '@topconsultnpm/sdk-ts';
|
|
3
3
|
import { DcmtInfo, FormModes, MetadataValueDescriptorEx, TaskContext } from '../../../ts';
|
|
4
4
|
/**
|
|
5
5
|
* Definisce il contesto da cui è stato invocato il TMDcmtForm.
|
|
@@ -62,6 +62,7 @@ interface ITMDcmtFormProps {
|
|
|
62
62
|
onOpenS4TViewerRequest?: (dcmtInfo: Array<DcmtInfo>, onRefreshSearchAsync?: (() => Promise<void>)) => void;
|
|
63
63
|
s4TViewerDialogComponent?: React.ReactNode;
|
|
64
64
|
enableDragDropOverlay?: boolean;
|
|
65
|
+
onScanRequest?: (onFileScanned: (file: File) => void) => void;
|
|
65
66
|
passToSearch?: (outputMids: Array<{
|
|
66
67
|
mid: number;
|
|
67
68
|
value: string;
|
|
@@ -71,6 +72,7 @@ interface ITMDcmtFormProps {
|
|
|
71
72
|
sharedSourceDID?: number;
|
|
72
73
|
allowButtonsRefs?: boolean;
|
|
73
74
|
onReferenceClick?: (ref: ObjectRef) => void;
|
|
75
|
+
openPdfEditor?: (fromDTD?: DcmtTypeDescriptor, file?: File | null, handleFile?: (file: File) => void) => void;
|
|
74
76
|
}
|
|
75
77
|
declare const TMDcmtForm: React.FC<ITMDcmtFormProps>;
|
|
76
78
|
export default TMDcmtForm;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import TMDcmtPreview from './TMDcmtPreview';
|
|
4
4
|
import { AccessLevels, AppModules, ArchiveConstraints, ArchiveEngineByID, DcmtTypeListCacheService, LayoutCacheService, LayoutModes, MetadataDataTypes, ObjectClasses, ResultTypes, SDK_Globals, SDK_Localizator, SystemMIDsAsNumber, SystemTIDs, Task_States, TID_DID, UpdateEngineByID, UserListCacheService, ValidationItem, WorkflowCacheService, WorkItemMetadataNames } from '@topconsultnpm/sdk-ts';
|
|
5
5
|
import { WorkFlowApproveRejectPopUp, WorkFlowMoreInfoPopUp, WorkFlowOperationButtons, WorkFlowReAssignPopUp } from '../workflow/TMWorkflowPopup';
|
|
@@ -8,10 +8,10 @@ import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
|
|
|
8
8
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
|
9
9
|
import { useRelatedDocuments } from '../../../hooks/useRelatedDocuments';
|
|
10
10
|
import { getWorkItemSetIDAsync, handleArchiveVisibility, searchResultToMetadataValues } from '../../../helper/queryHelper';
|
|
11
|
-
import { genUniqueId, IconShow, SDKUI_Localizator, updateMruTids, IconBoard, IconDcmtTypeSys, IconDetailDcmts, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconPreview, isTaskMoreInfo, IconWorkflow, IconSearch, deepCompare, IconCheck, IconActivity, TMImageLibrary, IconStar, IconRelation, IconInfo, IconArchiveDoc, IconDelete, IconPair, IconUnpair, IconArchiveMaster, IconArchiveDetail, getExceptionMessage, isApprovalWorkflowView, getDcmtCicoStatus, IconFileDots, IconCustom, buildWorkItemsFromWFCtrl, IconLock, getDcmtFormToolbarVisibility } from '../../../helper';
|
|
11
|
+
import { genUniqueId, IconShow, SDKUI_Localizator, updateMruTids, IconBoard, IconDcmtTypeSys, IconDetailDcmts, IconDownload, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals, IconPreview, isTaskMoreInfo, IconWorkflow, IconSearch, deepCompare, IconCheck, IconActivity, TMImageLibrary, IconStar, IconRelation, IconInfo, IconArchiveDoc, IconDelete, IconPair, IconUnpair, IconArchiveMaster, IconArchiveDetail, getExceptionMessage, isApprovalWorkflowView, getDcmtCicoStatus, IconFileDots, IconCustom, buildWorkItemsFromWFCtrl, IconLock, getDcmtFormToolbarVisibility, TASK_MORE_INFO_PREFIX_NAME, taskModalSizes, PDGS_COLORS } from '../../../helper';
|
|
12
12
|
import { hasDetailRelations, hasMasterRelations, isXMLFileExt } from '../../../helper/dcmtsHelper';
|
|
13
13
|
import { Gutters, TMColors } from '../../../utils/theme';
|
|
14
|
-
import { StyledFormButtonsContainer, StyledLoadingContainer, StyledModalContainer, StyledReferenceButton, StyledSpinner, StyledToolbarCardContainer } from '../../base/Styled';
|
|
14
|
+
import { ReferencesContainer, StyledFormButtonsContainer, StyledLoadingContainer, StyledModalContainer, StyledReferenceButton, StyledSpinner, StyledToolbarCardContainer } from '../../base/Styled';
|
|
15
15
|
import ShowAlert from '../../base/TMAlert';
|
|
16
16
|
import TMButton from '../../base/TMButton';
|
|
17
17
|
import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames } from '../../base/TMPopUp';
|
|
@@ -46,6 +46,7 @@ import TMDcmtCheckoutInfoForm from '../search/TMDcmtCheckoutInfoForm';
|
|
|
46
46
|
import styled from 'styled-components';
|
|
47
47
|
import { ContextMenu } from '../../NewComponents/ContextMenu';
|
|
48
48
|
import TMToppyDraggableHelpCenter from '../assistant/TMToppyDraggableHelpCenter';
|
|
49
|
+
import TMTaskForm from '../tasks/TMTaskForm';
|
|
49
50
|
//#region Interfaces, Types and Enums
|
|
50
51
|
/**
|
|
51
52
|
* Definisce il contesto da cui è stato invocato il TMDcmtForm.
|
|
@@ -64,7 +65,7 @@ export var InvocationContext;
|
|
|
64
65
|
let abortControllerLocal = new AbortController();
|
|
65
66
|
;
|
|
66
67
|
//#endregion
|
|
67
|
-
const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, showBackButton = true, 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, invocationContext = InvocationContext.Default, titleModal, isModal = false, widthModal = "100%", heightModal = "100%", groupId, onWFOperationCompleted, onTaskCompleted, onTaskCreateRequest, inputFile = null, taskFormDialogComponent, moreInfoTasks, connectorFileSave = undefined, inputMids = [], openS4TViewer = false, onOpenS4TViewerRequest, s4TViewerDialogComponent, enableDragDropOverlay = false, passToSearch, isSharedDcmt = false, sharedSourceTID, sharedSourceDID, allowButtonsRefs = false, onReferenceClick, }) => {
|
|
68
|
+
const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, handleNavigateToWGs, handleNavigateToDossiers, showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, showBackButton = true, 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, invocationContext = InvocationContext.Default, titleModal, isModal = false, widthModal = "100%", heightModal = "100%", groupId, onWFOperationCompleted, onTaskCompleted, onTaskCreateRequest, inputFile = null, taskFormDialogComponent, moreInfoTasks, connectorFileSave = undefined, inputMids = [], openS4TViewer = false, onOpenS4TViewerRequest, s4TViewerDialogComponent, enableDragDropOverlay = false, onScanRequest, openPdfEditor, passToSearch, isSharedDcmt = false, sharedSourceTID, sharedSourceDID, allowButtonsRefs = false, onReferenceClick, }) => {
|
|
68
69
|
const { showHistory, showHistoryCallback, hideHistoryCallback, showCheckoutInformationForm, commentFormState, hideCommentFormCallback, showCheckoutInformationFormCallback, hideCheckoutInformationFormCallback, copyCheckoutPathToClipboardCallback, handleCheckOutCallback, handleCheckInCallback, refreshPreviewTrigger, showCicoWaitPanel, cicoWaitPanelTitle, showCicoPrimaryProgress, cicoPrimaryProgressText, cicoPrimaryProgressValue, cicoPrimaryProgressMax, } = useCheckInOutOperations();
|
|
69
70
|
const [id, setID] = useState('');
|
|
70
71
|
const [showWaitPanelLocal, setShowWaitPanelLocal] = useState(false);
|
|
@@ -86,6 +87,8 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
86
87
|
const [showRejectPopup, setShowRejectPopup] = useState(false);
|
|
87
88
|
const [showReAssignPopup, setShowReAssignPopup] = useState(false);
|
|
88
89
|
const [showMoreInfoPopup, setShowMoreInfoPopup] = useState(false);
|
|
90
|
+
const [showMoreInfoTaskPopup, setShowMoreInfoTaskPopup] = useState(false);
|
|
91
|
+
const [showMoreInfoTaskTask, setShowMoreInfoTaskTask] = useState(undefined);
|
|
89
92
|
const [layout, setLayout] = useState();
|
|
90
93
|
const [customButtonsLayout, setCustomButtonsLayout] = useState();
|
|
91
94
|
const [customButton, setCustomButton] = useState();
|
|
@@ -123,6 +126,10 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
123
126
|
const [refreshBlogTrigger, setRefreshBlogTrigger] = useState(0);
|
|
124
127
|
const [wfError, setWfError] = useState(null);
|
|
125
128
|
const [metadataDcmtOrigin, setMetadataDcmtOrigin] = useState(null);
|
|
129
|
+
const isReadOnlyOriginCallback = useCallback((fromTID) => {
|
|
130
|
+
return layoutMode !== LayoutModes.Ark && layoutMode !== LayoutModes.ArkFromBasket && layoutMode !== LayoutModes.ArkFromFile && layoutMode !== LayoutModes.ArkFromMail
|
|
131
|
+
&& fromTID?.toString() !== TID?.toString();
|
|
132
|
+
}, [layoutMode, TID]);
|
|
126
133
|
const triggerBlogRefresh = useCallback(async () => {
|
|
127
134
|
setRefreshBlogTrigger(prev => prev + 1);
|
|
128
135
|
}, []);
|
|
@@ -194,7 +201,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
194
201
|
let dtd = res?.dtdResult;
|
|
195
202
|
let rows = dtd.rows ? dtd.rows[0] : [];
|
|
196
203
|
let mids = res?.selectMIDs;
|
|
197
|
-
let metadataList = searchResultToMetadataValues(TID, dtd, rows, mids, mdList, layoutMode, origin.fromTID
|
|
204
|
+
let metadataList = searchResultToMetadataValues(TID, dtd, rows, mids, mdList, layoutMode, isReadOnlyOriginCallback(origin.fromTID));
|
|
198
205
|
if (archived) {
|
|
199
206
|
// Usa setFormData con funzione callback per accedere allo stato precedente
|
|
200
207
|
// invece di dipendere da formDataOrig nell'array di dipendenze
|
|
@@ -282,7 +289,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
282
289
|
}
|
|
283
290
|
else {
|
|
284
291
|
const renderedMetadata = dtd?.metadata?.filter((metadata) => handleArchiveVisibility(metadata)) ?? [];
|
|
285
|
-
const metadataList = searchResultToMetadataValues(dtd?.id, undefined, [], [], renderedMetadata, layoutMode, metadataDcmtOrigin?.fromTID
|
|
292
|
+
const metadataList = searchResultToMetadataValues(dtd?.id, undefined, [], [], renderedMetadata, layoutMode, isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID));
|
|
286
293
|
setFormDataOrig(structuredClone(metadataList));
|
|
287
294
|
setFormData(structuredClone(metadataList));
|
|
288
295
|
formDataOrigRef.current = structuredClone(metadataList);
|
|
@@ -297,7 +304,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
297
304
|
setIsInitialLoading(false);
|
|
298
305
|
setIsNavigating(false);
|
|
299
306
|
}
|
|
300
|
-
}, [TID, DID, layoutMode, inputFile, setMetadataList, handleReset, allowButtonsRefs, metadataDcmtOrigin?.fromTID]);
|
|
307
|
+
}, [TID, DID, layoutMode, inputFile, setMetadataList, handleReset, allowButtonsRefs, isReadOnlyOriginCallback, metadataDcmtOrigin?.fromTID]);
|
|
301
308
|
const createChange = useCallback((mid, metadataType, modifiedValue) => {
|
|
302
309
|
return { mid, metadataType, modifiedValue };
|
|
303
310
|
}, []);
|
|
@@ -642,8 +649,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
642
649
|
if (layoutMode !== LayoutModes.Update || !moreInfoTasks) {
|
|
643
650
|
return false;
|
|
644
651
|
}
|
|
645
|
-
return moreInfoTasks.some(task => isTaskMoreInfo(task.name) &&
|
|
646
|
-
task.state !== Task_States.Completed);
|
|
652
|
+
return moreInfoTasks.some(task => isTaskMoreInfo(task.name) && task.state !== Task_States.Completed && task.state !== Task_States.Closed);
|
|
647
653
|
}, [layoutMode, moreInfoTasks]);
|
|
648
654
|
const showToppyForReferences = useMemo(() => {
|
|
649
655
|
if (!allowButtonsRefs || layoutMode !== LayoutModes.Update || isOpenDetails || isOpenMaster)
|
|
@@ -1184,8 +1190,10 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1184
1190
|
}, [focusedMetadataValue?.value, focusedMetadataValue?.mid, TID]);
|
|
1185
1191
|
const handleWFOperationCompleted = useCallback(async () => {
|
|
1186
1192
|
await onWFOperationCompleted?.();
|
|
1187
|
-
|
|
1188
|
-
|
|
1193
|
+
if (!showMoreInfoPopup) {
|
|
1194
|
+
onClose?.();
|
|
1195
|
+
}
|
|
1196
|
+
}, [onWFOperationCompleted, onClose, showMoreInfoPopup]);
|
|
1189
1197
|
// Determina se showAll deve essere automaticamente true
|
|
1190
1198
|
// Best practice: usa useMemo per calcolare valori derivati invece di useEffect con setState
|
|
1191
1199
|
const shouldShowAll = useMemo(() => {
|
|
@@ -1203,7 +1211,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1203
1211
|
}
|
|
1204
1212
|
}, [shouldShowAll, showAll]);
|
|
1205
1213
|
const afterTaskSaved = useCallback(async (task, formMode, forceRefresh = false) => {
|
|
1206
|
-
const shouldRefresh = forceRefresh || (task && task.state === Task_States.Completed) || formMode === FormModes.Create || formMode === FormModes.Duplicate;
|
|
1214
|
+
const shouldRefresh = forceRefresh || (task && (task.state === Task_States.Completed || task.state === Task_States.Closed)) || formMode === FormModes.Create || formMode === FormModes.Duplicate;
|
|
1207
1215
|
if (TID && DID && shouldRefresh) {
|
|
1208
1216
|
await triggerBlogRefresh();
|
|
1209
1217
|
}
|
|
@@ -1214,17 +1222,9 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1214
1222
|
return null;
|
|
1215
1223
|
return (_jsx(Ribbon, { "$isMobile": isMobile, children: _jsx(TMTooltip, { content: checkoutStatus.editLockTooltipText, position: "right", children: _jsx("span", { children: checkoutStatus.mode === 'editMode' ? SDKUI_Localizator.CheckOut : 'Locked' }) }) }));
|
|
1216
1224
|
}, [formData, fromDTD, isMobile]);
|
|
1217
|
-
const isReadOnlyOrigin = useMemo(() => {
|
|
1218
|
-
return layoutMode !== LayoutModes.Ark &&
|
|
1219
|
-
layoutMode !== LayoutModes.ArkFromBasket &&
|
|
1220
|
-
layoutMode !== LayoutModes.ArkFromFile &&
|
|
1221
|
-
layoutMode !== LayoutModes.ArkFromMail &&
|
|
1222
|
-
metadataDcmtOrigin?.fromTID?.toString() !== TID?.toString();
|
|
1223
|
-
}, [layoutMode, metadataDcmtOrigin?.fromTID, TID]);
|
|
1224
1225
|
const tmDcmtForm = useMemo(() => {
|
|
1225
|
-
console.log("layoutMode:", layoutMode);
|
|
1226
1226
|
return _jsxs(_Fragment, { children: [checkoutBadge && _jsx("div", { style: { padding: '10px', display: 'flex', justifyContent: 'center' }, children: checkoutBadge }), metadataValuesSource.length > 0 &&
|
|
1227
|
-
_jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, isExpertMode: isExpertMode, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, isReadOnly: formMode === FormModes.ReadOnly, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, inputMids: inputMids, layout: layout, isReadOnlyOrigin:
|
|
1227
|
+
_jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, isExpertMode: isExpertMode, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, isReadOnly: formMode === FormModes.ReadOnly, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, inputMids: inputMids, layout: layout, isReadOnlyOrigin: isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID), onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
|
|
1228
1228
|
setFormData((prevItems) => prevItems.map((item) => {
|
|
1229
1229
|
const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
|
|
1230
1230
|
return newItem ? { ...item, ...newItem } : item;
|
|
@@ -1270,13 +1270,12 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1270
1270
|
handleConfirmAction,
|
|
1271
1271
|
handleUndo,
|
|
1272
1272
|
handleClearForm,
|
|
1273
|
-
|
|
1273
|
+
isReadOnlyOriginCallback,
|
|
1274
|
+
metadataDcmtOrigin?.fromTID,
|
|
1274
1275
|
]);
|
|
1275
1276
|
const tmBlog = useMemo(() => _jsx(TMDcmtBlog, { tid: TID, did: DID, allTasks: allTasks, fetchBlogDataTrigger: refreshBlogTrigger, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), [TID, DID, allTasks, refreshBlogTrigger, handleNavigateToWGs, handleNavigateToDossiers]);
|
|
1276
1277
|
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: [], inputMids: inputMids }), [TID, layoutMode, formData, deviceType, inputMids]);
|
|
1277
|
-
const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt, dcmtFile: dcmtFile ?? inputFile, deviceType: deviceType, fromDTD: fromDTD, layoutMode: layoutMode, onFileUpload: (file) => {
|
|
1278
|
-
setDcmtFile(file);
|
|
1279
|
-
}, enableDragDropOverlay: enableDragDropOverlay }, refreshPreviewTrigger), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode, inputFile, enableDragDropOverlay, setDcmtFile]);
|
|
1278
|
+
const tmDcmtPreview = useMemo(() => _jsx(TMDcmtPreviewWrapper, { currentDcmt: currentDcmt, dcmtFile: dcmtFile ?? inputFile, deviceType: deviceType, fromDTD: fromDTD, layoutMode: layoutMode, onFileUpload: (file) => { setDcmtFile(file); }, openPdfEditor: openPdfEditor, enableDragDropOverlay: enableDragDropOverlay, onScanRequest: onScanRequest }, refreshPreviewTrigger), [currentDcmt, dcmtFile, deviceType, fromDTD, layoutMode, inputFile, enableDragDropOverlay, setDcmtFile, onScanRequest, openPdfEditor]);
|
|
1280
1279
|
const tmWF = useMemo(() => {
|
|
1281
1280
|
if (isWFDataLoading) {
|
|
1282
1281
|
return (_jsx("div", { style: {
|
|
@@ -1347,7 +1346,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1347
1346
|
did: Number(DID),
|
|
1348
1347
|
name: fromDTD?.nameLoc ?? SDKUI_Localizator.Widget_Activities,
|
|
1349
1348
|
},
|
|
1350
|
-
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved }));
|
|
1349
|
+
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, afterTaskSaved: afterTaskSaved, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }));
|
|
1351
1350
|
}, [allTasks, TID, DID, fromDTD]);
|
|
1352
1351
|
const normalizedTID = TID !== undefined ? Number(TID) : undefined;
|
|
1353
1352
|
const defaultPanelDimensions = {
|
|
@@ -1374,8 +1373,8 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1374
1373
|
};
|
|
1375
1374
|
}
|
|
1376
1375
|
try {
|
|
1377
|
-
const assignedToMe = getTaskAssignedToMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed).length ?? 0;
|
|
1378
|
-
const assignedByMe = getTaskAssignedByMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed).length ?? 0;
|
|
1376
|
+
const assignedToMe = getTaskAssignedToMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed && task.state !== Task_States.Closed).length ?? 0;
|
|
1377
|
+
const assignedByMe = getTaskAssignedByMe(allTasks).filter(task => task.iD1?.toString() === TID.toString() && task.iD2?.toString() === DID.toString() && task.state !== Task_States.Completed && task.state !== Task_States.Closed).length ?? 0;
|
|
1379
1378
|
return {
|
|
1380
1379
|
assignedToMe,
|
|
1381
1380
|
assignedByMe
|
|
@@ -1392,7 +1391,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1392
1391
|
const { assignedToMe, assignedByMe } = getDcmtTasksCounter(TID, DID, allTasks);
|
|
1393
1392
|
let titleDcmtFormPanel = fromDTD?.nameLoc ?? "";
|
|
1394
1393
|
// Caso: Il documento proviene da un'origine esterna
|
|
1395
|
-
if (
|
|
1394
|
+
if (isReadOnlyOriginCallback(metadataDcmtOrigin?.fromTID)) {
|
|
1396
1395
|
titleDcmtFormPanel = (_jsxs("div", { style: { display: 'inline-flex', alignItems: 'center', gap: '4px' }, children: [_jsx(TMTooltip, { content: _jsxs("div", { style: { textAlign: 'left' }, children: [_jsx("p", { children: "Questo documento proviene da un'altra origine e non pu\u00F2 essere modificato." }), _jsx("hr", {}), _jsxs("p", { children: [_jsx("strong", { children: "TID corrente:" }), " ", TID?.toString()] }), _jsxs("p", { children: [_jsx("strong", { children: "Nome corrente:" }), " ", fromDTD?.nameLoc] }), _jsx("hr", {}), _jsxs("p", { children: [_jsx("strong", { children: "TID origine:" }), " ", metadataDcmtOrigin?.fromTID?.toString()] }), _jsxs("p", { children: [_jsx("strong", { children: "Nome origine:" }), " ", metadataDcmtOrigin?.fromName] })] }), children: _jsx(IconLock, { fontSize: 16, style: { alignSelf: 'center' } }) }), metadataDcmtOrigin?.fromName] }));
|
|
1397
1396
|
}
|
|
1398
1397
|
const panels = [
|
|
@@ -1440,7 +1439,13 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1440
1439
|
id: 'tmDcmtPreview',
|
|
1441
1440
|
name: SDKUI_Localizator.PreviewDocument,
|
|
1442
1441
|
contentOptions: { component: tmDcmtPreview },
|
|
1443
|
-
toolbarOptions: {
|
|
1442
|
+
toolbarOptions: {
|
|
1443
|
+
icon: _jsx(IconShow, { fontSize: 24 }),
|
|
1444
|
+
disabled: isPreviewDisabled,
|
|
1445
|
+
visible: getDcmtFormToolbarVisibility(SDK_Globals.tmSession?.SessionDescr?.appModuleID ?? AppModules.SURFER).tmDcmtPreview,
|
|
1446
|
+
orderNumber: 4,
|
|
1447
|
+
isActive: allInitialPanelVisibility['tmDcmtPreview']
|
|
1448
|
+
}
|
|
1444
1449
|
},
|
|
1445
1450
|
{
|
|
1446
1451
|
id: 'tmWF',
|
|
@@ -1476,7 +1481,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1476
1481
|
},
|
|
1477
1482
|
];
|
|
1478
1483
|
return panels;
|
|
1479
|
-
}, [fromDTD, showBackButton, tmDcmtForm, tmBlog, tmSysMetadata, tmDcmtPreview, tmWF, tmDcmtTasks, isPreviewDisabled, isSysMetadataDisabled, isBoardDisabled, isWFDisabled, inputFile, isClosable, allTasks, DID, TID,
|
|
1484
|
+
}, [fromDTD, showBackButton, tmDcmtForm, tmBlog, tmSysMetadata, tmDcmtPreview, tmWF, tmDcmtTasks, isPreviewDisabled, isSysMetadataDisabled, isBoardDisabled, isWFDisabled, inputFile, isClosable, allTasks, DID, TID, isReadOnlyOriginCallback, metadataDcmtOrigin?.fromTID]);
|
|
1480
1485
|
// Retrieves the current document form setting based on the normalized TID
|
|
1481
1486
|
const getCurrentDcmtFormSetting = () => {
|
|
1482
1487
|
const settings = SDKUI_Globals.userSettings.dcmtFormSettings;
|
|
@@ -1529,23 +1534,49 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1529
1534
|
// Return the appropriate layout based on context
|
|
1530
1535
|
return invocationContext === InvocationContext.Todo ? settings?.layoutToDo : settings?.layout;
|
|
1531
1536
|
};
|
|
1532
|
-
const
|
|
1537
|
+
const onBlogCommentFormCustomSave = useCallback(async (blogPost) => {
|
|
1533
1538
|
try {
|
|
1539
|
+
if (!moreInfoTasks || moreInfoTasks.length === 0) {
|
|
1540
|
+
ShowAlert({
|
|
1541
|
+
mode: 'info',
|
|
1542
|
+
title: SDKUI_Localizator.MoreInformation,
|
|
1543
|
+
message: 'Nessun attività di maggiori informazioni da completare',
|
|
1544
|
+
duration: 3000
|
|
1545
|
+
});
|
|
1546
|
+
return;
|
|
1547
|
+
}
|
|
1548
|
+
;
|
|
1549
|
+
const firstTask = moreInfoTasks[0];
|
|
1534
1550
|
TMSpinner.show();
|
|
1535
|
-
|
|
1551
|
+
const newTask = {
|
|
1552
|
+
...firstTask,
|
|
1553
|
+
state: Task_States.Completed,
|
|
1554
|
+
response: blogPost.description,
|
|
1555
|
+
};
|
|
1536
1556
|
await SDK_Globals.tmSession?.NewTaskEngine().UpdateAsync(newTask);
|
|
1537
1557
|
onTaskCompleted?.(newTask);
|
|
1538
1558
|
onClose?.();
|
|
1539
|
-
ShowAlert({
|
|
1559
|
+
ShowAlert({
|
|
1560
|
+
mode: 'success',
|
|
1561
|
+
title: SDKUI_Localizator.MoreInformation,
|
|
1562
|
+
message: SDKUI_Localizator.MoreInfoCompleted,
|
|
1563
|
+
duration: 3000
|
|
1564
|
+
});
|
|
1540
1565
|
}
|
|
1541
1566
|
catch (e) {
|
|
1542
|
-
TMSpinner.hide();
|
|
1543
1567
|
TMExceptionBoxManager.show({ exception: e });
|
|
1544
1568
|
}
|
|
1545
1569
|
finally {
|
|
1546
1570
|
TMSpinner.hide();
|
|
1547
1571
|
}
|
|
1548
1572
|
}, [moreInfoTasks, onTaskCompleted, onClose]);
|
|
1573
|
+
// Memoized props for TMBlogCommentForm to avoid unnecessary re-renders
|
|
1574
|
+
const blogCommentFormContext = useMemo(() => ({ engine: 'SearchEngine', object: { tid: TID, did: DID } }), [TID, DID]);
|
|
1575
|
+
const handleBlogCommentFormClose = useCallback(() => {
|
|
1576
|
+
setShowCommentForm(false);
|
|
1577
|
+
}, []);
|
|
1578
|
+
const emptyParticipants = useMemo(() => [], []);
|
|
1579
|
+
const emptyArchivedDocumentsFileItems = useMemo(() => [], []);
|
|
1549
1580
|
const handleSignApprove = useCallback(() => {
|
|
1550
1581
|
if (onOpenS4TViewerRequest && TID && DID) {
|
|
1551
1582
|
onOpenS4TViewerRequest([{ TID, DID }]);
|
|
@@ -1575,6 +1606,17 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1575
1606
|
[ObjectClasses.WorkingGroup]: { label: SDKUI_Localizator.GoToWorkgroup },
|
|
1576
1607
|
// add other ObjectClasses here as needed
|
|
1577
1608
|
}), []);
|
|
1609
|
+
const onSavedTaskFormCallback = (task) => {
|
|
1610
|
+
if (task && showMoreInfoTaskTask && editTaskCallback) {
|
|
1611
|
+
editTaskCallback(task);
|
|
1612
|
+
setShowMoreInfoTaskPopup(false);
|
|
1613
|
+
setShowMoreInfoTaskTask(undefined);
|
|
1614
|
+
ShowAlert({ message: SDKUI_Localizator.TaskSavedSuccessfully.replaceParams(task.name ?? '-'), mode: 'success', title: SDKUI_Localizator.Widget_Activities, duration: 3000 });
|
|
1615
|
+
}
|
|
1616
|
+
else {
|
|
1617
|
+
ShowAlert({ message: SDKUI_Localizator.TaskSaveError, mode: 'error', title: SDKUI_Localizator.Widget_Activities, duration: 3000 });
|
|
1618
|
+
}
|
|
1619
|
+
};
|
|
1578
1620
|
const renderDcmtForm = () => {
|
|
1579
1621
|
// Show flat spinner during initial load (before component is mounted)
|
|
1580
1622
|
if (isInitialLoading) {
|
|
@@ -1605,26 +1647,14 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1605
1647
|
isEditable: true,
|
|
1606
1648
|
value: FormulaHelper.addFormulaTag(newFormula.expression)
|
|
1607
1649
|
}));
|
|
1608
|
-
} }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowMoreInfoPopup(false) }), (isModal && onClose) && _jsx("div", { id: "TMDcmtFormShowConfirmForClose-" + id })] }) }), _jsx(TMToppyDraggableHelpCenter, { isVisible: isToppyVisible, content:
|
|
1609
|
-
|
|
1610
|
-
:
|
|
1611
|
-
_jsxs("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: [`Questo documento è associato a ${workItems.length} workitem.`, _jsx("br", {}), `Per approvare, vai alla pagina "Approvazione workflow".`] })), showToppyForCompleteMoreInfo && (moreInfoTasks?.length === 1 ? (_jsxs(_Fragment, { children: [_jsx("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: `${SDKUI_Localizator.MoreInfoCompleteRequestSentBy} ${moreInfoTasks[0]?.fromName}!` }), _jsx(TMButton, { caption: SDKUI_Localizator.CommentAndComplete, color: 'success', showTooltip: false, onClick: () => setShowCommentForm(true) })] })) : (_jsx("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: `Ci sono ${moreInfoTasks?.length ?? 0} richieste di maggiori informazioni. ${SDKUI_Localizator.ManageFromTaskPanel}` }))), showToppyForReferences && dcmtReferences?.filter(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup)
|
|
1612
|
-
.map((ref, index, arr) => {
|
|
1613
|
-
const mapEntry = referenceActionMap[String(ref.objClass)];
|
|
1614
|
-
const label = mapEntry?.label ?? 'Vai a riferimento';
|
|
1615
|
-
return (_jsxs(React.Fragment, { children: [index === 0 && (showToppyForApprove || showToppyForCompleteMoreInfo) && (_jsx("div", { style: {
|
|
1616
|
-
height: 1,
|
|
1617
|
-
backgroundColor: 'rgba(255,255,255,0.2)',
|
|
1618
|
-
margin: '6px 0'
|
|
1619
|
-
} })), _jsxs(StyledReferenceButton, { onClick: () => handleNavigateToReference(ref), onDoubleClick: (e) => { e.preventDefault(); e.stopPropagation(); }, children: [_jsx("span", { children: label }), _jsx("span", { children: `"${ref.objName}"` })] }, `ref-${index}-${ref.objID}`)] }, `ref-frag-${index}-${ref.objID}`));
|
|
1620
|
-
})] }) })] }), (showCommentForm && TID && DID) &&
|
|
1621
|
-
_jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: TID, did: DID } }, onClose: () => setShowCommentForm(false), refreshCallback: handleCompleteMoreInfo, participants: [], showAttachmentsSection: false, allArchivedDocumentsFileItems: [] }), isOpenDetails &&
|
|
1650
|
+
} }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { fromDTD: fromDTD, deviceType: deviceType, onCompleted: handleWFOperationCompleted, TID: approvalVID, DID: DID, onClose: () => setShowMoreInfoPopup(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, triggerBlogRefresh: triggerBlogRefresh }), (isModal && onClose) && _jsx("div", { id: "TMDcmtFormShowConfirmForClose-" + id })] }) }), _jsx(TMToppyDraggableHelpCenter, { isVisible: isToppyVisible, content: _jsx(TMDcmtFormActionButtons, { showToppyForApprove: showToppyForApprove, workItems: workItems, deviceType: deviceType, isMobile: isMobile, handleSignApprove: handleSignApprove, setShowApprovePopup: setShowApprovePopup, setShowRejectPopup: setShowRejectPopup, setShowReAssignPopup: setShowReAssignPopup, setShowMoreInfoPopup: setShowMoreInfoPopup, fromDTD: fromDTD, showToppyForCompleteMoreInfo: showToppyForCompleteMoreInfo, moreInfoTasks: moreInfoTasks, setShowCommentForm: setShowCommentForm, showToppyForReferences: showToppyForReferences, dcmtReferences: dcmtReferences, referenceActionMap: referenceActionMap, handleNavigateToReference: handleNavigateToReference, setShowMoreInfoTaskPopup: setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask: setShowMoreInfoTaskTask }) })] }), (showCommentForm && TID && DID) &&
|
|
1651
|
+
_jsx(TMBlogCommentForm, { maxLength: 500, context: blogCommentFormContext, onClose: handleBlogCommentFormClose, onCustomSave: onBlogCommentFormCustomSave, participants: emptyParticipants, showAttachmentsSection: false, allArchivedDocumentsFileItems: emptyArchivedDocumentsFileItems }), isOpenDetails &&
|
|
1622
1652
|
_jsx(StyledModalContainer, { children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenMaster &&
|
|
1623
1653
|
_jsxs(StyledModalContainer, { children: [_jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
|
1624
1654
|
return (_jsx(StyledModalContainer, { children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: [dcmt], isForMaster: true, allowNavigation: false, onBack: () => handleRemoveItem(dcmt.TID, dcmt.DID), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }, `${index}-${dcmt.DID}`));
|
|
1625
1655
|
})] }), taskFormDialogComponent, s4TViewerDialogComponent] }));
|
|
1626
1656
|
};
|
|
1627
|
-
return (_jsxs(
|
|
1657
|
+
return (_jsxs("div", { style: { width: '100%', height: '100%' }, children: [(isModal && onClose)
|
|
1628
1658
|
? _jsx(TMModal, { title: titleModal, onClose: handleClose, width: widthModal ?? '100%', height: heightModal ?? '100%', hidePopup: false, askClosingConfirm: true, children: _jsx("div", { style: { width: "100%", height: "100%", display: 'block', padding: "4px", position: 'relative' }, children: renderDcmtForm() }) })
|
|
1629
1659
|
: renderDcmtForm(), showRelatedDcmtsChooser && (_jsx(TMChooserForm, { dataSource: relatedDcmtsChooserDataSource, onChoose: async (selectedRelation) => {
|
|
1630
1660
|
try {
|
|
@@ -1668,7 +1698,7 @@ const TMDcmtForm = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTa
|
|
|
1668
1698
|
setArchiveRelatedDcmtFormTID(undefined);
|
|
1669
1699
|
setArchiveRelatedDcmtFormMids([]);
|
|
1670
1700
|
await fetchData();
|
|
1671
|
-
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference })), showPairDcmtsModal && (_jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshSearchAsync: async () => await fetchData(), onTaskCreateRequest: onTaskCreateRequest, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, toppyHelpCenterUsePortal: true }) }))] }));
|
|
1701
|
+
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference })), showPairDcmtsModal && (_jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshSearchAsync: async () => await fetchData(), onTaskCreateRequest: onTaskCreateRequest, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, toppyHelpCenterUsePortal: true }) })), (showMoreInfoTaskPopup && showMoreInfoTaskTask && showMoreInfoTaskTask.id && handleNavigateToWGs && handleNavigateToDossiers && getAllTasks && deleteTaskByIdsCallback && addTaskCallback && editTaskCallback) && _jsx(TMTaskForm, { id: Number(showMoreInfoTaskTask.id), title: showMoreInfoTaskTask.name ?? 'N/A', formMode: FormModes.Update, onSaved: onSavedTaskFormCallback, editTaskCallback: editTaskCallback, onClose: () => { setShowMoreInfoTaskPopup(false); setShowMoreInfoTaskTask(undefined); }, onCancel: () => { setShowMoreInfoTaskPopup(false); setShowMoreInfoTaskTask(undefined); }, isModal: true, showBackButton: false, hasNavigation: false, width: taskModalSizes(deviceType, FormModes.Update).width, height: taskModalSizes(deviceType, FormModes.Update).height, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, visualizedTasks: [], currentTask: null, setCurrentTask: () => { }, selectedRowKeys: [], handleFocusedRowKeyChange: () => { }, onStatusChanged: () => { }, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback })] }));
|
|
1672
1702
|
};
|
|
1673
1703
|
export default TMDcmtForm;
|
|
1674
1704
|
/**
|
|
@@ -1742,12 +1772,12 @@ const WfButtonStateHandler = ({ isWFDisabled }) => {
|
|
|
1742
1772
|
}, [isWFDisabled, setToolbarButtonDisabled]);
|
|
1743
1773
|
return null; // Non renderizza elementi nel DOM
|
|
1744
1774
|
};
|
|
1745
|
-
const TMDcmtPreviewWrapper = ({ currentDcmt, layoutMode, fromDTD, dcmtFile, deviceType, isVisible, onFileUpload, enableDragDropOverlay = false }) => {
|
|
1775
|
+
const TMDcmtPreviewWrapper = ({ currentDcmt, layoutMode, fromDTD, dcmtFile, deviceType, isVisible, onFileUpload, openPdfEditor, enableDragDropOverlay = false, onScanRequest }) => {
|
|
1746
1776
|
const { setPanelVisibilityById, toggleMaximize, isResizingActive, countVisibleLeafPanels, panelVisibility } = useTMPanelManagerContext();
|
|
1747
1777
|
const isMobile = deviceType === DeviceType.MOBILE;
|
|
1748
1778
|
return (layoutMode === LayoutModes.Update ?
|
|
1749
1779
|
_jsx(TMDcmtPreview, { isVisible: isVisible, onClosePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, allowMaximize: !isMobile && countVisibleLeafPanels() > 1, onMaximizePanel: (!isMobile && countVisibleLeafPanels() > 1) ? () => toggleMaximize("tmDcmtPreview") : undefined, dcmtData: currentDcmt, isResizingActive: isResizingActive }) :
|
|
1750
|
-
_jsx(TMFileUploader, { onFileUpload: onFileUpload, onClose: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType, isResizingActive: isResizingActive, enableDragDropOverlay: panelVisibility['tmDcmtPreview'] && enableDragDropOverlay }));
|
|
1780
|
+
_jsx(TMFileUploader, { fromDTD: fromDTD, onFileUpload: onFileUpload, openPdfEditor: openPdfEditor, onClose: (!isMobile && countVisibleLeafPanels() > 1) ? () => setPanelVisibilityById('tmDcmtPreview', false) : undefined, isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType, isResizingActive: isResizingActive, enableDragDropOverlay: panelVisibility['tmDcmtPreview'] && enableDragDropOverlay, onScanRequest: onScanRequest }));
|
|
1751
1781
|
};
|
|
1752
1782
|
const Ribbon = styled.div `
|
|
1753
1783
|
font-size: 0.85rem;
|
|
@@ -1781,3 +1811,117 @@ const Ribbon = styled.div `
|
|
|
1781
1811
|
}
|
|
1782
1812
|
`}
|
|
1783
1813
|
`;
|
|
1814
|
+
const TaskLink = (props) => {
|
|
1815
|
+
const { messagePrefix, name, taskNameTrunc, description, currentTask, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
|
|
1816
|
+
const mouseMoved = useRef(false);
|
|
1817
|
+
const handleMouseDown = () => {
|
|
1818
|
+
mouseMoved.current = false;
|
|
1819
|
+
};
|
|
1820
|
+
const handleMouseMove = () => {
|
|
1821
|
+
mouseMoved.current = true;
|
|
1822
|
+
};
|
|
1823
|
+
return (_jsx(_Fragment, { children: _jsx("div", { style: { display: 'inline-flex', alignItems: 'center', gap: '4px' }, children: _jsxs("div", { onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, style: { display: 'inline' }, children: [messagePrefix, ' "', _jsx("span", { style: {
|
|
1824
|
+
cursor: 'pointer',
|
|
1825
|
+
fontWeight: 500,
|
|
1826
|
+
textDecoration: 'none',
|
|
1827
|
+
transition: 'text-decoration 0.2s',
|
|
1828
|
+
}, onClick: () => {
|
|
1829
|
+
setShowMoreInfoTaskPopup(true);
|
|
1830
|
+
setShowMoreInfoTaskTask(currentTask);
|
|
1831
|
+
}, onMouseEnter: e => e.currentTarget.style.textDecoration = 'underline', onMouseLeave: e => e.currentTarget.style.textDecoration = 'none', children: taskNameTrunc }), '" ', _jsx(TMTooltip, { parentStyle: { display: 'inline' }, childStyle: { display: 'inline' }, content: _jsxs("div", { style: { whiteSpace: 'pre-line', textAlign: 'left' }, children: [_jsxs("div", { children: [_jsx("b", { children: SDKUI_Localizator.Name }), ": ", name] }), _jsxs("div", { children: [_jsx("b", { children: SDKUI_Localizator.Description }), ": ", description] })] }), children: _jsx("i", { className: "dx-icon dx-icon-info", onClick: () => {
|
|
1832
|
+
setShowMoreInfoTaskPopup(true);
|
|
1833
|
+
setShowMoreInfoTaskTask(currentTask);
|
|
1834
|
+
}, style: { fontSize: '16px', lineHeight: 1, cursor: 'pointer' } }) })] }) }) }));
|
|
1835
|
+
};
|
|
1836
|
+
const TMDcmtFormActionButtons = (props) => {
|
|
1837
|
+
const { showToppyForApprove, workItems, deviceType, isMobile, handleSignApprove, setShowApprovePopup, setShowRejectPopup, setShowReAssignPopup, setShowMoreInfoPopup, fromDTD, showToppyForCompleteMoreInfo, moreInfoTasks, setShowCommentForm, showToppyForReferences, dcmtReferences, referenceActionMap, handleNavigateToReference, setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask } = props;
|
|
1838
|
+
const tasksNumber = useMemo(() => moreInfoTasks?.length ?? 0, [moreInfoTasks]);
|
|
1839
|
+
const currentTask = useMemo(() => {
|
|
1840
|
+
if (!moreInfoTasks || moreInfoTasks.length === 0)
|
|
1841
|
+
return null;
|
|
1842
|
+
if (moreInfoTasks.length === 1)
|
|
1843
|
+
return moreInfoTasks[0];
|
|
1844
|
+
// If there are multiple tasks, we cannot determine which one is relevant, so we return null
|
|
1845
|
+
return null;
|
|
1846
|
+
}, [moreInfoTasks]);
|
|
1847
|
+
const { hasMoreInfo, hasApprove, hasReferences } = useMemo(() => {
|
|
1848
|
+
const referencesExist = showToppyForReferences && dcmtReferences?.some(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup);
|
|
1849
|
+
return {
|
|
1850
|
+
hasMoreInfo: Boolean(showToppyForCompleteMoreInfo),
|
|
1851
|
+
hasApprove: Boolean(showToppyForApprove),
|
|
1852
|
+
hasReferences: Boolean(referencesExist)
|
|
1853
|
+
};
|
|
1854
|
+
}, [
|
|
1855
|
+
showToppyForCompleteMoreInfo,
|
|
1856
|
+
showToppyForApprove,
|
|
1857
|
+
showToppyForReferences,
|
|
1858
|
+
dcmtReferences
|
|
1859
|
+
]);
|
|
1860
|
+
const Divider = () => (_jsx("div", { style: { height: '1px', width: '100%', background: 'linear-gradient(to right, transparent, rgba(255,255,255,0.4), transparent)', margin: '3px 0', opacity: 0.8, } }));
|
|
1861
|
+
return _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [hasMoreInfo && (tasksNumber === 1 ? (_jsx("div", { style: { display: 'flex', gap: "10px", flexDirection: 'column', alignItems: 'center' }, children: _jsx("div", { style: {
|
|
1862
|
+
padding: '10px',
|
|
1863
|
+
color: '#FFFFFF',
|
|
1864
|
+
maxWidth: '240px',
|
|
1865
|
+
background: 'linear-gradient(135deg, #1E90FF 0%, #0077BE 60%, #00509E 100%)',
|
|
1866
|
+
border: '1px solid rgba(255,255,255,0.15)',
|
|
1867
|
+
boxShadow: '0 8px 20px rgba(0, 0, 50, 0.4)',
|
|
1868
|
+
backdropFilter: 'blur(6px)',
|
|
1869
|
+
display: 'flex',
|
|
1870
|
+
flexDirection: 'column',
|
|
1871
|
+
alignItems: 'center',
|
|
1872
|
+
textAlign: 'center',
|
|
1873
|
+
gap: '10px',
|
|
1874
|
+
cursor: 'default',
|
|
1875
|
+
}, children: (() => {
|
|
1876
|
+
const userID = SDK_Globals.tmSession?.SessionDescr?.userID;
|
|
1877
|
+
const isSender = currentTask?.fromID !== undefined && currentTask.fromID === userID;
|
|
1878
|
+
const isRecipient = currentTask?.toID !== undefined && currentTask.toID === userID;
|
|
1879
|
+
const truncate = (str, maxLength) => str && str.length > maxLength ? str.substring(0, maxLength) + '...' : str;
|
|
1880
|
+
const senderNameTruncated = currentTask?.fromName ? truncate(currentTask.fromName, 30) : 'N/A';
|
|
1881
|
+
const recipientNameTruncated = currentTask?.toName ? truncate(currentTask.toName, 30) : 'N/A';
|
|
1882
|
+
const taskNameTrunc = currentTask?.name ? truncate(currentTask.name.replace(TASK_MORE_INFO_PREFIX_NAME ?? '', ''), 30) : 'N/A';
|
|
1883
|
+
return (_jsxs(_Fragment, { children: [(isSender && !isRecipient) && (_jsx(TaskLink, { messagePrefix: `Hai richiesto maggiori informazioni a "${recipientNameTruncated}" tramite l'attività`, name: currentTask.name ?? 'N/A', taskNameTrunc: taskNameTrunc ?? 'N/A', description: currentTask.description ?? 'N/A', currentTask: currentTask, setShowMoreInfoTaskPopup: setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask: setShowMoreInfoTaskTask })), (isRecipient && !isSender) && (_jsxs("div", { style: {
|
|
1884
|
+
display: 'flex',
|
|
1885
|
+
flexDirection: 'column',
|
|
1886
|
+
alignItems: 'center',
|
|
1887
|
+
gap: '10px'
|
|
1888
|
+
}, children: [_jsx(TaskLink, { messagePrefix: `"${senderNameTruncated}" ti ha richiesto maggiori informazioni tramite l'attività`, name: currentTask.name ?? 'N/A', taskNameTrunc: taskNameTrunc ?? 'N/A', description: currentTask.description ?? 'N/A', currentTask: currentTask, setShowMoreInfoTaskPopup: setShowMoreInfoTaskPopup, setShowMoreInfoTaskTask: setShowMoreInfoTaskTask }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx("span", { className: "dx-icon-chat" }), caption: SDKUI_Localizator.CommentAndComplete, width: "180px", disabled: false, onClick: () => setShowCommentForm(true), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.success, color: "success" })] }))] }));
|
|
1889
|
+
})() }) })) : (_jsx("div", { style: {
|
|
1890
|
+
padding: '10px',
|
|
1891
|
+
color: '#FFFFFF',
|
|
1892
|
+
maxWidth: '240px',
|
|
1893
|
+
background: 'linear-gradient(135deg, #1E90FF 0%, #0077BE 60%, #00509E 100%)',
|
|
1894
|
+
border: '1px solid rgba(255,255,255,0.15)',
|
|
1895
|
+
boxShadow: '0 8px 20px rgba(0, 0, 50, 0.4)',
|
|
1896
|
+
backdropFilter: 'blur(6px)',
|
|
1897
|
+
display: 'flex',
|
|
1898
|
+
flexDirection: 'column',
|
|
1899
|
+
alignItems: 'center',
|
|
1900
|
+
textAlign: 'center',
|
|
1901
|
+
gap: '10px',
|
|
1902
|
+
cursor: 'default',
|
|
1903
|
+
}, children: `Ci sono ${moreInfoTasks?.length ?? 0} richieste di maggiori informazioni. ${SDKUI_Localizator.ManageFromTaskPanel}` }))), hasMoreInfo && hasApprove && _jsx(Divider, {}), hasApprove && (workItems.length === 1 ?
|
|
1904
|
+
_jsx(WorkFlowOperationButtons, { dtd: fromDTD, deviceType: deviceType, onApprove: () => setShowApprovePopup(true), onSignApprove: handleSignApprove, onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), onMoreInfo: () => setShowMoreInfoPopup(true) })
|
|
1905
|
+
:
|
|
1906
|
+
_jsxs("div", { style: { padding: 10, color: 'white', maxWidth: '180px', borderRadius: 10, background: '#1B1464 0% 0% no-repeat padding-box', border: '1px solid #FFFFFF' }, children: [`Questo documento è associato a ${workItems.length} workitem.`, _jsx("br", {}), `Per approvare, vai alla pagina "Approvazione workflow".`] })), (hasApprove && hasReferences) || (hasMoreInfo && !hasApprove && hasReferences) ? (_jsx(Divider, {})) : null, hasReferences && (_jsx(ReferencesContainer, { children: dcmtReferences?.filter(ref => ref.objClass === ObjectClasses.Dossier || ref.objClass === ObjectClasses.WorkingGroup)
|
|
1907
|
+
.map((ref, index) => {
|
|
1908
|
+
const mapEntry = referenceActionMap[String(ref.objClass)];
|
|
1909
|
+
const label = mapEntry?.label ?? 'Vai a riferimento';
|
|
1910
|
+
let backgroundColor;
|
|
1911
|
+
switch (ref.objClass) {
|
|
1912
|
+
case ObjectClasses.WorkingGroup:
|
|
1913
|
+
backgroundColor = PDGS_COLORS.WORKING_GROUP;
|
|
1914
|
+
break;
|
|
1915
|
+
case ObjectClasses.Dossier:
|
|
1916
|
+
backgroundColor = PDGS_COLORS.DOSSIER;
|
|
1917
|
+
break;
|
|
1918
|
+
case ObjectClasses.Document:
|
|
1919
|
+
backgroundColor = PDGS_COLORS.DOCUMENT;
|
|
1920
|
+
break;
|
|
1921
|
+
default:
|
|
1922
|
+
backgroundColor = "#C2388B";
|
|
1923
|
+
break;
|
|
1924
|
+
}
|
|
1925
|
+
return (_jsxs(StyledReferenceButton, { onClick: () => handleNavigateToReference(ref), onDoubleClick: (e) => { e.preventDefault(); e.stopPropagation(); }, "$bgColor": backgroundColor, children: [_jsx("span", { children: label }), _jsx("span", { children: `"${ref.objName}"` })] }, `ref-${index}-${ref.objID}`));
|
|
1926
|
+
}) }))] });
|
|
1927
|
+
};
|