@topconsultnpm/sdkui-react 6.21.0-dev2.32 → 6.21.0-dev2.34
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/editors/TMTextBox.d.ts +2 -0
- package/lib/components/editors/TMTextBox.js +3 -3
- package/lib/components/features/documents/TMCopyToFolderForm.d.ts +16 -0
- package/lib/components/features/documents/TMCopyToFolderForm.js +306 -0
- package/lib/components/features/documents/TMDownloadRelationViewerSection.d.ts +15 -0
- package/lib/components/features/documents/TMDownloadRelationViewerSection.js +155 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +4 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.js +6 -5
- package/lib/components/features/documents/TMMergeToPdfForm.d.ts +18 -0
- package/lib/components/features/documents/TMMergeToPdfForm.js +164 -0
- package/lib/components/features/documents/TMRelationViewer.d.ts +13 -0
- package/lib/components/features/documents/TMRelationViewer.js +75 -6
- package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +53 -0
- package/lib/components/features/documents/copyAndMergeDcmtsShared.js +263 -0
- package/lib/components/features/search/TMSearch.d.ts +2 -0
- package/lib/components/features/search/TMSearch.js +2 -2
- package/lib/components/features/search/TMSearchResult.d.ts +2 -0
- package/lib/components/features/search/TMSearchResult.js +3 -2
- package/lib/components/forms/Login/TMLoginForm.d.ts +9 -0
- package/lib/components/forms/Login/TMLoginForm.js +44 -0
- package/lib/helper/SDKUI_Globals.d.ts +16 -0
- package/lib/helper/SDKUI_Globals.js +16 -1
- package/lib/helper/TMUtils.d.ts +19 -0
- package/lib/helper/ZipManager.d.ts +56 -0
- package/lib/helper/ZipManager.js +104 -0
- package/lib/helper/index.d.ts +1 -0
- package/lib/helper/index.js +1 -0
- package/lib/hooks/useDcmtOperations.d.ts +8 -2
- package/lib/hooks/useDcmtOperations.js +29 -20
- package/lib/hooks/useDocumentOperations.d.ts +4 -0
- package/lib/hooks/useDocumentOperations.js +75 -7
- package/package.json +2 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { BlobReader, BlobWriter, TextReader, Uint8ArrayReader, ZipWriter, configure } from "@zip.js/zip.js";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// ZIP MANAGER CLASS
|
|
4
|
+
// ============================================================================
|
|
5
|
+
/**
|
|
6
|
+
* Utility per creare file ZIP con password opzionale (AES-256).
|
|
7
|
+
* Tutti i metodi sono statici.
|
|
8
|
+
*/
|
|
9
|
+
export class ZipManager {
|
|
10
|
+
/** Configura zip.js (useWebWorkers, maxWorkers) */
|
|
11
|
+
static configure(options) {
|
|
12
|
+
configure(options);
|
|
13
|
+
}
|
|
14
|
+
// ========================================================================
|
|
15
|
+
// CREAZIONE ZIP
|
|
16
|
+
// ========================================================================
|
|
17
|
+
/** Crea ZIP da array di file */
|
|
18
|
+
static async createZip(files, options = {}) {
|
|
19
|
+
const { password, compressionLevel = 6, encryptionStrength = 3, comment, onProgress, onEntryProgress, signal } = options;
|
|
20
|
+
// Validazione password: stringa vuota = nessuna cifratura
|
|
21
|
+
const usePassword = typeof password === "string" && password.length > 0 ? password : undefined;
|
|
22
|
+
const blobWriter = new BlobWriter("application/zip");
|
|
23
|
+
const zipWriter = new ZipWriter(blobWriter, { password: usePassword, zipCrypto: true });
|
|
24
|
+
try {
|
|
25
|
+
const total = files.length;
|
|
26
|
+
for (let i = 0; i < files.length; i++) {
|
|
27
|
+
if (signal?.aborted) {
|
|
28
|
+
throw new DOMException("Operazione annullata", "AbortError");
|
|
29
|
+
}
|
|
30
|
+
const file = files[i];
|
|
31
|
+
onProgress?.(i + 1, total, file.filename);
|
|
32
|
+
const reader = this.createReader(file.data);
|
|
33
|
+
await zipWriter.add(file.filename, reader, {
|
|
34
|
+
comment: file.comment,
|
|
35
|
+
lastModDate: file.lastModDate,
|
|
36
|
+
signal,
|
|
37
|
+
password: usePassword,
|
|
38
|
+
encryptionStrength,
|
|
39
|
+
onprogress: onEntryProgress ? (progress, total) => onEntryProgress(progress, total) : undefined
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const commentBytes = comment ? new TextEncoder().encode(comment) : undefined;
|
|
43
|
+
return await zipWriter.close(commentBytes);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
try {
|
|
47
|
+
await zipWriter.close();
|
|
48
|
+
}
|
|
49
|
+
catch { /* ignora */ }
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Crea ZIP da singolo file */
|
|
54
|
+
static async createZipFromFile(filename, data, options = {}) {
|
|
55
|
+
return this.createZip([{ filename, data }], options);
|
|
56
|
+
}
|
|
57
|
+
/** Crea ZIP da oggetto { nomeFile: contenuto } */
|
|
58
|
+
static async createZipFromMap(filesMap, options = {}) {
|
|
59
|
+
const files = Object.entries(filesMap).map(([filename, data]) => ({ filename, data }));
|
|
60
|
+
return this.createZip(files, options);
|
|
61
|
+
}
|
|
62
|
+
// ========================================================================
|
|
63
|
+
// DOWNLOAD
|
|
64
|
+
// ========================================================================
|
|
65
|
+
/** Crea ZIP e avvia download */
|
|
66
|
+
static async createAndDownload(files, downloadFilename, options = {}) {
|
|
67
|
+
const blob = await this.createZip(files, options);
|
|
68
|
+
this.downloadBlob(blob, downloadFilename);
|
|
69
|
+
}
|
|
70
|
+
/** Scarica un Blob come file */
|
|
71
|
+
static downloadBlob(blob, filename) {
|
|
72
|
+
const url = URL.createObjectURL(blob);
|
|
73
|
+
const link = document.createElement("a");
|
|
74
|
+
link.href = url;
|
|
75
|
+
link.download = filename;
|
|
76
|
+
link.style.display = "none";
|
|
77
|
+
document.body.appendChild(link);
|
|
78
|
+
link.click();
|
|
79
|
+
document.body.removeChild(link);
|
|
80
|
+
setTimeout(() => URL.revokeObjectURL(url), 100);
|
|
81
|
+
}
|
|
82
|
+
/** Crea URL temporaneo per Blob (ricordarsi revokeObjectURL!) */
|
|
83
|
+
static createObjectURL(blob) {
|
|
84
|
+
return URL.createObjectURL(blob);
|
|
85
|
+
}
|
|
86
|
+
/** Rilascia URL creato con createObjectURL */
|
|
87
|
+
static revokeObjectURL(url) {
|
|
88
|
+
URL.revokeObjectURL(url);
|
|
89
|
+
}
|
|
90
|
+
// ========================================================================
|
|
91
|
+
// PRIVATE
|
|
92
|
+
// ========================================================================
|
|
93
|
+
/** Converte data nel reader appropriato per zip.js */
|
|
94
|
+
static createReader(data) {
|
|
95
|
+
if (typeof data === "string")
|
|
96
|
+
return new TextReader(data);
|
|
97
|
+
if (data instanceof Uint8Array)
|
|
98
|
+
return new Uint8ArrayReader(data);
|
|
99
|
+
if (data instanceof ArrayBuffer)
|
|
100
|
+
return new Uint8ArrayReader(new Uint8Array(data));
|
|
101
|
+
return new BlobReader(data);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export default ZipManager;
|
package/lib/helper/index.d.ts
CHANGED
package/lib/helper/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import { RetrieveFileOptions, FileDescriptor } from '@topconsultnpm/sdk-ts';
|
|
1
|
+
import { RetrieveFileOptions, DcmtOpers, FileDescriptor, GeneralRetrieveFormats, InvoiceRetrieveFormats, OrderRetrieveFormats } from '@topconsultnpm/sdk-ts';
|
|
2
2
|
import { DcmtInfo, DcmtOperationTypes, DownloadModes, DownloadTypes } from '../ts';
|
|
3
|
+
export interface RetrieveFormatOptions {
|
|
4
|
+
retrieveReason?: DcmtOpers;
|
|
5
|
+
generalRetrieveFormat?: GeneralRetrieveFormats;
|
|
6
|
+
invoiceRetrieveFormat?: InvoiceRetrieveFormats;
|
|
7
|
+
orderRetrieveFormat?: OrderRetrieveFormats;
|
|
8
|
+
}
|
|
3
9
|
export interface UseDcmtOperationsReturn {
|
|
4
10
|
abortController: AbortController;
|
|
5
11
|
showWaitPanel: boolean;
|
|
@@ -12,7 +18,7 @@ export interface UseDcmtOperationsReturn {
|
|
|
12
18
|
waitPanelTextSecondary: string;
|
|
13
19
|
waitPanelValueSecondary: number;
|
|
14
20
|
waitPanelMaxValueSecondary: number;
|
|
15
|
-
downloadDcmtsAsync: (inputDcmts: DcmtInfo[] | undefined, downloadType?: DownloadTypes, downloadMode?: DownloadModes, onFileDownloaded?: (dcmtFile: File) => void
|
|
21
|
+
downloadDcmtsAsync: (inputDcmts: DcmtInfo[] | undefined, downloadType?: DownloadTypes, downloadMode?: DownloadModes, onFileDownloaded?: (dcmtFile: File, dcmtInfo: DcmtInfo) => void | Promise<void>, confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>, skipConfirmation?: boolean, retrieveOptions?: RetrieveFormatOptions, useCache?: boolean) => Promise<void>;
|
|
16
22
|
getDcmtFileAsync: (inputDcmt: DcmtInfo | undefined, rfo: RetrieveFileOptions, operationTitle: string, keepWaitPanelPrimary: boolean, bypassCache?: boolean) => Promise<{
|
|
17
23
|
file: File | undefined;
|
|
18
24
|
isFromCache: boolean;
|
|
@@ -42,7 +42,7 @@ export const useDcmtOperations = () => {
|
|
|
42
42
|
const [waitPanelMaxValueSecondary, setWaitPanelMaxValueSecondary] = useState(0);
|
|
43
43
|
const { OpenFileDialog } = useFileDialog();
|
|
44
44
|
const [selectFileSource, FileSourceDialog] = useFileSourceDialog();
|
|
45
|
-
const _downloadDcmtsAsync = async (inputDcmts, downloadMode = "download", onFileDownloaded, skipConfirmation = false) => {
|
|
45
|
+
const _downloadDcmtsAsync = async (inputDcmts, downloadMode = "download", onFileDownloaded, skipConfirmation = false, retrieveOptions, useCache = true) => {
|
|
46
46
|
if (inputDcmts === undefined)
|
|
47
47
|
return;
|
|
48
48
|
if (inputDcmts.length <= 0)
|
|
@@ -72,9 +72,11 @@ export const useDcmtOperations = () => {
|
|
|
72
72
|
setWaitPanelTitle(operationTitle);
|
|
73
73
|
abortController = new AbortController();
|
|
74
74
|
const rfo = new RetrieveFileOptions();
|
|
75
|
-
rfo.retrieveReason = DcmtOpers.ShowFile;
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
rfo.retrieveReason = retrieveOptions?.retrieveReason ?? DcmtOpers.ShowFile;
|
|
76
|
+
if (retrieveOptions?.generalRetrieveFormat !== undefined)
|
|
77
|
+
rfo.generalRetrieveFormat = retrieveOptions.generalRetrieveFormat;
|
|
78
|
+
rfo.invoiceRetrieveFormat = retrieveOptions?.invoiceRetrieveFormat ?? SDKUI_Globals.userSettings.searchSettings.invoiceRetrieveFormat;
|
|
79
|
+
rfo.orderRetrieveFormat = retrieveOptions?.orderRetrieveFormat ?? SDKUI_Globals.userSettings.searchSettings.orderRetrieveFormat;
|
|
78
80
|
let result = [];
|
|
79
81
|
setWaitPanelMaxValuePrimary(inputDcmts.length);
|
|
80
82
|
let firstBlock = true;
|
|
@@ -88,7 +90,7 @@ export const useDcmtOperations = () => {
|
|
|
88
90
|
setWaitPanelTextPrimary(`Download file ${i + 1} di ${inputDcmts.length}`);
|
|
89
91
|
let file;
|
|
90
92
|
const cacheKey = `${inputDcmts[i].TID}-${inputDcmts[i].DID}`;
|
|
91
|
-
if (dcmtsFileCacheDownload.has(cacheKey)) {
|
|
93
|
+
if (useCache && dcmtsFileCacheDownload.has(cacheKey)) {
|
|
92
94
|
file = dcmtsFileCacheDownload.get(cacheKey);
|
|
93
95
|
}
|
|
94
96
|
else {
|
|
@@ -112,23 +114,30 @@ export const useDcmtOperations = () => {
|
|
|
112
114
|
const fileURL = window.URL.createObjectURL(file);
|
|
113
115
|
if (downloadMode === "openInNewWindow") {
|
|
114
116
|
(onFileDownloaded && file)
|
|
115
|
-
? onFileDownloaded(file)
|
|
117
|
+
? onFileDownloaded(file, inputDcmts[i])
|
|
116
118
|
: window.open(fileURL, '_blank', 'noopener');
|
|
117
119
|
}
|
|
118
120
|
else {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
if (onFileDownloaded && file) {
|
|
122
|
+
await onFileDownloaded(file, inputDcmts[i]);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const alink2 = document.createElement('a');
|
|
126
|
+
alink2.href = fileURL;
|
|
127
|
+
const baseFileName = inputDcmts[i].fileName ?? (inputDcmts[i].FILEEXT ? `${inputDcmts[i].DID}.${inputDcmts[i].FILEEXT}` : file?.name);
|
|
128
|
+
alink2.download = getDownloadFileName(baseFileName);
|
|
129
|
+
alink2.target = "_blank";
|
|
130
|
+
alink2.rel = "noreferrer";
|
|
131
|
+
alink2.click();
|
|
132
|
+
}
|
|
126
133
|
}
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
if (useCache) {
|
|
135
|
+
if (dcmtsFileCacheDownload.size >= CACHE_SIZE_LIMIT) {
|
|
136
|
+
const oldestKey = dcmtsFileCacheDownload.keys().next().value;
|
|
137
|
+
dcmtsFileCacheDownload.delete(oldestKey);
|
|
138
|
+
}
|
|
139
|
+
dcmtsFileCacheDownload.set(cacheKey, file);
|
|
130
140
|
}
|
|
131
|
-
dcmtsFileCacheDownload.set(cacheKey, file);
|
|
132
141
|
result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.SUCCESS });
|
|
133
142
|
}
|
|
134
143
|
catch (ex) {
|
|
@@ -208,11 +217,11 @@ export const useDcmtOperations = () => {
|
|
|
208
217
|
TMExceptionBoxManager.show({ exception: err });
|
|
209
218
|
}
|
|
210
219
|
};
|
|
211
|
-
const downloadDcmtsAsync = async (inputDcmts, downloadType = DownloadTypes.Attachment, downloadMode = "download", onFileDownloaded, confirmAttachments, skipConfirmation = false) => {
|
|
220
|
+
const downloadDcmtsAsync = async (inputDcmts, downloadType = DownloadTypes.Attachment, downloadMode = "download", onFileDownloaded, confirmAttachments, skipConfirmation = false, retrieveOptions, useCache = true) => {
|
|
212
221
|
switch (downloadType) {
|
|
213
|
-
case DownloadTypes.Dcmt: return await _downloadDcmtsAsync(inputDcmts, downloadMode, onFileDownloaded, skipConfirmation);
|
|
222
|
+
case DownloadTypes.Dcmt: return await _downloadDcmtsAsync(inputDcmts, downloadMode, onFileDownloaded, skipConfirmation, retrieveOptions, useCache);
|
|
214
223
|
case DownloadTypes.Attachment: return await _downloadAttachmentsAsync(inputDcmts, confirmAttachments);
|
|
215
|
-
default: return await _downloadDcmtsAsync(inputDcmts, undefined, undefined, skipConfirmation);
|
|
224
|
+
default: return await _downloadDcmtsAsync(inputDcmts, undefined, undefined, skipConfirmation, retrieveOptions, useCache);
|
|
216
225
|
}
|
|
217
226
|
};
|
|
218
227
|
const uploadDcmtsAsync = async (inputDcmts, operationTitle, operType, actionAfterOperationAsync) => {
|
|
@@ -6,6 +6,7 @@ import { DcmtInfo, MetadataValueDescriptorEx, SearchResultContext, TaskContext }
|
|
|
6
6
|
import { UseCheckInOutOperationsReturn } from "./useCheckInOutOperations";
|
|
7
7
|
import { UseDcmtOperationsReturn } from "./useDcmtOperations";
|
|
8
8
|
import { UseRelatedDocumentsReturn } from "./useRelatedDocuments";
|
|
9
|
+
import { MergePdfManagerType } from '../helper';
|
|
9
10
|
export interface DocumentDataProps {
|
|
10
11
|
dtd: DcmtTypeDescriptor | undefined;
|
|
11
12
|
selectedItems: Array<any>;
|
|
@@ -38,6 +39,8 @@ export interface DocumentDataProps {
|
|
|
38
39
|
s4TViewerDialogComponent?: React.ReactNode;
|
|
39
40
|
};
|
|
40
41
|
}
|
|
42
|
+
export type TMCopyToFolderMode = 'onlySelected' | 'customized';
|
|
43
|
+
export type TMCopyToFolderOperationType = 'copyToFolder' | 'mergeToPdf';
|
|
41
44
|
export interface ExportDataProps {
|
|
42
45
|
dataColumns?: Array<IColumnProps>;
|
|
43
46
|
dataSource?: Array<any>;
|
|
@@ -97,6 +100,7 @@ interface UseDocumentOperationsProps {
|
|
|
97
100
|
tasks: TasksProps;
|
|
98
101
|
callbacks: OperationCallbacks;
|
|
99
102
|
exportData?: ExportDataProps;
|
|
103
|
+
mergePdfManager?: MergePdfManagerType;
|
|
100
104
|
}
|
|
101
105
|
export interface UseDocumentOperationsResult {
|
|
102
106
|
operationItems: Array<TMContextMenuItemProps>;
|
|
@@ -23,6 +23,8 @@ import { useInputAttachmentsDialog, useInputCvtFormatDialog } from "./useInputDi
|
|
|
23
23
|
import { useRelatedDocuments } from "./useRelatedDocuments";
|
|
24
24
|
import { convertSearchResultDescriptorToFileItems, dcmtsFileCachePreview, getDcmtCicoStatus, getMoreInfoTasksForDocument, IconActivity, IconArchiveDetail, IconArchiveDoc, IconArchiveMaster, IconBatchUpdate, IconCheck, IconCheckFile, IconCheckIn, IconCircleInfo, IconCloseCircle, IconConvertFilePdf, IconCopy, IconCustom, IconDelete, IconDetailDcmts, IconDotsVerticalCircleOutline, IconDownload, IconEdit, IconExportTo, IconFileDots, IconHide, IconInfo, IconMenuCAArchive, IconMoveToFolder, IconPair, IconPin, IconPlatform, IconPreview, IconRelation, IconSearch, IconShare, IconSharedDcmt, IconShow, IconSignaturePencil, IconStar, IconSubstFile, IconUndo, IconUnpair, IconUserGroupOutline, isPdfEditorAvailable, SDKUI_Localizator, searchResultToMetadataValues, TMImageLibrary } from '../helper';
|
|
25
25
|
import { isXMLFileExt } from "../helper/dcmtsHelper";
|
|
26
|
+
import TMCopyToFolderForm from "../components/features/documents/TMCopyToFolderForm";
|
|
27
|
+
import TMMergeToPdfForm from "../components/features/documents/TMMergeToPdfForm";
|
|
26
28
|
export const getSelectedDcmtsOrFocused = (selectedItems, focusedItem, fileFormat) => {
|
|
27
29
|
if (selectedItems.length <= 0 && !focusedItem)
|
|
28
30
|
return [];
|
|
@@ -49,7 +51,7 @@ export const getAllFieldSelectedDcmtsOrFocused = (selectedItems, focusedItem, fi
|
|
|
49
51
|
return [];
|
|
50
52
|
};
|
|
51
53
|
export const useDocumentOperations = (props) => {
|
|
52
|
-
const { context, documentData, exportData, uiConfig, tasks, callbacks, } = props;
|
|
54
|
+
const { context, documentData, exportData, uiConfig, tasks, callbacks, mergePdfManager } = props;
|
|
53
55
|
const { dtd, selectedItems, focusedItem, searchResult, currentSearchResults, currentMetadataValues, allUsers = [], datagridUtility, dcmtUtility, } = documentData;
|
|
54
56
|
/** State for managing the document(s) to process */
|
|
55
57
|
const [selectedDcmtInfos, setSelectedDcmtInfos] = useState([]);
|
|
@@ -162,6 +164,8 @@ export const useDocumentOperations = (props) => {
|
|
|
162
164
|
const [showMoreInfoPopup, setShowMoreInfoPopup] = useState(false);
|
|
163
165
|
const [isOpenBatchUpdate, setIsOpenBatchUpdate] = useState(false);
|
|
164
166
|
const [isModifiedBatchUpdate, setIsModifiedBatchUpdate] = useState(false);
|
|
167
|
+
const [openCopyToFolderForm, setOpenCopyToFolderForm] = useState({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' });
|
|
168
|
+
const [showTMRelationViewerInCopyToFolderForm, setShowTMRelationViewerInCopyToFolderForm] = useState(false);
|
|
165
169
|
const openDetailDcmtsFormHandler = (value) => { setIsOpenDetails(value); };
|
|
166
170
|
const openMasterDcmtsFormHandler = (value) => { setIsOpenMaster(value); };
|
|
167
171
|
// State to control whether the export form (for exporting to Excel/CSV/txt and others) should be shown
|
|
@@ -695,6 +699,64 @@ export const useDocumentOperations = (props) => {
|
|
|
695
699
|
]
|
|
696
700
|
};
|
|
697
701
|
};
|
|
702
|
+
const mergeToPdfMenuItem = () => {
|
|
703
|
+
return {
|
|
704
|
+
id: 'merge-pdf',
|
|
705
|
+
icon: _jsx("i", { className: "dx-icon-pdffile", style: { fontSize: '18px' } }),
|
|
706
|
+
name: 'Unisci in un file PDF',
|
|
707
|
+
operationType: 'multiRow',
|
|
708
|
+
disabled: isDisabledForMultiRow(),
|
|
709
|
+
submenu: [
|
|
710
|
+
{
|
|
711
|
+
id: 'merge-pdf-only-selected',
|
|
712
|
+
icon: _jsx("i", { className: "dx-icon-pdffile", style: { fontSize: '18px' } }),
|
|
713
|
+
name: 'Solo i documenti selezionati',
|
|
714
|
+
onClick: () => {
|
|
715
|
+
setShowTMRelationViewerInCopyToFolderForm(false);
|
|
716
|
+
setOpenCopyToFolderForm({ open: true, operationType: 'mergeToPdf', mode: 'onlySelected' });
|
|
717
|
+
},
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
id: 'merge-pdf-customized',
|
|
721
|
+
icon: _jsx("i", { className: "dx-icon-pdffile", style: { fontSize: '18px' } }),
|
|
722
|
+
name: 'Documenti di primo livello e i correlati selezionati',
|
|
723
|
+
onClick: () => {
|
|
724
|
+
setShowTMRelationViewerInCopyToFolderForm(true);
|
|
725
|
+
setOpenCopyToFolderForm({ open: true, operationType: 'mergeToPdf', mode: 'customized' });
|
|
726
|
+
},
|
|
727
|
+
},
|
|
728
|
+
],
|
|
729
|
+
};
|
|
730
|
+
};
|
|
731
|
+
const copyToFolderMenuItem = () => {
|
|
732
|
+
return {
|
|
733
|
+
id: 'copy-to-folder',
|
|
734
|
+
icon: _jsx(IconCopy, {}),
|
|
735
|
+
name: 'Copia in una cartella',
|
|
736
|
+
operationType: 'multiRow',
|
|
737
|
+
disabled: isDisabledForMultiRow(),
|
|
738
|
+
submenu: [
|
|
739
|
+
{
|
|
740
|
+
id: 'copy-to-folder-only-selected',
|
|
741
|
+
icon: _jsx(IconCopy, {}),
|
|
742
|
+
name: 'Solo i documenti selezionati',
|
|
743
|
+
onClick: () => {
|
|
744
|
+
setShowTMRelationViewerInCopyToFolderForm(false);
|
|
745
|
+
setOpenCopyToFolderForm({ open: true, operationType: 'copyToFolder', mode: 'onlySelected' });
|
|
746
|
+
},
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
id: 'copy-to-folder-customized',
|
|
750
|
+
icon: _jsx(IconCopy, {}),
|
|
751
|
+
name: 'Documenti di primo livello e i correlati selezionati',
|
|
752
|
+
onClick: () => {
|
|
753
|
+
setShowTMRelationViewerInCopyToFolderForm(true);
|
|
754
|
+
setOpenCopyToFolderForm({ open: true, operationType: 'copyToFolder', mode: 'customized', });
|
|
755
|
+
},
|
|
756
|
+
},
|
|
757
|
+
],
|
|
758
|
+
};
|
|
759
|
+
};
|
|
698
760
|
const relationsMenuItem = () => {
|
|
699
761
|
return {
|
|
700
762
|
id: 'rel',
|
|
@@ -1019,6 +1081,8 @@ export const useDocumentOperations = (props) => {
|
|
|
1019
1081
|
},
|
|
1020
1082
|
signatureMenuItem(),
|
|
1021
1083
|
checkinMenuItem(),
|
|
1084
|
+
copyToFolderMenuItem(),
|
|
1085
|
+
mergePdfManager ? mergeToPdfMenuItem() : null,
|
|
1022
1086
|
allowRelations ? relationsMenuItem() : null,
|
|
1023
1087
|
sharedDcmtsMenuItem(),
|
|
1024
1088
|
// shareMenuItem(),
|
|
@@ -1054,6 +1118,8 @@ export const useDocumentOperations = (props) => {
|
|
|
1054
1118
|
copyFromWgMenuItem(),
|
|
1055
1119
|
movetofolderFromWgMenuItem(),
|
|
1056
1120
|
commentFromWgMenuItem(false),
|
|
1121
|
+
copyToFolderMenuItem(),
|
|
1122
|
+
mergeToPdfMenuItem(),
|
|
1057
1123
|
removeFromWgMenuItem(SDKUI_Localizator.RemoveFromWorkgroup),
|
|
1058
1124
|
];
|
|
1059
1125
|
return items.sort((a, b) => a.name.localeCompare(b.name));
|
|
@@ -1104,6 +1170,8 @@ export const useDocumentOperations = (props) => {
|
|
|
1104
1170
|
},
|
|
1105
1171
|
signatureMenuItem(),
|
|
1106
1172
|
checkinMenuItem(),
|
|
1173
|
+
copyToFolderMenuItem(),
|
|
1174
|
+
mergeToPdfMenuItem(),
|
|
1107
1175
|
...((inputDcmtFormLayoutMode === LayoutModes.Update) ? [fullTextSearchMenuItem()] : []),
|
|
1108
1176
|
];
|
|
1109
1177
|
};
|
|
@@ -1136,8 +1204,8 @@ export const useDocumentOperations = (props) => {
|
|
|
1136
1204
|
onRefreshBlogDatagrid,
|
|
1137
1205
|
onRefreshPreviewDatagrid
|
|
1138
1206
|
} })) }), (showHistory && dtd && selectedDcmtInfos.length > 0) && _jsx(TMViewHistoryDcmt, { fromDTD: dtd, deviceType: deviceType, inputDcmt: selectedDcmtInfos[0], onClose: hideHistoryCallback, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }), (commentFormState.show && selectedDcmtInfos.length > 0) && _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid: selectedDcmtInfos[0].TID, did: selectedDcmtInfos[0].DID } }, onClose: hideCommentFormCallback, refreshCallback: onRefreshBlog, participants: [], showAttachmentsSection: true, allArchivedDocumentsFileItems: convertSearchResultDescriptorToFileItems(currentSearchResults ?? []), isCommentRequired: commentFormState.isRequired, removeAndEditAttachment: commentFormState.removeAndEditAttachment, selectedAttachmentDid: [Number(selectedDcmtInfos[0].DID)] }), (showCheckoutInformationForm && dtd && selectedDcmtInfos.length > 0) &&
|
|
1139
|
-
_jsx(TMDcmtCheckoutInfoForm, { dtdName: dtd.name ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused: selectedDcmtInfos[0], onClose: hideCheckoutInformationFormCallback }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: selectedDcmtInfos, allowNavigation: selectedDcmtInfos.length === 1, canNext: canNavigateHandler ? canNavigateHandler('next') : false, canPrev: canNavigateHandler ? canNavigateHandler('prev') : false, onNext: () => onNavigateHandler && onNavigateHandler('next'), onPrev: () => onNavigateHandler && onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onTaskCreateRequest: onTaskCreateRequest, datagridUtility: datagridUtility, dcmtUtility: dcmtUtility }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: selectedDcmtInfos, isForMaster: true, allowNavigation: selectedDcmtInfos.length === 1, canNext: canNavigateHandler ? canNavigateHandler('next') : false, canPrev: canNavigateHandler ? canNavigateHandler('prev') : false, onNext: () => onNavigateHandler && onNavigateHandler('next'), onPrev: () => onNavigateHandler && onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onTaskCreateRequest: onTaskCreateRequest, datagridUtility: datagridUtility, dcmtUtility: dcmtUtility }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
|
1140
|
-
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, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onTaskCreateRequest: onTaskCreateRequest, datagridUtility: datagridUtility, dcmtUtility: dcmtUtility }) }, `${index}-${dcmt.DID}`));
|
|
1207
|
+
_jsx(TMDcmtCheckoutInfoForm, { dtdName: dtd.name ?? SDKUI_Localizator.SearchResult, selectedDcmtOrFocused: selectedDcmtInfos[0], onClose: hideCheckoutInformationFormCallback }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: selectedDcmtInfos, allowNavigation: selectedDcmtInfos.length === 1, canNext: canNavigateHandler ? canNavigateHandler('next') : false, canPrev: canNavigateHandler ? canNavigateHandler('prev') : false, onNext: () => onNavigateHandler && onNavigateHandler('next'), onPrev: () => onNavigateHandler && onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onTaskCreateRequest: onTaskCreateRequest, datagridUtility: datagridUtility, dcmtUtility: dcmtUtility, mergePdfManager: mergePdfManager }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: selectedDcmtInfos, isForMaster: true, allowNavigation: selectedDcmtInfos.length === 1, canNext: canNavigateHandler ? canNavigateHandler('next') : false, canPrev: canNavigateHandler ? canNavigateHandler('prev') : false, onNext: () => onNavigateHandler && onNavigateHandler('next'), onPrev: () => onNavigateHandler && onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onTaskCreateRequest: onTaskCreateRequest, datagridUtility: datagridUtility, dcmtUtility: dcmtUtility, mergePdfManager: mergePdfManager }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
|
1208
|
+
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, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, onTaskCreateRequest: onTaskCreateRequest, datagridUtility: datagridUtility, dcmtUtility: dcmtUtility, mergePdfManager: mergePdfManager }) }, `${index}-${dcmt.DID}`));
|
|
1141
1209
|
})] }), 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: () => {
|
|
1142
1210
|
setIsOpenArchiveRelationForm(false);
|
|
1143
1211
|
setArchiveType(undefined);
|
|
@@ -1182,7 +1250,7 @@ export const useDocumentOperations = (props) => {
|
|
|
1182
1250
|
TMSpinner.hide();
|
|
1183
1251
|
}
|
|
1184
1252
|
}, onClose: () => setShowManyToManyChooser(false), manageUseLocalizedName: false }), showPairDcmtsModal &&
|
|
1185
|
-
_jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onRefreshSearchAsyncDatagrid: onRefreshSearchAsyncDatagrid, onFileOpened: onFileOpened, onTaskCreateRequest: onTaskCreateRequest, openWGsCopyMoveForm: openWGsCopyMoveForm, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, passToArchiveCallback: passToArchiveCallback, showTodoDcmtForm: showTodoDcmtForm, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, toppyHelpCenterUsePortal: toppyHelpCenterUsePortal, showToppyDraggableHelpCenter: showToppyDraggableHelpCenter }) }), showPairSearchModal &&
|
|
1253
|
+
_jsx(TMModal, { title: (isPairingManyToMany ? "Abbina" : "Disabbina") + " documenti", onClose: () => setShowPairDcmtsModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearchResult, { searchResults: pairedSearchResults, onRefreshAfterAddDcmtToFavs: onRefreshAfterAddDcmtToFavs, onRefreshSearchAsyncDatagrid: onRefreshSearchAsyncDatagrid, onFileOpened: onFileOpened, onTaskCreateRequest: onTaskCreateRequest, openWGsCopyMoveForm: openWGsCopyMoveForm, editPdfForm: editPdfForm, openS4TViewer: openS4TViewer, onOpenS4TViewerRequest: onOpenS4TViewerRequest, onOpenPdfEditorRequest: onOpenPdfEditorRequest, passToArchiveCallback: passToArchiveCallback, showTodoDcmtForm: showTodoDcmtForm, allowFloatingBar: false, floatingActionConfig: pairFloatingActionConfig, showBackButton: false, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, toppyHelpCenterUsePortal: toppyHelpCenterUsePortal, showToppyDraggableHelpCenter: showToppyDraggableHelpCenter, mergePdfManager: mergePdfManager }) }), showPairSearchModal &&
|
|
1186
1254
|
_jsx(TMModal, { title: "Ricerca documenti", onClose: () => setShowPairSearchModal(false), width: isMobile ? '90%' : '50%', height: isMobile ? '90%' : '70%', children: _jsx(TMSearch, { onlyShowSearchQueryPanel: true, inputTID: pairSearchModalTargetTID, inputMids: pairSearchModalInputMids, floatingActionConfig: pairSearchModalFloatingActionConfig, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), isOpenSharedArchive && _jsx(TMModal, { title: SDKUI_Localizator.SharedArchiving, onClose: () => {
|
|
1187
1255
|
setIsOpenSharedArchive(false);
|
|
1188
1256
|
}, width: isMobile ? '90%' : '60%', height: isMobile ? '90%' : '80%', children: _jsx(TMArchive, { inputDID: selectedDcmtInfos?.[0].DID, inputTID: selectedDcmtInfos?.[0].TID, inputMids: currentMetadataValues.filter(md => md.mid && md.mid > 100).map(md => ({ mid: md.mid, value: md.value ?? '' })), isSharedArchive: true, inputFile: sharedDcmtFile, onSavedAsyncCallback: async (tid, did) => {
|
|
@@ -1191,11 +1259,11 @@ export const useDocumentOperations = (props) => {
|
|
|
1191
1259
|
}, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers }) }), sharedDcmtSearchResults.length > 0 &&
|
|
1192
1260
|
_jsx(TMModal, { title: "Documenti condivisi", onClose: () => {
|
|
1193
1261
|
setSharedDcmtSearchResults([]);
|
|
1194
|
-
}, 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 }) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${selectedDcmtInfos.length} documenti selezionati)`, inputDcmts: selectedDcmtInfos, TID: selectedDcmtInfos.length > 0 ? selectedDcmtInfos[0]?.TID : undefined, DID: selectedDcmtInfos.length > 0 ? selectedDcmtInfos[0]?.DID : undefined, onBack: () => updateBatchUpdateForm(false), onSavedCallbackAsync: async () => {
|
|
1262
|
+
}, 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, mergePdfManager: mergePdfManager }) }), isOpenBatchUpdate && _jsx(TMBatchUpdateForm, { isModal: true, titleModal: `${SDKUI_Localizator.BatchUpdate} (${selectedDcmtInfos.length} documenti selezionati)`, inputDcmts: selectedDcmtInfos, TID: selectedDcmtInfos.length > 0 ? selectedDcmtInfos[0]?.TID : undefined, DID: selectedDcmtInfos.length > 0 ? selectedDcmtInfos[0]?.DID : undefined, onBack: () => updateBatchUpdateForm(false), onSavedCallbackAsync: async () => {
|
|
1195
1263
|
updateBatchUpdateForm(false);
|
|
1196
1264
|
setIsModifiedBatchUpdate(false);
|
|
1197
1265
|
await onRefreshDataRowsAsync?.();
|
|
1198
|
-
}, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 0, onClose: () => updateShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 1, onClose: () => updateShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, onClose: () => updateShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { fromDTD: dtd, TID: contextConfig.approvalTID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: handleWFOperationCompleted, onClose: () => updateShowMoreInfoPopup(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, triggerBlogRefresh: onRefreshBlogDatagrid }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), _jsx(FileSourceDialog, {}), taskFormDialogComponent, s4TViewerDialogComponent, currentCustomButton && _jsx(TMCustomButton, { button: currentCustomButton, formData: currentMetadataValues, selectedItems: selectedItemsFull, onClose: () => setCurrentCustomButton(undefined) })] }));
|
|
1266
|
+
}, onStatusChanged: (isModified) => { setIsModifiedBatchUpdate(isModified); } }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 0, onClose: () => updateShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, isReject: 1, onClose: () => updateShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, onCompleted: handleWFOperationCompleted, selectedItems: approvalVID ? selectedDcmtInfos.map(item => ({ ...item, TID: approvalVID })) : selectedDcmtInfos, onClose: () => updateShowReAssignPopup(false) }), showMoreInfoPopup && _jsx(WorkFlowMoreInfoPopUp, { fromDTD: dtd, TID: contextConfig.approvalTID, DID: focusedItem?.DID, deviceType: deviceType, onCompleted: handleWFOperationCompleted, onClose: () => updateShowMoreInfoPopup(false), allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, triggerBlogRefresh: onRefreshBlogDatagrid }), openCopyToFolderForm.open && openCopyToFolderForm.operationType === 'mergeToPdf' && _jsx(TMMergeToPdfForm, { mode: openCopyToFolderForm.mode, selectedDcmtInfos: selectedDcmtInfos, onClose: () => setOpenCopyToFolderForm({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' }), showTMRelationViewer: showTMRelationViewerInCopyToFolderForm, mergePdfManager: mergePdfManager }), openCopyToFolderForm.open && openCopyToFolderForm.operationType === 'copyToFolder' && _jsx(TMCopyToFolderForm, { mode: openCopyToFolderForm.mode, selectedDcmtInfos: selectedDcmtInfos, onClose: () => setOpenCopyToFolderForm({ open: false, operationType: 'copyToFolder', mode: 'onlySelected' }), showTMRelationViewer: showTMRelationViewerInCopyToFolderForm }), _jsx(ConfirmFormatDialog, {}), _jsx(ConfirmAttachmentsDialog, {}), _jsx(FileSourceDialog, {}), taskFormDialogComponent, s4TViewerDialogComponent, currentCustomButton && _jsx(TMCustomButton, { button: currentCustomButton, formData: currentMetadataValues, selectedItems: selectedItemsFull, onClose: () => setCurrentCustomButton(undefined) })] }));
|
|
1199
1267
|
return {
|
|
1200
1268
|
operationItems: operationItems(),
|
|
1201
1269
|
renderFloatingBar,
|
|
@@ -1317,6 +1385,6 @@ export const useDocumentOperations = (props) => {
|
|
|
1317
1385
|
updateShowReAssignPopup,
|
|
1318
1386
|
updateShowMoreInfoPopup
|
|
1319
1387
|
}
|
|
1320
|
-
}
|
|
1388
|
+
},
|
|
1321
1389
|
};
|
|
1322
1390
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@topconsultnpm/sdkui-react",
|
|
3
|
-
"version": "6.21.0-dev2.
|
|
3
|
+
"version": "6.21.0-dev2.34",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@topconsultnpm/sdk-ts": "6.21.0-dev2.5",
|
|
44
|
+
"@zip.js/zip.js": "2.8.26",
|
|
44
45
|
"buffer": "^6.0.3",
|
|
45
46
|
"devextreme": "^25.2.6",
|
|
46
47
|
"devextreme-react": "^25.2.6",
|