@topconsultnpm/sdkui-react 6.19.0-test2 → 6.20.0-dev1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/NewComponents/ContextMenu/TMContextMenu.d.ts +4 -0
- package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +187 -0
- package/lib/components/NewComponents/ContextMenu/hooks.d.ts +11 -0
- package/lib/components/NewComponents/ContextMenu/hooks.js +48 -0
- package/lib/components/NewComponents/ContextMenu/index.d.ts +2 -0
- package/lib/components/NewComponents/ContextMenu/index.js +1 -0
- package/lib/components/NewComponents/ContextMenu/styles.d.ts +27 -0
- package/lib/components/NewComponents/ContextMenu/styles.js +308 -0
- package/lib/components/NewComponents/ContextMenu/types.d.ts +26 -0
- package/lib/components/NewComponents/ContextMenu/types.js +1 -0
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.d.ts +4 -0
- package/lib/components/NewComponents/FloatingMenuBar/TMFloatingMenuBar.js +370 -0
- package/lib/components/NewComponents/FloatingMenuBar/index.d.ts +2 -0
- package/lib/components/NewComponents/FloatingMenuBar/index.js +2 -0
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +38 -0
- package/lib/components/NewComponents/FloatingMenuBar/styles.js +267 -0
- package/lib/components/NewComponents/FloatingMenuBar/types.d.ts +30 -0
- package/lib/components/NewComponents/FloatingMenuBar/types.js +1 -0
- package/lib/components/NewComponents/Notification/Notification.d.ts +4 -0
- package/lib/components/NewComponents/Notification/Notification.js +60 -0
- package/lib/components/NewComponents/Notification/NotificationContainer.d.ts +8 -0
- package/lib/components/NewComponents/Notification/NotificationContainer.js +33 -0
- package/lib/components/NewComponents/Notification/index.d.ts +2 -0
- package/lib/components/NewComponents/Notification/index.js +2 -0
- package/lib/components/NewComponents/Notification/styles.d.ts +21 -0
- package/lib/components/NewComponents/Notification/styles.js +180 -0
- package/lib/components/NewComponents/Notification/types.d.ts +18 -0
- package/lib/components/NewComponents/Notification/types.js +1 -0
- package/lib/components/choosers/TMDynDataListItemChooser.js +5 -4
- package/lib/components/editors/TMMetadataValues.js +34 -12
- package/lib/components/features/assistant/ToppyDraggableHelpCenter.js +74 -63
- package/lib/components/features/documents/TMDcmtForm.d.ts +1 -0
- package/lib/components/features/documents/TMDcmtForm.js +12 -5
- package/lib/components/features/documents/TMDcmtPreview.js +31 -37
- package/lib/components/features/search/TMSavedQuerySelector.js +1 -1
- package/lib/components/features/search/TMSearchQueryPanel.js +1 -1
- package/lib/components/features/search/TMSearchResult.js +106 -26
- package/lib/components/features/search/TMSearchResultCheckoutInfoForm.d.ts +8 -0
- package/lib/components/features/search/TMSearchResultCheckoutInfoForm.js +134 -0
- package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +2 -2
- package/lib/components/features/search/TMSearchResultsMenuItems.js +40 -62
- package/lib/components/features/search/TMTreeSelector.js +1 -1
- package/lib/components/features/search/TMViewHistoryDcmt.d.ts +18 -0
- package/lib/components/features/search/TMViewHistoryDcmt.js +285 -0
- package/lib/components/grids/TMRecentsManager.js +1 -1
- package/lib/helper/SDKUI_Globals.d.ts +7 -0
- package/lib/helper/SDKUI_Globals.js +1 -0
- package/lib/helper/SDKUI_Localizator.d.ts +9 -0
- package/lib/helper/SDKUI_Localizator.js +121 -6
- package/lib/helper/TMIcons.d.ts +3 -1
- package/lib/helper/TMIcons.js +9 -1
- package/lib/helper/cicoHelper.d.ts +31 -0
- package/lib/helper/cicoHelper.js +155 -0
- package/lib/helper/helpers.d.ts +7 -0
- package/lib/helper/helpers.js +37 -5
- package/lib/helper/queryHelper.js +13 -1
- package/package.json +53 -53
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
-
import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, RetrieveFileOptions, DcmtOpers, GeneralRetrieveFormats, AccessLevelsEx, ResultTypes, LayoutCacheService } from '@topconsultnpm/sdk-ts';
|
|
3
|
+
import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, MetadataFormats, LayoutModes, TemplateTIDs, DcmtTypeListCacheService, AccessLevels, SystemMIDsAsNumber, RetrieveFileOptions, DcmtOpers, GeneralRetrieveFormats, AccessLevelsEx, ResultTypes, LayoutCacheService, UserListCacheService } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import styled from 'styled-components';
|
|
5
5
|
import { getAllFieldSelectedDcmtsOrFocused, getCommandsMenuItems, getSelectedDcmtsOrFocused } from './TMSearchResultsMenuItems';
|
|
6
|
-
import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconDelete, IconRefresh, IconMenuVertical, IconDownload, deepCompare,
|
|
6
|
+
import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconDelete, IconRefresh, IconMenuVertical, IconDownload, deepCompare, generateUniqueColumnKeys, searchResultDescriptorToSimpleArray, searchResultToMetadataValues, IconSearchCheck, TMCommandsContextMenu, getExceptionMessage, IconCheck, svgToString, TMImageLibrary } from '../../../helper';
|
|
7
7
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
|
8
8
|
import { useInputAttachmentsDialog, useInputCvtFormatDialog } from '../../../hooks/useInputDialog';
|
|
9
9
|
import { useRelatedDocuments } from '../../../hooks/useRelatedDocuments';
|
|
@@ -43,6 +43,9 @@ import { TMResultManager } from '../../forms/TMResultDialog';
|
|
|
43
43
|
import TMCustomButton from '../../base/TMCustomButton';
|
|
44
44
|
import ToppyDraggableHelpCenter from '../assistant/ToppyDraggableHelpCenter';
|
|
45
45
|
import TMSignSettingsForm from './TMSignSettingsForm';
|
|
46
|
+
import { cicoIsEnabled, downloadFilesCallback, updateDcmtCheckoutItem } from '../../../helper/cicoHelper';
|
|
47
|
+
import TMSearchResultCheckoutInfoForm from './TMSearchResultCheckoutInfoForm';
|
|
48
|
+
import TMViewHistoryDcmt from './TMViewHistoryDcmt';
|
|
46
49
|
//#region Helper Methods
|
|
47
50
|
export const getSearchResultCountersSingleCategory = (searchResults) => {
|
|
48
51
|
// let totDcmtTypes = searchResults.length;
|
|
@@ -110,23 +113,42 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
110
113
|
const [blogsDatasource, setBlogsDatasource] = useState([]);
|
|
111
114
|
const [hasLoadedDataOnce, setHasLoadedDataOnce] = useState(false); //traccia se *qualsiasi* dato è stato caricato per la prima volta
|
|
112
115
|
const [lastLoadedDid, setLastLoadedDid] = useState(undefined); // `lastLoadedDid` tiene traccia dell'ultimo `did` per cui abbiamo caricato i dati
|
|
116
|
+
// State to manage show history selected file
|
|
117
|
+
const [showHistory, setShowHistory] = useState(false);
|
|
118
|
+
const [allUsers, setAllUsers] = useState([]);
|
|
119
|
+
// State to manage show history selected file
|
|
120
|
+
const [showCheckoutInformationForm, setShowCheckoutInformationForm] = useState(false);
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
const fetchAllUsers = async () => {
|
|
123
|
+
const users = await UserListCacheService.GetAllAsync();
|
|
124
|
+
setAllUsers(users ?? []);
|
|
125
|
+
};
|
|
126
|
+
fetchAllUsers();
|
|
127
|
+
}, []);
|
|
113
128
|
useEffect(() => { setID(genUniqueId()); }, []);
|
|
114
129
|
useEffect(() => {
|
|
115
130
|
setSelectedItems([]);
|
|
116
|
-
setFocusedItem(undefined);
|
|
117
131
|
setIsOpenBatchUpdate(false);
|
|
118
132
|
setCurrentSearchResults(searchResults);
|
|
119
|
-
if (searchResults.length <= 0)
|
|
133
|
+
if (searchResults.length <= 0) {
|
|
134
|
+
setSelectedSearchResult(undefined);
|
|
120
135
|
return;
|
|
136
|
+
}
|
|
121
137
|
if (searchResults.length === 1) {
|
|
122
138
|
setSelectedSearchResult(searchResults[0]);
|
|
123
139
|
return;
|
|
124
140
|
}
|
|
141
|
+
// Seleziona sempre il primo risultato ordinato, sia su mobile che desktop
|
|
125
142
|
setSelectedSearchResult(orderByName(searchResults)[0]);
|
|
126
143
|
}, [searchResults]);
|
|
127
144
|
useEffect(() => {
|
|
128
|
-
setFocusedItem(undefined);
|
|
129
145
|
setSelectedItems([]);
|
|
146
|
+
// Se non c'è un selectedSearchResult, resetta tutto
|
|
147
|
+
if (!selectedSearchResult) {
|
|
148
|
+
setFocusedItem(undefined);
|
|
149
|
+
setFromDTD(undefined);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
130
152
|
DcmtTypeListCacheService.GetWithNotGrantedAsync(selectedSearchResult?.fromTID, Number(selectedSearchResult?.dtdResult?.rows?.[0]?.[1])).then((dtd) => {
|
|
131
153
|
setFromDTD(dtd);
|
|
132
154
|
});
|
|
@@ -167,6 +189,16 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
167
189
|
fetchLayout();
|
|
168
190
|
}, [currentMetadataValues]);
|
|
169
191
|
const openFormHandler = (layoutMode) => {
|
|
192
|
+
// Verifica che ci sia un documento selezionato con TID e DID validi
|
|
193
|
+
if (!focusedItem || focusedItem.TID === undefined || focusedItem.DID === undefined) {
|
|
194
|
+
ShowAlert({
|
|
195
|
+
message: SDKUI_Localizator.InvalidDcmt,
|
|
196
|
+
mode: "warning",
|
|
197
|
+
title: layoutMode === LayoutModes.Ark ? SDKUI_Localizator.Archive : SDKUI_Localizator.OpenTheDocument,
|
|
198
|
+
duration: 3000
|
|
199
|
+
});
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
170
202
|
setIsOpenDcmtForm(true);
|
|
171
203
|
setDcmtFormLayoutMode(layoutMode);
|
|
172
204
|
};
|
|
@@ -205,7 +237,6 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
205
237
|
const se = SDK_Globals.tmSession?.NewSearchEngine();
|
|
206
238
|
const sharedDcmts = await se?.GetSharedDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0].TID, getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0].DID);
|
|
207
239
|
if (sharedDcmts && sharedDcmts.length > 0) {
|
|
208
|
-
console.log(sharedDcmts);
|
|
209
240
|
setSharedDcmtSearchResults(sharedDcmts);
|
|
210
241
|
}
|
|
211
242
|
else {
|
|
@@ -260,6 +291,12 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
260
291
|
const closeSignSettingsForm = useCallback(() => {
|
|
261
292
|
setShowSignSettingsForm(false);
|
|
262
293
|
}, []);
|
|
294
|
+
const viewHistoryCallback = useCallback(() => {
|
|
295
|
+
setShowHistory(true);
|
|
296
|
+
}, []);
|
|
297
|
+
const showCheckoutInformationFormCallback = useCallback(() => {
|
|
298
|
+
setShowCheckoutInformationForm(true);
|
|
299
|
+
}, []);
|
|
263
300
|
const getTitleHeader = () => {
|
|
264
301
|
let counters = (showSelector && disableAccordionIfSingleCategory && searchResults.length > 1) ? getSearchResultCountersSingleCategory(searchResults) : "";
|
|
265
302
|
if (title)
|
|
@@ -310,6 +347,9 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
310
347
|
setIsOpenDcmtForm(false);
|
|
311
348
|
}
|
|
312
349
|
else {
|
|
350
|
+
if (isMobile && currentSearchResults.length > 1) {
|
|
351
|
+
setSelectedSearchResult(undefined);
|
|
352
|
+
}
|
|
313
353
|
setSplitterSize(['100%', '0']);
|
|
314
354
|
onClose?.();
|
|
315
355
|
}
|
|
@@ -332,7 +372,7 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
332
372
|
return;
|
|
333
373
|
if (e.target === 'content') {
|
|
334
374
|
e.items = e.items || [];
|
|
335
|
-
const menuItems = getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation);
|
|
375
|
+
const menuItems = getCommandsMenuItems(isMobile, fromDTD, allUsers, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, showCheckoutInformationFormCallback, viewHistoryCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation);
|
|
336
376
|
e.items.push(...menuItems);
|
|
337
377
|
//disabilitato per ora
|
|
338
378
|
//e.items.push(customButtonMenuItems());
|
|
@@ -361,9 +401,9 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
361
401
|
if (checkout) {
|
|
362
402
|
await ue.CheckOutAsync()
|
|
363
403
|
.then(async () => {
|
|
364
|
-
|
|
404
|
+
const filename = fromDTD?.nameLoc || SDKUI_Localizator.SearchResult;
|
|
405
|
+
await downloadFilesCallback(filename, [firstDoc], true, downloadDcmtsAsync);
|
|
365
406
|
result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, description: SDKUI_Localizator.UpdateCompletedSuccessfully, resultType: ResultTypes.SUCCESS });
|
|
366
|
-
// await refreshSelectionDataRowsAsync();
|
|
367
407
|
await refreshFocusedDataRowAsync(firstDoc.TID, firstDoc.DID, true);
|
|
368
408
|
})
|
|
369
409
|
.catch((error) => {
|
|
@@ -375,7 +415,13 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
375
415
|
await ue.UndoCheckOutAsync()
|
|
376
416
|
.then(async () => {
|
|
377
417
|
result.push({ rowIndex: 0, id1: firstDoc.TID, id2: firstDoc.DID, description: SDKUI_Localizator.UpdateCompletedSuccessfully, resultType: ResultTypes.SUCCESS });
|
|
378
|
-
//
|
|
418
|
+
// Remove the corresponding draft checkout item
|
|
419
|
+
updateDcmtCheckoutItem({
|
|
420
|
+
TID: firstDoc.TID.toString(),
|
|
421
|
+
DID: firstDoc.DID.toString(),
|
|
422
|
+
checkoutFolder: "",
|
|
423
|
+
checkoutName: ""
|
|
424
|
+
}, "remove");
|
|
379
425
|
await refreshFocusedDataRowAsync(firstDoc.TID, firstDoc.DID, true);
|
|
380
426
|
})
|
|
381
427
|
.catch((error) => {
|
|
@@ -572,7 +618,7 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
572
618
|
}
|
|
573
619
|
};
|
|
574
620
|
const searchResutlToolbar = _jsxs(_Fragment, { children: [(dcmtsReturned != dcmtsFound) && _jsx("p", { style: { backgroundColor: `white`, color: TMColors.primaryColor, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${dcmtsReturned}/${dcmtsFound} restituiti` }), context === SearchResultContext.FAVORITES_AND_RECENTS &&
|
|
575
|
-
_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-header-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation)
|
|
621
|
+
_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '5px' }, children: _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconDelete, { color: 'white' }), caption: "Rimuovi da " + (selectedSearchResult?.category === "Favorites" ? '"Preferiti"' : '"Recenti"'), disabled: getSelectedDcmtsOrFocused(selectedItems, focusedItem).length <= 0, onClick: removeDcmtFromFavsOrRecents }) }), _jsx(TMButton, { btnStyle: 'icon', icon: _jsx(IconRefresh, { color: 'white' }), caption: SDKUI_Localizator.Refresh, onClick: onRefreshSearchAsync }), _jsx(IconMenuVertical, { id: `commands-header-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-header-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, allUsers, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, showCheckoutInformationFormCallback, viewHistoryCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation) /*.concat([customButtonMenuItems()])*/ })] });
|
|
576
622
|
const handleAddItem = (tid, did) => {
|
|
577
623
|
let newItem = { TID: tid ?? 0, DID: did ?? 0 };
|
|
578
624
|
setSecondaryMasterDcmts((prevItems) => [...prevItems, newItem]);
|
|
@@ -604,10 +650,10 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
604
650
|
? _jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%', width: '100%' }, children: [_jsx(IconBoard, { fontSize: 96 }), _jsx("div", { style: { fontSize: "15px", marginTop: "10px" }, children: SDKUI_Localizator.NoDcmtFound }), openAddDocumentForm && _jsx("div", { style: { marginTop: "10px" }, children: _jsx(TMButton, { fontSize: "15px", icon: _jsx("i", { className: 'dx-icon-share' }), caption: SDKUI_Localizator.Share, onClick: openAddDocumentForm }) })] })
|
|
605
651
|
:
|
|
606
652
|
_jsxs(_Fragment, { children: [_jsxs(TMLayoutItem, { height: '100%', children: [_jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: Gutters.getGutters(), separatorActiveColor: 'transparent', separatorColor: 'transparent', min: ['0', '0'], showSeparator: showSelector && deviceType !== DeviceType.MOBILE, start: showSelector ? deviceType !== DeviceType.MOBILE ? ['30%', '70%'] : splitterSize : ['0%', '100%'], children: [showSelector ?
|
|
607
|
-
_jsx(TMLayoutItem, { children: _jsx(TMSearchResultSelector, { searchResults: currentSearchResults, disableAccordionIfSingleCategory: disableAccordionIfSingleCategory, selectedTID: selectedSearchResultTID, onSelectionChanged: onSearchResultSelectionChanged }) })
|
|
653
|
+
_jsx(TMLayoutItem, { children: _jsx(TMSearchResultSelector, { searchResults: currentSearchResults, disableAccordionIfSingleCategory: disableAccordionIfSingleCategory, selectedTID: selectedSearchResultTID, selectedSearchResult: selectedSearchResult, autoSelectFirst: !isMobile || currentSearchResults.length === 1, onSelectionChanged: onSearchResultSelectionChanged }) })
|
|
608
654
|
:
|
|
609
|
-
_jsx(_Fragment, {}), _jsxs(TMLayoutItem, { children: [_jsx(TMSearchResultGrid, { showSearch: showSearch, inputFocusedItem: focusedItem, inputSelectedItems: selectedItems, searchResult: searchResults.length > 1 ? selectedSearchResult : searchResults[0], lastUpdateSearchTime: lastUpdateSearchTime, openInOffice: openInOffice, onDblClick: () => openFormHandler(LayoutModes.Update), onContextMenuPreparing: onContextMenuPreparing, onSelectionChanged: (items) => { setSelectedItems(items); }, onVisibleItemChanged: setVisibleItems, onFocusedItemChanged: setFocusedItem, onDownloadDcmtsAsync: async (inputDcmts, downloadType, downloadMode, _y, confirmAttachments) => await downloadDcmtsAsync(inputDcmts, downloadType, downloadMode, onFileOpened, confirmAttachments), showExportForm: showExportForm, onCloseExportForm: onCloseExportForm }), allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE &&
|
|
610
|
-
_jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes || !focusedItem?.DID, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download"); } }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasDetailRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white' }), caption: SDKUI_Localizator.DcmtsDetail, onClick: () => setIsOpenDetails(true) }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasMasterRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white', transform: 'scale(-1, 1)' }), caption: SDKUI_Localizator.DcmtsMaster, onClick: () => setIsOpenMaster(true) }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-floating-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation)
|
|
655
|
+
_jsx(_Fragment, {}), _jsxs(TMLayoutItem, { children: [_jsx(TMSearchResultGrid, { showSearch: showSearch, fromDTD: fromDTD, allUsers: allUsers, inputFocusedItem: focusedItem, inputSelectedItems: selectedItems, searchResult: searchResults.length > 1 ? selectedSearchResult : searchResults[0], lastUpdateSearchTime: lastUpdateSearchTime, openInOffice: openInOffice, onDblClick: () => openFormHandler(LayoutModes.Update), onContextMenuPreparing: onContextMenuPreparing, onSelectionChanged: (items) => { setSelectedItems(items); }, onVisibleItemChanged: setVisibleItems, onFocusedItemChanged: setFocusedItem, onDownloadDcmtsAsync: async (inputDcmts, downloadType, downloadMode, _y, confirmAttachments) => await downloadDcmtsAsync(inputDcmts, downloadType, downloadMode, onFileOpened, confirmAttachments), showExportForm: showExportForm, onCloseExportForm: onCloseExportForm }), allowFloatingBar && showFloatingBar && deviceType !== DeviceType.MOBILE &&
|
|
656
|
+
_jsxs(TMFloatingToolbar, { backgroundColor: TMColors.primaryColor, initialLeft: '10px', initialTop: 'calc(100% - 75px)', children: [fromDTD?.perm?.canRetrieveFile === AccessLevels.Yes && _jsx(TMButton, { btnStyle: 'icon', caption: "Download file", disabled: fromDTD?.perm?.canRetrieveFile !== AccessLevels.Yes || !focusedItem?.DID, icon: _jsx(IconDownload, { color: 'white' }), onClick: () => { downloadDcmtsAsync(getSelectedDcmtsOrFocused(selectedItems, focusedItem), DownloadTypes.Dcmt, "download"); } }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasDetailRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white' }), caption: SDKUI_Localizator.DcmtsDetail, onClick: () => setIsOpenDetails(true) }), allowRelations && _jsx(TMButton, { btnStyle: 'icon', disabled: !currentTIDHasMasterRelations || !focusedItem?.DID, icon: _jsx(IconDetailDcmts, { color: 'white', transform: 'scale(-1, 1)' }), caption: SDKUI_Localizator.DcmtsMaster, onClick: () => setIsOpenMaster(true) }), _jsx(IconMenuVertical, { id: `commands-floating-${id}`, color: 'white', cursor: 'pointer' }), _jsx(TMCommandsContextMenu, { target: `#commands-floating-${id}`, showEvent: "click", menuItems: getCommandsMenuItems(isMobile, fromDTD, allUsers, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, refreshSelectionDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, openConfirmAttachmentsDialog, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openSignSettingsForm, handleCheckOutOperationCallback, showCheckoutInformationFormCallback, viewHistoryCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, currentTIDHasMasterRelations, currentTIDHasDetailRelations, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToMany, hasManyToManyRelation) /*.concat([customButtonMenuItems()])*/ })] })] })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), isReject: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: onWFOperationCompleted, selectedItems: getSelectedDcmtsOrFocused(selectedItems, focusedItem), onClose: () => setShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { TID: focusedItem?.TID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: onWFOperationCompleted, onClose: () => setShowMoreInfoPopup(false) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${getSelectionDcmtInfo().length} documenti selezionati)`, inputDcmts: getSelectionDcmtInfo(), TID: focusedItem ? focusedItem?.TID : selectedItems[0]?.TID, DID: focusedItem ? focusedItem?.DID : selectedItems[0]?.DID, onBack: () => {
|
|
611
657
|
setIsOpenBatchUpdate(false);
|
|
612
658
|
}, onSavedCallbackAsync: async () => {
|
|
613
659
|
setIsOpenBatchUpdate(false);
|
|
@@ -665,7 +711,8 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
665
711
|
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), sharedDcmtSearchResults.length > 0 &&
|
|
666
712
|
_jsx(TMModal, { title: "Documenti condivisi", onClose: () => {
|
|
667
713
|
setSharedDcmtSearchResults([]);
|
|
668
|
-
}, width: isMobile ? '90%' : '60%', height: isMobile ? '90%' : '80%', children: _jsx(TMSearchResult, { searchResults: sharedDcmtSearchResults, allowFloatingBar: false, showSelector: true, showBackButton:
|
|
714
|
+
}, width: isMobile ? '90%' : '60%', height: isMobile ? '90%' : '80%', children: _jsx(TMSearchResult, { searchResults: sharedDcmtSearchResults, allowFloatingBar: false, showSelector: true, disableAccordionIfSingleCategory: true, showBackButton: isMobile, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), (showCheckoutInformationForm && fromDTD && getSelectedDcmtsOrFocused(selectedItems, focusedItem).length > 0) &&
|
|
715
|
+
_jsx(TMSearchResultCheckoutInfoForm, { dtdName: fromDTD.name ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused: getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0], onClose: () => setShowCheckoutInformationForm(false) }), (floatingActionConfig && floatingActionConfig.isVisible) && _jsx(TMSearchResultFloatingActionButton, { selectedDcmtsOrFocused: getSelectedDcmtsOrFocused(selectedItems, focusedItem), config: floatingActionConfig })] }), [
|
|
669
716
|
searchResults,
|
|
670
717
|
selectedSearchResult,
|
|
671
718
|
lastUpdateSearchTime,
|
|
@@ -783,7 +830,7 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
783
830
|
:
|
|
784
831
|
_jsx(TMPanelManagerProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: initialPanelDimensions, initialDimensions: initialPanelDimensions, initialMobilePanelId: 'tmSearchResult', children: _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showSearchResultSidebar }) }) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), 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) => {
|
|
785
832
|
return (_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, 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}`));
|
|
786
|
-
})] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem
|
|
833
|
+
})] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && focusedItem?.TID !== undefined && focusedItem?.DID !== undefined && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem.TID, DID: focusedItem.DID, allowButtonsRefs: true, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: handleSavedAsyncCallback, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onReferenceClick: onReferenceClick, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenArchiveRelationForm && _jsx(TMDcmtForm, { isModal: true, titleModal: SDKUI_Localizator.Archive + ' - ' + (archiveType === 'detail' ? SDKUI_Localizator.DcmtsDetail : SDKUI_Localizator.DcmtsMaster), TID: archiveRelatedDcmtFormTID, layoutMode: LayoutModes.Ark, inputMids: archiveRelatedDcmtFormMids, showBackButton: false, allowButtonsRefs: false, onClose: () => {
|
|
787
834
|
setIsOpenArchiveRelationForm(false);
|
|
788
835
|
setArchiveType(undefined);
|
|
789
836
|
setArchiveRelatedDcmtFormTID(undefined);
|
|
@@ -794,13 +841,13 @@ const TMSearchResult = ({ allTasks = [], getAllTasks, deleteTaskByIdsCallback, a
|
|
|
794
841
|
setArchiveRelatedDcmtFormTID(undefined);
|
|
795
842
|
setArchiveRelatedDcmtFormMids([]);
|
|
796
843
|
await onRefreshSearchAsync?.();
|
|
797
|
-
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (showSignSettingsForm && fromDTD) && _jsx(TMSignSettingsForm, { fromDTD: fromDTD, inputDcmts: allFieldSelectedDocs, onCloseSignSettingsForm: closeSignSettingsForm, onSavedAsyncCallback: handleSavedAsyncCallback })] }));
|
|
844
|
+
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (showSignSettingsForm && fromDTD) && _jsx(TMSignSettingsForm, { fromDTD: fromDTD, inputDcmts: allFieldSelectedDocs, onCloseSignSettingsForm: closeSignSettingsForm, onSavedAsyncCallback: handleSavedAsyncCallback }), (showHistory && fromDTD && getSelectedDcmtsOrFocused(selectedItems, focusedItem).length > 0) && _jsx(TMViewHistoryDcmt, { fromDTD: fromDTD, deviceType: deviceType, inputDcmt: getSelectedDcmtsOrFocused(selectedItems, focusedItem)[0], onClose: () => setShowHistory(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers })] }));
|
|
798
845
|
};
|
|
799
846
|
export default TMSearchResult;
|
|
800
847
|
const renderDcmtIcon = (cellData, onDownloadDcmtsAsync, openInOffice) => {
|
|
801
848
|
return _jsx(TMDcmtIcon, { tid: cellData.data.TID, did: cellData.data.DID, fileExtension: cellData.data.FILEEXT, fileCount: cellData.data.FILECOUNT, isLexProt: cellData.data.IsLexProt, isMail: cellData.data.ISMAIL, isShared: cellData.data.ISSHARED, isSigned: cellData.data.ISSIGNED, downloadMode: 'openInNewWindow', onDownloadDcmtsAsync: onDownloadDcmtsAsync, openInOffice: openInOffice });
|
|
802
849
|
};
|
|
803
|
-
const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowMultipleSelection = true, showExportForm = false, onCloseExportForm, onFocusedItemChanged, onDownloadDcmtsAsync, onVisibleItemChanged, inputSelectedItems = [], lastUpdateSearchTime, searchResult, onContextMenuPreparing, onSelectionChanged, onDblClick }) => {
|
|
850
|
+
const TMSearchResultGrid = ({ openInOffice, fromDTD, allUsers, inputFocusedItem, showSearch, allowMultipleSelection = true, showExportForm = false, onCloseExportForm, onFocusedItemChanged, onDownloadDcmtsAsync, onVisibleItemChanged, inputSelectedItems = [], lastUpdateSearchTime, searchResult, onContextMenuPreparing, onSelectionChanged, onDblClick }) => {
|
|
804
851
|
const [dataSource, setDataSource] = useState();
|
|
805
852
|
const [columns, setColumns] = useState([]);
|
|
806
853
|
// State to store selected row keys
|
|
@@ -880,12 +927,20 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
|
|
|
880
927
|
return null;
|
|
881
928
|
const isLogDel = cellData.data.ISLOGDEL == 1;
|
|
882
929
|
const isLexProt = cellData.data.IsLexProt == 1;
|
|
930
|
+
// Prima colonna: la colonna numero 2 (dopo icona e selezione)
|
|
931
|
+
const isFirstColumn = cellData.columnIndex === 2;
|
|
932
|
+
const { checkoutStatus } = cicoIsEnabled(cellData.data, allUsers, fromDTD);
|
|
933
|
+
const shouldShowCheckoutIcon = isFirstColumn && checkoutStatus.isCheckedOut && checkoutStatus.icon;
|
|
883
934
|
let style = {};
|
|
884
935
|
if (isLogDel) {
|
|
885
936
|
style = { color: 'gray', textDecoration: 'line-through' };
|
|
886
937
|
}
|
|
887
|
-
else if (isLexProt)
|
|
938
|
+
else if (isLexProt) {
|
|
888
939
|
style = { color: 'blue' };
|
|
940
|
+
}
|
|
941
|
+
if (shouldShowCheckoutIcon) {
|
|
942
|
+
style = { ...style, display: 'flex', gap: '4px', whiteSpace: 'nowrap' };
|
|
943
|
+
}
|
|
889
944
|
let child = _jsx("div", { children: cellData.text });
|
|
890
945
|
if (dataDomain === MetadataDataDomains.DataList) {
|
|
891
946
|
child = _jsx(TMDataListItemViewer, { dataListId: dataListID, viewMode: dataListViewMode, value: cellData.value });
|
|
@@ -893,8 +948,8 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
|
|
|
893
948
|
if (dataDomain === MetadataDataDomains.UserID) {
|
|
894
949
|
child = _jsx(TMUserIdViewer, { userId: cellData.value, showIcon: true, noneSelectionText: '' });
|
|
895
950
|
}
|
|
896
|
-
return
|
|
897
|
-
}, []);
|
|
951
|
+
return (_jsxs("div", { style: style, children: [shouldShowCheckoutIcon && checkoutStatus.icon, child] }));
|
|
952
|
+
}, [fromDTD, allUsers]);
|
|
898
953
|
const dataType = useCallback((col) => {
|
|
899
954
|
switch (col.dataType) {
|
|
900
955
|
case DataColumnTypes.DateTime: return "datetime";
|
|
@@ -945,16 +1000,19 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
|
|
|
945
1000
|
return undefined;
|
|
946
1001
|
}, []);
|
|
947
1002
|
useEffect(() => {
|
|
1003
|
+
if (fromDTD === undefined || searchResult === undefined)
|
|
1004
|
+
return;
|
|
948
1005
|
setFocusedItem(undefined); // resetta sempre prima
|
|
949
1006
|
let cols = [];
|
|
1007
|
+
// Generate unique keys for all columns
|
|
1008
|
+
const uniqueKeys = generateUniqueColumnKeys(searchResult?.dtdResult?.columns, searchResult?.fromTID);
|
|
950
1009
|
searchResult?.dtdResult?.columns?.map((col, index) => {
|
|
951
|
-
let keyField = getDataColumnName(searchResult?.fromTID, col);
|
|
952
1010
|
const isVisible = col.extendedProperties?.["Visibility"] != "Hidden";
|
|
953
1011
|
const dataDomain = MetadataDataDomains[(col.extendedProperties?.["DataDomain"] ?? "None")];
|
|
954
1012
|
const dataListID = Number(col.extendedProperties?.["DataListID"]);
|
|
955
1013
|
const dataListViewMode = DataListViewModes[(col.extendedProperties?.["DataListViewMode"] ?? "None")];
|
|
956
1014
|
cols.push({
|
|
957
|
-
dataField:
|
|
1015
|
+
dataField: uniqueKeys[index],
|
|
958
1016
|
dataType: dataType(col),
|
|
959
1017
|
visible: isVisible,
|
|
960
1018
|
cellRender: (cellData) => cellRender(cellData, dataDomain, dataListID, dataListViewMode),
|
|
@@ -966,7 +1024,7 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
|
|
|
966
1024
|
let newDataSource = searchResultDescriptorToSimpleArray(searchResult);
|
|
967
1025
|
setDataSource(newDataSource);
|
|
968
1026
|
// setFocusedItem(newDataSource && newDataSource.length > 0 ? newDataSource[0] : undefined);
|
|
969
|
-
}, [searchResult]);
|
|
1027
|
+
}, [searchResult, fromDTD, allUsers]);
|
|
970
1028
|
useEffect(() => {
|
|
971
1029
|
let newDataSource = searchResultDescriptorToSimpleArray(searchResult);
|
|
972
1030
|
setDataSource(newDataSource);
|
|
@@ -999,6 +1057,16 @@ const TMSearchResultGrid = ({ openInOffice, inputFocusedItem, showSearch, allowM
|
|
|
999
1057
|
// Era sull'icona, non fare nulla
|
|
1000
1058
|
return;
|
|
1001
1059
|
}
|
|
1060
|
+
// Verifica che il documento abbia TID e DID validi prima di procedere
|
|
1061
|
+
if (!e.data.TID || !e.data.DID) {
|
|
1062
|
+
ShowAlert({
|
|
1063
|
+
message: SDKUI_Localizator.InvalidDcmt,
|
|
1064
|
+
mode: "warning",
|
|
1065
|
+
title: SDKUI_Localizator.OpenForm,
|
|
1066
|
+
duration: 3000
|
|
1067
|
+
});
|
|
1068
|
+
return;
|
|
1069
|
+
}
|
|
1002
1070
|
// setFocusedItem(e.data);
|
|
1003
1071
|
onFocusedItemChanged?.(e.data);
|
|
1004
1072
|
onDblClick();
|
|
@@ -1035,7 +1103,7 @@ const StyledItemTemplate = styled.div `
|
|
|
1035
1103
|
cursor: pointer;
|
|
1036
1104
|
`;
|
|
1037
1105
|
const MemoizedStyledItemTemplate = React.memo(StyledItemTemplate);
|
|
1038
|
-
const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCategory = false, selectedTID, onSelectionChanged }) => {
|
|
1106
|
+
const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCategory = false, selectedTID, selectedSearchResult, autoSelectFirst = true, onSelectionChanged }) => {
|
|
1039
1107
|
const [selectedResult, setSelectedResult] = useState(undefined);
|
|
1040
1108
|
/** Group results by category */
|
|
1041
1109
|
const groupedResults = useMemo(() => {
|
|
@@ -1059,7 +1127,19 @@ const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCa
|
|
|
1059
1127
|
sortedCategories.forEach((category) => {
|
|
1060
1128
|
groupedResults[category].sort((a, b) => (a.fromName ?? '').localeCompare(b.fromName ?? ''));
|
|
1061
1129
|
});
|
|
1130
|
+
// Reset internal selection when parent sets selectedSearchResult to undefined
|
|
1131
|
+
// (this happens on mobile when clicking back to return to the list)
|
|
1062
1132
|
useEffect(() => {
|
|
1133
|
+
if (selectedSearchResult === undefined) {
|
|
1134
|
+
setSelectedResult(undefined);
|
|
1135
|
+
}
|
|
1136
|
+
}, [selectedSearchResult]);
|
|
1137
|
+
// Auto-seleziona il primo risultato di ricerca solo se autoSelectFirst è true.
|
|
1138
|
+
// Su mobile con più risultati, autoSelectFirst è false per permettere all'utente
|
|
1139
|
+
// di vedere prima la lista dei tipi documento e scegliere manualmente.
|
|
1140
|
+
useEffect(() => {
|
|
1141
|
+
if (!autoSelectFirst)
|
|
1142
|
+
return;
|
|
1063
1143
|
if (sortedCategories.length > 0) {
|
|
1064
1144
|
const firstCategory = sortedCategories[0];
|
|
1065
1145
|
if (groupedResults[firstCategory].length > 0) {
|
|
@@ -1067,7 +1147,7 @@ const TMSearchResultSelector = ({ searchResults = [], disableAccordionIfSingleCa
|
|
|
1067
1147
|
onSelectionChanged?.(groupedResults[firstCategory][0]);
|
|
1068
1148
|
}
|
|
1069
1149
|
}
|
|
1070
|
-
}, [sortedCategories.length]);
|
|
1150
|
+
}, [sortedCategories.length, autoSelectFirst]);
|
|
1071
1151
|
useEffect(() => {
|
|
1072
1152
|
if (selectedTID !== undefined) {
|
|
1073
1153
|
const found = searchResults.find(r => Number(r.fromTID) === selectedTID);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DcmtInfo } from "../../../ts";
|
|
2
|
+
interface TMSearchResultCheckoutInfoFormProps {
|
|
3
|
+
dtdName: string;
|
|
4
|
+
selectedDcmtOrFocused: DcmtInfo;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
}
|
|
7
|
+
declare const TMSearchResultCheckoutInfoForm: (props: TMSearchResultCheckoutInfoFormProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default TMSearchResultCheckoutInfoForm;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import TMSaveForm from "../../forms/TMSaveForm";
|
|
4
|
+
import { IconBxInfo, IconFileDots, IconFolder, SDKUI_Globals, SDKUI_Localizator } from "../../../helper";
|
|
5
|
+
import { FormModes } from "../../../ts";
|
|
6
|
+
import { ResultTypes, ValidationItem } from "@topconsultnpm/sdk-ts";
|
|
7
|
+
import { SaveFormOptions, useSaveForm } from "../../../hooks/useForm";
|
|
8
|
+
import { getCicoDownloadFileName, updateDcmtCheckoutItem } from "../../../helper/cicoHelper";
|
|
9
|
+
import { TMColors } from "../../../utils/theme";
|
|
10
|
+
import TMLayoutContainer, { TMLayoutItem } from "../../base/TMLayout";
|
|
11
|
+
import TMTooltip from "../../base/TMTooltip";
|
|
12
|
+
import TMTextBox from "../../editors/TMTextBox";
|
|
13
|
+
import ShowAlert from "../../base/TMAlert";
|
|
14
|
+
import { TMExceptionBoxManager } from "../../base/TMPopUp";
|
|
15
|
+
const TMSearchResultCheckoutInfoForm = (props) => {
|
|
16
|
+
const { dtdName, selectedDcmtOrFocused, onClose } = props;
|
|
17
|
+
const [initialDcmtCheckoutFolder, setInitialDcmtCheckoutFolder] = useState("");
|
|
18
|
+
const [initialDcmtCheckoutName, setInitialDcmtCheckoutName] = useState("");
|
|
19
|
+
const validator = async (params) => {
|
|
20
|
+
const validations = [];
|
|
21
|
+
if (!params.checkoutName?.trim()) {
|
|
22
|
+
validations.push(new ValidationItem(ResultTypes.ERROR, SDKUI_Localizator.Name, SDKUI_Localizator.RequiredField));
|
|
23
|
+
}
|
|
24
|
+
return validations;
|
|
25
|
+
};
|
|
26
|
+
const { formData, setFormData, validationItems, exception } = useSaveForm(FormModes.Create, 0, new SaveFormOptions(), validator);
|
|
27
|
+
const isDisabled = !formData || !formData.checkoutName?.trim() || (formData.checkoutFolder === initialDcmtCheckoutFolder && formData.checkoutName === initialDcmtCheckoutName);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (!selectedDcmtOrFocused.TID || !selectedDcmtOrFocused.DID)
|
|
30
|
+
return;
|
|
31
|
+
const dcmtCheckoutInfoCurrentItems = [...SDKUI_Globals.userSettings.dcmtCheckoutInfo];
|
|
32
|
+
const existingItem = dcmtCheckoutInfoCurrentItems.find((item) => item.TID === selectedDcmtOrFocused.TID.toString() && item.DID === selectedDcmtOrFocused.DID.toString());
|
|
33
|
+
const folder = existingItem?.checkoutFolder ?? "";
|
|
34
|
+
const name = existingItem?.checkoutName ?? getCicoDownloadFileName(dtdName ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused, true, false);
|
|
35
|
+
// Set form data
|
|
36
|
+
setFormData({
|
|
37
|
+
...formData,
|
|
38
|
+
checkoutFolder: folder,
|
|
39
|
+
checkoutName: name,
|
|
40
|
+
});
|
|
41
|
+
// Save initial values
|
|
42
|
+
setInitialDcmtCheckoutFolder(folder);
|
|
43
|
+
setInitialDcmtCheckoutName(name);
|
|
44
|
+
}, []);
|
|
45
|
+
const calcIsModifiedWrapper = (formData) => {
|
|
46
|
+
if (!formData)
|
|
47
|
+
return false;
|
|
48
|
+
if (formData.checkoutFolder !== initialDcmtCheckoutFolder || formData.checkoutName !== initialDcmtCheckoutName) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
};
|
|
53
|
+
const onSaveAsync = () => {
|
|
54
|
+
try {
|
|
55
|
+
if (isDisabled)
|
|
56
|
+
return;
|
|
57
|
+
// Check: formData must exist, selectedDcmtOrFocused.TID and selectedDcmtOrFocused.DID must exist, and at least one of checkoutFolder or checkoutName must be filled
|
|
58
|
+
if (formData && selectedDcmtOrFocused.TID && selectedDcmtOrFocused.DID) {
|
|
59
|
+
// Create a new draft checkout item with TID, DID, and folder/name values
|
|
60
|
+
const newItem = {
|
|
61
|
+
TID: selectedDcmtOrFocused.TID.toString(),
|
|
62
|
+
DID: selectedDcmtOrFocused.DID.toString(),
|
|
63
|
+
checkoutFolder: formData.checkoutFolder ?? "",
|
|
64
|
+
checkoutName: formData.checkoutName ?? ""
|
|
65
|
+
};
|
|
66
|
+
updateDcmtCheckoutItem(newItem, "addOrUpdate");
|
|
67
|
+
onClose();
|
|
68
|
+
ShowAlert({ mode: 'success', title: SDKUI_Localizator.CheckoutInfo, message: SDKUI_Localizator.OperationSuccess, duration: 3000 });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error('Error in onSaveAsync:', error);
|
|
73
|
+
TMExceptionBoxManager.show({ title: SDKUI_Localizator.Error, exception: error });
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return _jsx(TMSaveForm, { title: dtdName + " \u2014 " + SDKUI_Localizator.CheckoutInfo, showTitleFormMode: false, isModal: true, width: "470px", height: "240px", showBackButton: false, showErrorCount: false, showSaveButton: false, showUndoButton: false, showToolbar: false, hasNavigation: false, formMode: FormModes.Create, validationItems: validationItems, exception: exception, isModified: calcIsModifiedWrapper(formData), onClose: onClose, children: _jsx("div", { style: { margin: "0px 10px" }, children: _jsx(TMLayoutContainer, { direction: 'vertical', children: _jsx(TMLayoutContainer, { gap: 5, children: _jsxs(TMLayoutItem, { height: 'max-content', children: [_jsxs("div", { style: { display: "flex", alignItems: "center", gap: "10px", marginTop: "5px", marginBottom: "5px" }, children: [_jsx(TMTooltip, { content: SDKUI_Localizator.CheckInOutSettingsNotice, children: _jsx(IconBxInfo, {}) }), _jsxs("span", { children: [SDKUI_Localizator.DefaultFolder, ":", " ", _jsx("i", { children: SDKUI_Globals.userSettings.defaultCheckInOutFolder !== ""
|
|
77
|
+
? SDKUI_Globals.userSettings.defaultCheckInOutFolder
|
|
78
|
+
: SDKUI_Localizator.UndefinedText })] })] }), _jsx(TMTextBox, { icon: _jsx(IconFolder, {}), label: SDKUI_Localizator.Folder, value: formData?.checkoutFolder ?? '', isModifiedWhen: formData?.checkoutFolder !== initialDcmtCheckoutFolder, onValueChanged: (e) => {
|
|
79
|
+
const newValue = e.target.value;
|
|
80
|
+
setFormData(prev => ({
|
|
81
|
+
...prev,
|
|
82
|
+
checkoutFolder: newValue,
|
|
83
|
+
checkoutName: prev?.checkoutName ?? "",
|
|
84
|
+
}));
|
|
85
|
+
}, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.Folder), autoFocus: true, fromModal: true }), _jsx(TMTextBox, { icon: _jsx(IconFileDots, {}), label: SDKUI_Localizator.Name, value: formData?.checkoutName ?? '', isModifiedWhen: formData?.checkoutName !== initialDcmtCheckoutName, onValueChanged: (e) => {
|
|
86
|
+
const newValue = e.target.value;
|
|
87
|
+
setFormData(prev => ({
|
|
88
|
+
...prev,
|
|
89
|
+
checkoutFolder: prev?.checkoutFolder ?? "",
|
|
90
|
+
checkoutName: newValue,
|
|
91
|
+
}));
|
|
92
|
+
}, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.Name) }), _jsxs("div", { style: {
|
|
93
|
+
width: "100%",
|
|
94
|
+
height: '50px',
|
|
95
|
+
marginTop: "10px",
|
|
96
|
+
display: 'flex',
|
|
97
|
+
justifyContent: 'flex-end',
|
|
98
|
+
alignItems: 'center',
|
|
99
|
+
gap: '10px'
|
|
100
|
+
}, children: [_jsx("button", { onClick: () => onSaveAsync(), disabled: false, style: {
|
|
101
|
+
background: 'none',
|
|
102
|
+
border: 'none',
|
|
103
|
+
color: isDisabled ? '#a0a0a0' : TMColors.primary,
|
|
104
|
+
cursor: isDisabled ? 'not-allowed' : 'pointer',
|
|
105
|
+
padding: '6px 14px',
|
|
106
|
+
borderRadius: '6px',
|
|
107
|
+
transition: 'background-color 0.3s, color 0.3s',
|
|
108
|
+
}, onMouseEnter: e => {
|
|
109
|
+
if (!isDisabled) {
|
|
110
|
+
e.currentTarget.style.backgroundColor = '#e6f0ff';
|
|
111
|
+
e.currentTarget.style.color = '#004a99';
|
|
112
|
+
}
|
|
113
|
+
}, onMouseLeave: e => {
|
|
114
|
+
if (!isDisabled) {
|
|
115
|
+
e.currentTarget.style.backgroundColor = 'transparent';
|
|
116
|
+
e.currentTarget.style.color = TMColors.primary;
|
|
117
|
+
}
|
|
118
|
+
}, children: SDKUI_Localizator.Save }), _jsx("button", { onClick: () => onClose(), style: {
|
|
119
|
+
background: 'none',
|
|
120
|
+
border: 'none',
|
|
121
|
+
color: TMColors.primary,
|
|
122
|
+
cursor: 'pointer',
|
|
123
|
+
padding: '6px 14px',
|
|
124
|
+
borderRadius: '6px',
|
|
125
|
+
transition: 'background-color 0.3s, color 0.3s',
|
|
126
|
+
}, onMouseEnter: e => {
|
|
127
|
+
e.currentTarget.style.backgroundColor = '#e6f0ff';
|
|
128
|
+
e.currentTarget.style.color = '#004a99';
|
|
129
|
+
}, onMouseLeave: e => {
|
|
130
|
+
e.currentTarget.style.backgroundColor = 'transparent';
|
|
131
|
+
e.currentTarget.style.color = TMColors.primary;
|
|
132
|
+
}, children: SDKUI_Localizator.Cancel })] })] }) }) }) }) });
|
|
133
|
+
};
|
|
134
|
+
export default TMSearchResultCheckoutInfoForm;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { DcmtTypeDescriptor, FileDescriptor, FileFormats, LayoutModes, WorkingGroupDescriptor } from '@topconsultnpm/sdk-ts';
|
|
2
|
+
import { DcmtTypeDescriptor, FileDescriptor, FileFormats, LayoutModes, WorkingGroupDescriptor, UserDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
3
|
import { TMDataGridContextMenuItem } from '../../base/TMDataGrid';
|
|
4
4
|
import { DcmtInfo, DcmtOperationTypes, DownloadModes, DownloadTypes, SearchResultContext } from '../../../ts';
|
|
5
5
|
export declare const getSelectedDcmtsOrFocused: (selectedItems: Array<any>, focusedItem: any, fileFormat?: FileFormats) => DcmtInfo[];
|
|
6
6
|
export declare const getAllFieldSelectedDcmtsOrFocused: (selectedItems: Array<any>, focusedItem: any, fileFormat?: FileFormats) => any[];
|
|
7
7
|
export declare const signatureInformationCallback: (isMobile: boolean, inputDcmts: DcmtInfo[] | undefined) => Promise<void>;
|
|
8
|
-
export declare const getCommandsMenuItems: (isMobile: boolean, dtd: DcmtTypeDescriptor | undefined, selectedItems: Array<any>, focusedItem: any, context: SearchResultContext, showFloatingBar: boolean, workingGroupContext: WorkingGroupDescriptor | undefined, showSearch: boolean, setShowFloatingBar: React.Dispatch<React.SetStateAction<boolean>>, openFormHandler: (layoutMode: LayoutModes) => void, openSharedArchiveHandler: () => Promise<void>, showSharedDcmtsHandler: () => Promise<void>, downloadDcmtsAsync: (inputDcmts: DcmtInfo[] | undefined, downloadType: DownloadTypes, downloadMode: DownloadModes, onFileDownloaded?: (dcmtFile: File | undefined) => void, confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>, skipConfirmation?: boolean) => Promise<void>, runOperationAsync: (inputDcmts: DcmtInfo[] | undefined, dcmtOperationType: DcmtOperationTypes, actionAfterOperationAsync?: () => Promise<void>) => Promise<void>, onRefreshSearchAsync: (() => Promise<void>) | undefined, onRefreshDataRowsAsync: (() => Promise<void>) | undefined, onRefreshAfterAddDcmtToFavs: (() => void) | undefined, confirmFormat: () => Promise<FileFormats>, confirmAttachments: (list: FileDescriptor[]) => Promise<string[] | undefined>, openTaskFormHandler: () => void, openDetailDcmtsFormHandler: (value: boolean) => void, openMasterDcmtsFormHandler: (value: boolean) => void, openBatchUpdateFormHandler: (value: boolean) => void, openExportForm: () => void, handleToggleSearch: () => void, handleSignApprove: () => void, openSignSettingsForm: () => void, handleCheckOutOperationCallback: (checkout: boolean) => Promise<void>, openWGsCopyMoveForm?: ((mode: "copyToWgDraft" | "copyToWgArchivedDoc", dcmtTypeDescriptor: DcmtTypeDescriptor, documents: Array<DcmtInfo>) => void), openCommentFormCallback?: ((documents: Array<DcmtInfo>) => void), openEditPdf?: ((documents: Array<DcmtInfo>) => void), openAddDocumentForm?: () => void, passToArchiveCallback?: (outputMids: Array<{
|
|
8
|
+
export declare const getCommandsMenuItems: (isMobile: boolean, dtd: DcmtTypeDescriptor | undefined, allUsers: Array<UserDescriptor>, selectedItems: Array<any>, focusedItem: any, context: SearchResultContext, showFloatingBar: boolean, workingGroupContext: WorkingGroupDescriptor | undefined, showSearch: boolean, setShowFloatingBar: React.Dispatch<React.SetStateAction<boolean>>, openFormHandler: (layoutMode: LayoutModes) => void, openSharedArchiveHandler: () => Promise<void>, showSharedDcmtsHandler: () => Promise<void>, downloadDcmtsAsync: (inputDcmts: DcmtInfo[] | undefined, downloadType: DownloadTypes, downloadMode: DownloadModes, onFileDownloaded?: (dcmtFile: File | undefined) => void, confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>, skipConfirmation?: boolean) => Promise<void>, runOperationAsync: (inputDcmts: DcmtInfo[] | undefined, dcmtOperationType: DcmtOperationTypes, actionAfterOperationAsync?: () => Promise<void>) => Promise<void>, onRefreshSearchAsync: (() => Promise<void>) | undefined, onRefreshDataRowsAsync: (() => Promise<void>) | undefined, onRefreshAfterAddDcmtToFavs: (() => void) | undefined, confirmFormat: () => Promise<FileFormats>, confirmAttachments: (list: FileDescriptor[]) => Promise<string[] | undefined>, openTaskFormHandler: () => void, openDetailDcmtsFormHandler: (value: boolean) => void, openMasterDcmtsFormHandler: (value: boolean) => void, openBatchUpdateFormHandler: (value: boolean) => void, openExportForm: () => void, handleToggleSearch: () => void, handleSignApprove: () => void, openSignSettingsForm: () => void, handleCheckOutOperationCallback: (checkout: boolean) => Promise<void>, showCheckoutInformationFormCallback: () => void, viewHistoryCallback: () => void, openWGsCopyMoveForm?: ((mode: "copyToWgDraft" | "copyToWgArchivedDoc", dcmtTypeDescriptor: DcmtTypeDescriptor, documents: Array<DcmtInfo>) => void), openCommentFormCallback?: ((documents: Array<DcmtInfo>) => void), openEditPdf?: ((documents: Array<DcmtInfo>) => void), openAddDocumentForm?: () => void, passToArchiveCallback?: (outputMids: Array<{
|
|
9
9
|
mid: number;
|
|
10
10
|
value: string;
|
|
11
11
|
}>, tid?: number) => void, archiveMasterDocuments?: (tid: number | undefined) => Promise<void>, archiveDetailDocuments?: (tid: number | undefined) => Promise<void>, hasMasterRelation?: boolean, hasDetailRelation?: boolean, canArchiveMasterRelation?: boolean, canArchiveDetailRelation?: boolean, pairManyToManyDocuments?: (isPairing: boolean) => Promise<void>, hasManyToManyRelation?: boolean) => Array<TMDataGridContextMenuItem>;
|