@topconsultnpm/sdkui-react 6.22.0-dev3.24 → 6.22.0-dev3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/base/TMAlert.js +6 -8
- package/lib/components/base/TMAreaManager.js +53 -55
- package/lib/components/base/TMCustomButton.js +39 -48
- package/lib/components/base/TMTreeView.js +14 -0
- package/lib/components/base/waitPanel/TMWaitPanelConfirm.d.ts +12 -0
- package/lib/components/base/waitPanel/TMWaitPanelConfirm.js +185 -0
- package/lib/components/base/waitPanel/TMWaitPanelManager.d.ts +169 -0
- package/lib/components/base/waitPanel/TMWaitPanelManager.js +320 -0
- package/lib/components/base/waitPanel/TMWaitPanelView.d.ts +53 -0
- package/lib/components/base/waitPanel/TMWaitPanelView.js +274 -0
- package/lib/components/base/waitPanel/index.d.ts +1 -0
- package/lib/components/base/waitPanel/index.js +1 -0
- package/lib/components/choosers/TMPathChooser.js +17 -34
- package/lib/components/features/assistant/TMToppyDraggableHelpCenter.js +2 -2
- package/lib/components/features/documents/TMBatchUpdateForm.js +3 -4
- package/lib/components/features/documents/TMCopyToFolderForm.js +32 -35
- package/lib/components/features/documents/TMDcmtForm.js +48 -60
- package/lib/components/features/documents/TMDcmtIcon.d.ts +1 -3
- package/lib/components/features/documents/TMDcmtIcon.js +3 -5
- package/lib/components/features/documents/TMDcmtPreview.js +5 -3
- package/lib/components/features/documents/TMMasterDetailDcmts.d.ts +2 -0
- package/lib/components/features/documents/TMMasterDetailDcmts.js +45 -147
- package/lib/components/features/documents/TMMergeToPdfForm.js +48 -47
- package/lib/components/features/documents/TMMultiMasterDetailDcmtsForm.js +14 -15
- package/lib/components/features/documents/TMRelationViewer.d.ts +3 -14
- package/lib/components/features/documents/TMRelationViewer.js +115 -79
- package/lib/components/features/search/TMSearchResult.js +6 -8
- package/lib/components/features/search/TMViewHistoryDcmt.js +14 -25
- package/lib/components/features/tasks/TMTasksView.js +91 -90
- package/lib/components/features/wg/TMWGsCopyMoveForm.js +91 -91
- package/lib/components/grids/TMBlogsPost.js +92 -96
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.js +2 -0
- package/lib/components/pages/TMPage.js +29 -31
- package/lib/helper/SDKUI_Localizator.d.ts +7 -0
- package/lib/helper/SDKUI_Localizator.js +70 -0
- package/lib/helper/ZipManager.d.ts +1 -1
- package/lib/helper/ZipManager.js +2 -1
- package/lib/hooks/useCheckInOutOperations.d.ts +0 -6
- package/lib/hooks/useCheckInOutOperations.js +14 -34
- package/lib/hooks/useDcmtOperations.d.ts +3 -12
- package/lib/hooks/useDcmtOperations.js +130 -160
- package/lib/hooks/useDocumentOperations.js +12 -23
- package/lib/hooks/useMultiMasterDetailDcmts.d.ts +0 -15
- package/lib/hooks/useMultiMasterDetailDcmts.js +62 -65
- package/lib/hooks/useWorkflowApprove.js +33 -17
- package/package.json +1 -1
|
@@ -11,7 +11,8 @@ import { TMColors } from "../../utils/theme";
|
|
|
11
11
|
import ShowAlert from "../base/TMAlert";
|
|
12
12
|
import { TMMessageBoxManager, ButtonNames } from "../base/TMPopUp";
|
|
13
13
|
import TMTooltip from "../base/TMTooltip";
|
|
14
|
-
import
|
|
14
|
+
import TMLayoutContainer from "../base/TMLayout";
|
|
15
|
+
import TMWaitPanelManager from "../base/waitPanel/TMWaitPanelManager";
|
|
15
16
|
import TMHtmlContentDisplay from "../editors/TMHtmlContentDisplay";
|
|
16
17
|
import TMDcmtForm from "../features/documents/TMDcmtForm";
|
|
17
18
|
import { TMResultManager } from "../forms/TMResultDialog";
|
|
@@ -38,7 +39,7 @@ const TMBlogsPost = (props) => {
|
|
|
38
39
|
isRefreshEnabled: false,
|
|
39
40
|
isCreateContextualTask: false,
|
|
40
41
|
}, showFloatingCommentButton = false, showCommentFormCallback, refreshCallback, showId, setShowId, refreshHomePageNews, markBlogAsRead, externalBlogPost, resetExternalBlogPost, visible = true, allTasks = [], getAllTasks, deleteTaskByIdsCallback, addTaskCallback, editTaskCallback, afterTaskSaved, handleNavigateToWGs, handleNavigateToDossiers, handleNavigateToCaseflows, } = props;
|
|
41
|
-
const {
|
|
42
|
+
const { downloadDcmtsAsync } = useDcmtOperations();
|
|
42
43
|
// Get the current device type (e.g., mobile, tablet, desktop) using a custom hook.
|
|
43
44
|
const deviceType = useDeviceType();
|
|
44
45
|
const bottomRef = useRef(null);
|
|
@@ -77,12 +78,6 @@ const TMBlogsPost = (props) => {
|
|
|
77
78
|
const [menuVisible, setMenuVisible] = useState(false);
|
|
78
79
|
const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });
|
|
79
80
|
const [menuItems, setMenuItems] = useState([]);
|
|
80
|
-
const [localShowWaitPanel, setLocalShowWaitPanel] = useState(false);
|
|
81
|
-
const [localWaitPanelTitle, setLocalWaitPanelTitle] = useState('');
|
|
82
|
-
const [localShowPrimary, setLocalShowPrimary] = useState(false);
|
|
83
|
-
const [localWaitPanelTextPrimary, setLocalWaitPanelTextPrimary] = useState('');
|
|
84
|
-
const [localWaitPanelValuePrimary, setLocalWaitPanelValuePrimary] = useState(0);
|
|
85
|
-
const [localWaitPanelMaxValuePrimary, setLocalWaitPanelMaxValuePrimary] = useState(0);
|
|
86
81
|
const handleFocusedItem = (item) => {
|
|
87
82
|
setFocusedAttachment(undefined);
|
|
88
83
|
setFocusedItem(item);
|
|
@@ -430,18 +425,22 @@ const TMBlogsPost = (props) => {
|
|
|
430
425
|
|| (context.engine === 'DossierEngine' && !context.object.id)) {
|
|
431
426
|
return Promise.resolve();
|
|
432
427
|
}
|
|
433
|
-
|
|
434
|
-
setLocalShowWaitPanel(true);
|
|
435
|
-
setLocalShowPrimary(true);
|
|
428
|
+
const operationTitle = del ? SDKUI_Localizator.Delete : SDKUI_Localizator.Restore;
|
|
436
429
|
localAbortController = new AbortController();
|
|
430
|
+
const panel = TMWaitPanelManager.show({
|
|
431
|
+
title: operationTitle,
|
|
432
|
+
max: 1,
|
|
433
|
+
showCounters: false,
|
|
434
|
+
cancelable: true,
|
|
435
|
+
onAbort: () => localAbortController.abort(),
|
|
436
|
+
});
|
|
437
437
|
let result = [];
|
|
438
438
|
let i = 0;
|
|
439
|
-
setLocalWaitPanelMaxValuePrimary(1);
|
|
440
439
|
if (localAbortController.signal.aborted) {
|
|
441
440
|
result.push({ rowIndex: i, id1: currentBlog.id, id2: currentBlog.id, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborate ${i}` });
|
|
442
441
|
}
|
|
443
442
|
else {
|
|
444
|
-
|
|
443
|
+
panel.setSubtitle(operationTitle);
|
|
445
444
|
if (context.engine === 'WorkingGroupEngine' && context.object.id) {
|
|
446
445
|
const workingGroupEngine = new WorkingGroupEngine(SDK_Globals.tmSession);
|
|
447
446
|
await workingGroupEngine.BlogPostDeleteOrUndeleteAsync(context.object.id, currentBlog.id, del)
|
|
@@ -479,10 +478,7 @@ const TMBlogsPost = (props) => {
|
|
|
479
478
|
});
|
|
480
479
|
}
|
|
481
480
|
}
|
|
482
|
-
|
|
483
|
-
setLocalWaitPanelMaxValuePrimary(0);
|
|
484
|
-
setLocalWaitPanelValuePrimary(0);
|
|
485
|
-
setLocalShowWaitPanel(false);
|
|
481
|
+
panel.close();
|
|
486
482
|
}
|
|
487
483
|
});
|
|
488
484
|
};
|
|
@@ -664,86 +660,86 @@ const TMBlogsPost = (props) => {
|
|
|
664
660
|
console.warn(`Unhandled object type: ${ref.objClass}`);
|
|
665
661
|
}
|
|
666
662
|
};
|
|
667
|
-
return _jsx("div", { ref: containerRef, style: { height: height, width: width }, children:
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
display: "flex",
|
|
697
|
-
flexDirection: "column",
|
|
698
|
-
alignItems: isOwnComment ? "flex-end" : "flex-start",
|
|
699
|
-
textAlign: "left",
|
|
700
|
-
maxWidth: '90%',
|
|
701
|
-
borderRadius: '8px',
|
|
702
|
-
}, children: children }) }), children: _jsxs("div", { id: `${id}-blogpost-${blogPost.id}`, onMouseEnter: () => handleMouseEnter(blogPost), onMouseLeave: handleMouseLeave, onClick: () => handleClick(blogPost), onDoubleClick: () => handleDoubleClick(blogPost), style: {
|
|
663
|
+
return _jsx("div", { ref: containerRef, style: { height: height, width: width }, children: _jsxs(TMLayoutContainer, { direction: 'vertical', children: [_jsx(TMBlogHeader, { isVisible: currentHeader !== undefined && !isHeaderHidden, layoutMode: layoutMode, height: layoutMode === 'extended' ? "40px" : "70px", width: "100%", allPosts: posts, postsToShow: postsToShow, onPostsToShowChange: handlePostsToShowChange, categoryIdDataSource: categoryIdDataSource, appliedCategoryIdFilters: appliedCategoryIdFilters, setAppliedCategoryIdFilters: setAppliedCategoryIdFilters, searchText: searchText, onSearchChange: handleSearchChange }), _jsxs("div", { id: `${id}-blogs-wrapper`, onContextMenu: onContextMenu, style: {
|
|
664
|
+
width: "100%",
|
|
665
|
+
height: currentHeader !== undefined && !isHeaderHidden ? `calc(100% - ${layoutMode === 'extended' ? "40px" : "70px"})` : "100%",
|
|
666
|
+
}, children: [blogPosts.length === 0 && _jsx(TMToppyMessage, { message: searchText.length > 0 ? SDKUI_Localizator.NoMessagesFound : SDKUI_Localizator.NoMessages }), blogPosts.length > 0 && _jsxs("div", { id: `${id}-blogs-container`, tabIndex: 0, onKeyDown: handleKeyDown, style: {
|
|
667
|
+
height: '100%',
|
|
668
|
+
width: '100%',
|
|
669
|
+
outline: "none",
|
|
670
|
+
display: "flex",
|
|
671
|
+
flexDirection: "column",
|
|
672
|
+
rowGap: "10px",
|
|
673
|
+
overflowY: "auto",
|
|
674
|
+
padding: "5px",
|
|
675
|
+
backgroundColor: displayMode === 'stacked' ? "#e0e0e0" : "#fff"
|
|
676
|
+
}, children: [blogPosts.map((blogPost) => {
|
|
677
|
+
const isSelected = selectedItem.some(item => item.id === blogPost.id);
|
|
678
|
+
const isFocused = focusedItem?.id === blogPost.id;
|
|
679
|
+
const isHomeBlogPost = Boolean(blogPost.header?.trim());
|
|
680
|
+
const isNew = Boolean(blogPost.newPosts ?? blogPost.customData1);
|
|
681
|
+
const isOwnComment = blogPost.ownerID === SDK_Globals.tmSession?.SessionDescr?.userID;
|
|
682
|
+
const isSys = blogPost.isSys === 1;
|
|
683
|
+
return _jsxs(React.Fragment, { children: [(firstUnreadPost && blogPost.id === firstUnreadPost.id) && (_jsxs("div", { style: { display: 'flex', alignItems: 'center', width: '100%', color: TMColors.primary, fontWeight: '600', fontSize: '0.9rem', userSelect: 'none', marginTop: "12px", marginBottom: "12px" }, children: [_jsx("hr", { style: { flex: 1, border: 'none', borderTop: `1px solid ${TMColors.primary}`, marginRight: '15px' } }), _jsx("span", { children: SDKUI_Localizator.LastRead }), _jsx("hr", { style: { flex: 1, border: 'none', borderTop: `1px solid ${TMColors.primary}`, marginLeft: '15px' } })] })), _jsx(TMConditionalWrapper, { condition: displayMode === "chat", wrapper: children => _jsx("div", { style: {
|
|
684
|
+
display: "flex",
|
|
685
|
+
flexDirection: "row",
|
|
686
|
+
alignItems: "flex-start",
|
|
687
|
+
padding: "2px",
|
|
688
|
+
borderRadius: "12px",
|
|
689
|
+
cursor: "default",
|
|
690
|
+
justifyContent: isOwnComment ? "flex-end" : "flex-start",
|
|
691
|
+
}, children: _jsx("div", { style: {
|
|
703
692
|
display: "flex",
|
|
704
693
|
flexDirection: "column",
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
694
|
+
alignItems: isOwnComment ? "flex-end" : "flex-start",
|
|
695
|
+
textAlign: "left",
|
|
696
|
+
maxWidth: '90%',
|
|
697
|
+
borderRadius: '8px',
|
|
698
|
+
}, children: children }) }), children: _jsxs("div", { id: `${id}-blogpost-${blogPost.id}`, onMouseEnter: () => handleMouseEnter(blogPost), onMouseLeave: handleMouseLeave, onClick: () => handleClick(blogPost), onDoubleClick: () => handleDoubleClick(blogPost), style: {
|
|
699
|
+
display: "flex",
|
|
700
|
+
flexDirection: "column",
|
|
701
|
+
width: "100%",
|
|
702
|
+
position: "relative",
|
|
703
|
+
backgroundColor: isSelected ? "#135596"
|
|
704
|
+
: displayMode === 'stacked' ? "#f9f9f9" : isOwnComment ? '#D9EFE0' : '#F3E6E6',
|
|
705
|
+
transition: "all 0.2s ease",
|
|
706
|
+
color: isSys ? "#ff0000" : isSelected ? "#ffffff" : TMColors.primary,
|
|
707
|
+
borderRadius: "5px",
|
|
708
|
+
padding: isHomeBlogPost ? '10px' : `10px ${isOwnComment ? '50px' : '10px'} 10px 10px`,
|
|
709
|
+
borderLeft: "5px solid transparent",
|
|
710
|
+
textDecoration: blogPost.isDel ? 'line-through' : 'none',
|
|
711
|
+
boxShadow: isFocused ? "0 4px 12px rgba(19, 85, 150, 0.6)" : "none",
|
|
712
|
+
cursor: 'pointer',
|
|
713
|
+
}, children: [_jsx(BlogPostTitle, { displayMode: displayMode, layoutMode: layoutMode, blogPost: blogPost, isSelected: isSelected, isOwnComment: isOwnComment, searchText: searchText, isSys: isSys, isHomeBlogPost: isHomeBlogPost, showId: localShowId, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, handleNavigateToCaseflows: handleNavigateToCaseflows }), isNew && _jsx(NewBadge, { layoutMode: layoutMode }), _jsx("div", { style: { fontSize: '1rem', color: "#000", marginTop: "10px", overflow: "hidden" }, children: _jsx(TMHtmlContentDisplay, { markup: blogPost.description ?? '-', searchText: searchText, isSelected: isSelected }) }), showExtendedAttachments && blogPost.attachments && blogPost.attachments.length > 0 && (_jsx(TMBlogAttachments, { attachments: blogPost.attachments, layoutMode: layoutMode, isSelected: isSelected, isLoading: !descriptorsLoaded, searchText: searchText, dcmtTypeDescriptors: dcmtTypeDescriptors, treeFs: treeFs, draftLatestInfoMap: draftLatestInfoMap, archivedDocumentMap: archivedDocumentMap, handleAttachmentFocus: handleFocusedAttachment, openDcmtForm: openDcmtForm }))] }, `${id}-blogpost-${blogPost.id}`) })] }, "blog-post-wrapper-" + id + "-" + blogPost.id);
|
|
714
|
+
}), _jsx("div", { ref: bottomRef })] }), _jsx(TMContextMenu, { items: menuItems, target: `#${id}-blogs-wrapper`, externalControl: {
|
|
715
|
+
visible: menuVisible,
|
|
716
|
+
position: menuPosition,
|
|
717
|
+
onClose: closeContextMenu,
|
|
718
|
+
} }), (showTaskForm && handleNavigateToWGs && handleNavigateToDossiers && getAllTasks && deleteTaskByIdsCallback && addTaskCallback && editTaskCallback) && _jsx("div", { style: { height: "100%", width: "100%" }, children: _jsx(TMTaskForm, { id: -1, title: SDKUI_Localizator.ContextualTask, isModal: true, width: taskModalSizes(deviceType, FormModes.Create).width, height: taskModalSizes(deviceType, FormModes.Create).height, formMode: FormModes.Create, visualizedTasks: [], currentTask: currentTask, setCurrentTask: () => { }, selectedRowKeys: [], handleFocusedRowKeyChange: () => { }, onStatusChanged: () => { }, onSaved: onSavedTaskFormCallback, onClose: () => closeTaskFormCallback(), onCancel: () => closeTaskFormCallback(), usersList: participants, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, isContextualCreate: true, taskContext: taskContext, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback }) }), (dcmtForm.dcmt && dcmtForm.dcmt.TID && dcmtForm.dcmt.DID) && _jsx(TMDcmtForm, { TID: Number(dcmtForm.dcmt.TID), DID: Number(dcmtForm.dcmt.DID), layoutMode: LayoutModes.Update, onClose: closeDcmtForm, isClosable: true, titleModal: SDKUI_Localizator.Attachment + ": " + dcmtForm.dcmt.fileName, isModal: true, widthModal: "95%", heightModal: "95%", allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, onReferenceClick: handleNavigateToReference, moreInfoTasks: getMoreInfoTasksForDocument(allTasks, Number(dcmtForm.dcmt.TID), Number(dcmtForm.dcmt.DID)) }), (showFloatingCommentButton && showCommentFormCallback && !(context?.engine === 'WorkingGroupEngine' && context?.object?.customData1 === 1)) && _jsx("button", { style: {
|
|
719
|
+
position: 'absolute',
|
|
720
|
+
bottom: '18px',
|
|
721
|
+
right: '20px',
|
|
722
|
+
width: '40px',
|
|
723
|
+
height: '40px',
|
|
724
|
+
borderRadius: "50%",
|
|
725
|
+
backgroundColor: "#C2388B",
|
|
726
|
+
color: '#fff',
|
|
727
|
+
border: 'none',
|
|
728
|
+
cursor: 'pointer',
|
|
729
|
+
boxShadow: '0 2px 6px rgba(0,0,0,0.2)',
|
|
730
|
+
zIndex: 1000,
|
|
731
|
+
transition: 'background-color 0.3s ease, transform 0.2s ease',
|
|
732
|
+
display: 'flex',
|
|
733
|
+
justifyContent: 'center',
|
|
734
|
+
alignItems: 'center',
|
|
735
|
+
}, onMouseEnter: (e) => {
|
|
736
|
+
e.currentTarget.style.backgroundColor = '#D94A9F';
|
|
737
|
+
e.currentTarget.style.transform = 'scale(1.1)';
|
|
738
|
+
e.currentTarget.style.boxShadow = '0 4px 12px rgba(37, 89, 165, 0.6)';
|
|
739
|
+
}, onMouseLeave: (e) => {
|
|
740
|
+
e.currentTarget.style.backgroundColor = "#C2388B";
|
|
741
|
+
e.currentTarget.style.transform = 'scale(1)';
|
|
742
|
+
e.currentTarget.style.boxShadow = '0 2px 6px rgba(0,0,0,0.2)';
|
|
743
|
+
}, onClick: () => { showCommentFormCallback(undefined); }, children: _jsx(TMTooltip, { content: SDKUI_Localizator.AddNewComment, children: _jsx("i", { className: "dx-icon-chat", style: { fontSize: '25px' } }) }) })] })] }) });
|
|
748
744
|
};
|
|
749
745
|
export default TMBlogsPost;
|
|
@@ -7,8 +7,10 @@ export { default as TMList } from './base/TMList';
|
|
|
7
7
|
export { default as TMModal } from './base/TMModal';
|
|
8
8
|
export * from './base/TMPopUp';
|
|
9
9
|
export * from './base/TMLayout';
|
|
10
|
+
export { default as TMLayoutContainer } from './base/TMLayout';
|
|
10
11
|
export * from './base/Styled';
|
|
11
12
|
export * from './base/TMWaitPanel';
|
|
13
|
+
export * from './base/waitPanel';
|
|
12
14
|
export * from './base/TMToolbarCard';
|
|
13
15
|
export * from './base/TMRightSidebar';
|
|
14
16
|
export * from './base/TMTreeView';
|
package/lib/components/index.js
CHANGED
|
@@ -8,8 +8,10 @@ export { default as TMList } from './base/TMList';
|
|
|
8
8
|
export { default as TMModal } from './base/TMModal';
|
|
9
9
|
export * from './base/TMPopUp';
|
|
10
10
|
export * from './base/TMLayout';
|
|
11
|
+
export { default as TMLayoutContainer } from './base/TMLayout';
|
|
11
12
|
export * from './base/Styled';
|
|
12
13
|
export * from './base/TMWaitPanel';
|
|
14
|
+
export * from './base/waitPanel';
|
|
13
15
|
export * from './base/TMToolbarCard';
|
|
14
16
|
export * from './base/TMRightSidebar';
|
|
15
17
|
export * from './base/TMTreeView';
|
|
@@ -14,9 +14,8 @@ import { FontSize, TMColors } from "../../utils/theme";
|
|
|
14
14
|
import selectionManagerImage from '../../assets/multipleSelectionManager.jpg';
|
|
15
15
|
import { DeviceType, useDeviceType } from "../base/TMDeviceProvider";
|
|
16
16
|
import { TMResultManager } from "../forms/TMResultDialog";
|
|
17
|
-
import
|
|
17
|
+
import TMWaitPanelManager from "../base/waitPanel/TMWaitPanelManager";
|
|
18
18
|
import TMToolbarCard from "../base/TMToolbarCard";
|
|
19
|
-
let abortController = new AbortController();
|
|
20
19
|
const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastRefreshTime, objType, listInsteadOfContent, detailInsteadOfContent, routePage, customButtons, customColumns, searchText, detailForm, detailTitlePathKeys, deps, onSelectionChanged, onCountersChanged }) => {
|
|
21
20
|
const deviceType = useDeviceType();
|
|
22
21
|
let gridInstance;
|
|
@@ -28,12 +27,6 @@ const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastR
|
|
|
28
27
|
const [selectedItems, setSelectedItems] = useState([]);
|
|
29
28
|
const [visibleItems, setVisibleItems] = useState([]);
|
|
30
29
|
const [formMode, setFormMode] = useState(FormModes.Update);
|
|
31
|
-
const [showWaitPanel, setShowWaitPanel] = useState(false);
|
|
32
|
-
const [waitPanelTitle, setWaitPanelTitle] = useState('');
|
|
33
|
-
const [showPrimary, setShowPrimary] = useState(false);
|
|
34
|
-
const [waitPanelTextPrimary, setWaitPanelTextPrimary] = useState('');
|
|
35
|
-
const [waitPanelValuePrimary, setWaitPanelValuePrimary] = useState(0);
|
|
36
|
-
const [waitPanelMaxValuePrimary, setWaitPanelMaxValuePrimary] = useState(0);
|
|
37
30
|
let objName = PlatformObjectService.getName(objClass, objType);
|
|
38
31
|
let objNames = PlatformObjectService.getName(objClass, objType, true);
|
|
39
32
|
useEffect(() => { gridInstance?.instance().searchByText(searchText ?? ''); }, [searchText]);
|
|
@@ -95,31 +88,36 @@ const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastR
|
|
|
95
88
|
break;
|
|
96
89
|
}
|
|
97
90
|
const doOperationAsync = async () => {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
91
|
+
const waitPanel = TMWaitPanelManager.show({
|
|
92
|
+
title: operationTitle,
|
|
93
|
+
max: selectedItems.length,
|
|
94
|
+
cancelable: true,
|
|
95
|
+
});
|
|
102
96
|
let result = [];
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
97
|
+
try {
|
|
98
|
+
for (let i = 0; i < selectedItems.length; i++) {
|
|
99
|
+
if (waitPanel.aborted) {
|
|
100
|
+
result.push({ rowIndex: i, id1: selectedItems[i].id, id2: 0, resultType: ResultTypes.WARNING, description: `Operazione interrotta. Elaborati ${i} lavori` });
|
|
101
|
+
waitPanel.warning();
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
waitPanel.setSubtitle(`Documento ${i + 1} di ${selectedItems.length}`);
|
|
105
|
+
try {
|
|
106
|
+
await PlatformObjectService.deleteAsync(objClass, selectedItems[i]?.id);
|
|
107
|
+
result.push({ rowIndex: i, id1: selectedItems[i].id, id2: 0, description: objType?.toString(), resultType: ResultTypes.SUCCESS });
|
|
108
|
+
waitPanel.ok();
|
|
109
|
+
}
|
|
110
|
+
catch (ex) {
|
|
111
|
+
result.push({ rowIndex: i, id1: selectedItems[i].id, id2: 0, resultType: ResultTypes.ERROR, description: getExceptionMessage(ex) });
|
|
112
|
+
waitPanel.error();
|
|
113
|
+
}
|
|
114
|
+
// Avanza a elaborazione conclusa: con un solo elemento la barra non parte dal 100%
|
|
115
|
+
await waitPanel.step();
|
|
117
116
|
}
|
|
118
117
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
setShowWaitPanel(false);
|
|
118
|
+
finally {
|
|
119
|
+
waitPanel.close();
|
|
120
|
+
}
|
|
123
121
|
TMResultManager.show(result, operationTitle, "JobID", undefined);
|
|
124
122
|
await loadDataAsync();
|
|
125
123
|
};
|
|
@@ -208,7 +206,7 @@ const TMPage = ({ id, objClass = ObjectClasses.None, listDisabled = false, lastR
|
|
|
208
206
|
});
|
|
209
207
|
};
|
|
210
208
|
const cellRenderObjectIcon = (data) => { return PlatformObjectService.getIcon(objClass, data.row.data); };
|
|
211
|
-
return (_jsx(
|
|
209
|
+
return (_jsx(TMLayoutContainer, { direction: 'vertical', children: _jsxs(TMSplitterLayout, { direction: "horizontal", showSeparator: showList && deviceType !== DeviceType.MOBILE, separatorSize: 10, separatorColor: 'transparent', separatorActiveColor: 'transparent', start: showList ? deviceType !== DeviceType.MOBILE ? ['30%', '70%'] : ['100%', '0%'] : ['0', '100%'], min: ['0px', '0px'], children: [listInsteadOfContent ??
|
|
212
210
|
_jsxs(TMToolbarCard, { title: objNames, children: [_jsx(ToolbarPage, {}), _jsxs(DataGrid, { disabled: selectionListDisabled, ref: (grid) => (gridInstance = grid), height: "calc(100% - 35px)", width: 'calc(100% - 5px)', dataSource: items, keyExpr: "id", allowColumnResizing: true, columnResizingMode: "widget", allowColumnReordering: true, showBorders: false, onContentReady: (e) => {
|
|
213
211
|
setVisibleItems(e.component.getVisibleRows().map((row) => { return row.data; }));
|
|
214
212
|
e.component.selectRows(selectedItems?.map((item) => item.id), false);
|
|
@@ -10,6 +10,7 @@ export declare class SDKUI_Localizator {
|
|
|
10
10
|
static get ActivityOverMultipleDays(): "Actividades durante los {{0}} días" | "Activities over the course of {{0}} days" | "Activités sur {{0}} jours" | "Aktivitäten in den letzten {{0}} Tagen" | "Atividades ao longo de {{0}} dias" | "Attività che svolge nell'arco di {{0}} giorni";
|
|
11
11
|
static get Abort(): "Abort" | "Arrêtez" | "Detener" | "Interrompi" | "Parar" | "Stoppen";
|
|
12
12
|
static get Abort_Confirm(): "Cancel processing?" | "Interrompere l'elaborazione?" | "Pare o processamento?" | "Stoppen Sie die Verarbeitung?" | "Voulez-vous interrompre l'operation?" | "¿Interrumpir la elaboración?";
|
|
13
|
+
static get Aborting(): "A parar..." | "Aborting..." | "Arrêt en cours..." | "Deteniendo..." | "Interruzione..." | "Wird gestoppt...";
|
|
13
14
|
static get About(): "About" | "Información" | "Informationen" | "Informations" | "Informazioni" | "Informações";
|
|
14
15
|
static get AccessToOtherApplications(): string;
|
|
15
16
|
static get Add(): "Add" | "Adicionar" | "Aggiungi" | "Ajoute" | "Añadir" | "Hinzufügen";
|
|
@@ -261,6 +262,8 @@ export declare class SDKUI_Localizator {
|
|
|
261
262
|
static get Dossiers(): "Akten" | "Dossiers" | "Expedientes" | "Pratiche" | "Pratiques" | "Práticas";
|
|
262
263
|
static get DossierType(): "Aktentyp" | "Dossier Type" | "Modello di Pratica" | "Tipo de Expediente" | "Tipo de Prática" | "Type de Pratique";
|
|
263
264
|
static get DownloadFile(): string;
|
|
265
|
+
static get DownloadInterrupted(): string;
|
|
266
|
+
static get DownloadInterruptedFiles(): string;
|
|
264
267
|
static get Download_in_Process(): "Descarga en curso" | "Download em progresso" | "Download in corso" | "Download in progress" | "Download läuft" | "Téléchargement en cours";
|
|
265
268
|
static get DownloadXMLAttachments(): string;
|
|
266
269
|
static get Draft(): string;
|
|
@@ -280,6 +283,7 @@ export declare class SDKUI_Localizator {
|
|
|
280
283
|
static get Edit_ConfirmFor1(): "Are you sure you want to modify '{{0}}'?" | "Möchten Sie '{{0}}' ändern?" | "Sei sicuro di voler modificare '{{0}}'?" | "Você tem certeza que deseja modificar '{{0}}'?" | "¿Estás seguro de que deseas modificar '{{0}}'?" | "Êtes-vous sûr de vouloir modifier '{{0}}'?";
|
|
281
284
|
static get Edit_ConfirmForN(): "{{0}} ausgewählte Objekte. Alle ändern?" | "{{0}} objetos seleccionados. ¿Modificar todos?" | "{{0}} objetos selecionados. Modificá-los todos?" | "{{0}} objets sélectionnés. Voulez-vous tous les modifier?" | "{{0}} oggetti selezionati. Modificare tutti?" | "{{0}} selected objects. Modify them all?";
|
|
282
285
|
static get EditorConfiguration(): string;
|
|
286
|
+
static get Elapsed(): "decorridos" | "elapsed" | "transcurridos" | "trascorsi" | "vergangen" | "écoulés";
|
|
283
287
|
static get ElectronicInvoice(): "Electronic invoice" | "Elektronische Rechnung" | "Factura electrónica" | "Facture électronique" | "Fattura elettronica" | "Fatura eletrônica";
|
|
284
288
|
static get ElectronicOrder(): "Commande électronique" | "Electronic order" | "Elektronische Bestellung" | "Orden electrónica" | "Ordine elettronico" | "Pedido eletrônico";
|
|
285
289
|
static get ElementNameConventionError(): string;
|
|
@@ -702,6 +706,8 @@ export declare class SDKUI_Localizator {
|
|
|
702
706
|
static get RelationsNotFound(): "Aucune corrélation trouvée" | "Keine Korrelationen gefunden" | "Nenhuma correlação encontrada" | "Nessuna correlazione trovata" | "No correlations found" | "No se encontraron correlaciones";
|
|
703
707
|
static get StopRelationsCalculation(): "Berechnung unterbrechen und die bereits berechneten Korrelationen anzeigen" | "Interromper o cálculo e mostrar as correlações já calculadas" | "Interrompi il calcolo e mostra le correlazioni già calcolate" | "Interrompre le calcul et afficher les corrélations déjà calculées" | "Interrumpir el cálculo y mostrar las correlaciones ya calculadas" | "Stop the calculation and show the already calculated correlations";
|
|
704
708
|
static get RelationsCalculationStopped(): "Berechnung der Korrelationen unterbrochen: Es werden nur die bereits berechneten Korrelationen angezeigt." | "Calcolo delle correlazioni interrotto: vengono mostrate solo le correlazioni già calcolate." | "Calcul des corrélations interrompu : seules les corrélations déjà calculées sont affichées." | "Correlations calculation stopped: only the already calculated correlations are shown." | "Cálculo das correlações interrompido: são mostradas apenas as correlações já calculadas." | "Cálculo de correlaciones interrumpido: solo se muestran las correlaciones ya calculadas.";
|
|
709
|
+
static get RelationsCalculationStoppedProgress(): "Berechnung unterbrochen: {{0}} von {{1}} Dokumenten verarbeitet." | "Calcolo interrotto: elaborati {{0}} documenti su {{1}}." | "Calcul interrompu : {{0}} sur {{1}} documents traités." | "Calculation stopped: {{0}} of {{1}} documents processed." | "Cálculo interrompido: {{0}} de {{1}} documentos processados." | "Cálculo interrumpido: {{0}} de {{1}} documentos procesados.";
|
|
710
|
+
static get RelationsCalculationStoppedEmpty(): "Berechnung unterbrochen: kein Dokument verarbeitet." | "Calcolo interrotto: nessun documento elaborato." | "Calcul interrompu : aucun document traité." | "Calculation stopped: no documents processed." | "Cálculo interrompido: nenhum documento processado." | "Cálculo interrumpido: ningún documento procesado.";
|
|
705
711
|
static get RelatedDcmtsNotFound(): "Aucun document associé n'a été trouvé pour le document sélectionné." | "Für das ausgewählte Dokument wurden keine zugehörigen Dokumente gefunden." | "Nenhum documento relacionado foi encontrado para o documento selecionado." | "No related documents were found for the selected document." | "No se encontraron documentos relacionados para el documento seleccionado." | "Non sono stati trovati documenti correlati per il documento selezionato.";
|
|
706
712
|
static get RelationManyToMany(): "Correlación muchos a muchos" | "Correlazione molti a molti" | "Corrélation plusieurs à plusieurs" | "Folge viele mit vielen" | "Muitos para muitos relação" | "Relation many to many";
|
|
707
713
|
static get RelationType(): "Art der Beziehung" | "Relation type" | "Tipo de relacionamento" | "Tipo de relación" | "Tipo di relazione" | "Type de relation";
|
|
@@ -728,6 +734,7 @@ export declare class SDKUI_Localizator {
|
|
|
728
734
|
static get ValueMustBeDateOrTime(): "Der Wert muss ein Datum oder eine Uhrzeit sein" | "El valor debe ser una fecha o una hora" | "Il valore deve essere una data o un orario" | "La valeur doit être une date ou une heure" | "O valor deve ser uma data ou hora" | "Value must be a date or time";
|
|
729
735
|
static get RequiredNOT(): "Nicht obligatorisch" | "No obligatorio" | "Non obbligatorio" | "Not mandatory" | "Não é obrigatório" | "Pas obligatoire";
|
|
730
736
|
static get Refresh(): "Actualizar" | "Aggiorna" | "Aktualisieren" | "Mis à jour" | "Refrescar" | "Refresh";
|
|
737
|
+
static get Remaining(): "remaining" | "restantes" | "restants" | "rimanenti" | "verbleibend";
|
|
731
738
|
static get Reminder(): "Erinnerung" | "Lembrete" | "Promemoria" | "Rappel" | "Recordatorio" | "Reminder";
|
|
732
739
|
static get ReminderSetForToday(): "Es gibt eine Erinnerung, die für heute eingestellt ist und bis zum Ablaufdatum gültig ist" | "Hay un recordatorio establecido para hoy, válido hasta la fecha de vencimiento" | "Há um lembrete definido para hoje, válido até à data de expiração" | "Il y a un rappel réglé pour aujourd'hui, valable jusqu'à la date d'échéance" | "There is a reminder set for today, valid until the expiration date" | "È presente un promemoria impostato per oggi, valido fino alla data di scadenza";
|
|
733
740
|
static get Remove(): "Entfernen" | "Quitar" | "Remove" | "Remover" | "Rimuovi" | "Supprime";
|
|
@@ -48,6 +48,16 @@ export class SDKUI_Localizator {
|
|
|
48
48
|
default: return "Interrompere l'elaborazione?";
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
static get Aborting() {
|
|
52
|
+
switch (this._cultureID) {
|
|
53
|
+
case CultureIDs.De_DE: return "Wird gestoppt...";
|
|
54
|
+
case CultureIDs.En_US: return "Aborting...";
|
|
55
|
+
case CultureIDs.Es_ES: return "Deteniendo...";
|
|
56
|
+
case CultureIDs.Fr_FR: return "Arrêt en cours...";
|
|
57
|
+
case CultureIDs.Pt_PT: return "A parar...";
|
|
58
|
+
default: return "Interruzione...";
|
|
59
|
+
}
|
|
60
|
+
}
|
|
51
61
|
static get About() {
|
|
52
62
|
switch (this._cultureID) {
|
|
53
63
|
case CultureIDs.De_DE: return "Informationen";
|
|
@@ -2559,6 +2569,26 @@ export class SDKUI_Localizator {
|
|
|
2559
2569
|
default: return "Download file";
|
|
2560
2570
|
}
|
|
2561
2571
|
}
|
|
2572
|
+
static get DownloadInterrupted() {
|
|
2573
|
+
switch (this._cultureID) {
|
|
2574
|
+
case CultureIDs.De_DE: return "Download abgebrochen";
|
|
2575
|
+
case CultureIDs.En_US: return "Download interrupted";
|
|
2576
|
+
case CultureIDs.Es_ES: return "Descarga interrumpida";
|
|
2577
|
+
case CultureIDs.Fr_FR: return "Téléchargement interrompu";
|
|
2578
|
+
case CultureIDs.Pt_PT: return "Download interrompido";
|
|
2579
|
+
default: return "Download interrotto";
|
|
2580
|
+
}
|
|
2581
|
+
}
|
|
2582
|
+
static get DownloadInterruptedFiles() {
|
|
2583
|
+
switch (this._cultureID) {
|
|
2584
|
+
case CultureIDs.De_DE: return "Download abgebrochen: {{0}} von {{1}} Dateien heruntergeladen";
|
|
2585
|
+
case CultureIDs.En_US: return "Download interrupted: {{0}} of {{1}} files downloaded";
|
|
2586
|
+
case CultureIDs.Es_ES: return "Descarga interrumpida: {{0}} de {{1}} archivos descargados";
|
|
2587
|
+
case CultureIDs.Fr_FR: return "Téléchargement interrompu : {{0}} fichiers sur {{1}} téléchargés";
|
|
2588
|
+
case CultureIDs.Pt_PT: return "Download interrompido: {{0}} de {{1}} arquivos baixados";
|
|
2589
|
+
default: return "Download interrotto: scaricati {{0}} file su {{1}}";
|
|
2590
|
+
}
|
|
2591
|
+
}
|
|
2562
2592
|
static get Download_in_Process() {
|
|
2563
2593
|
switch (this._cultureID) {
|
|
2564
2594
|
case CultureIDs.De_DE: return "Download läuft";
|
|
@@ -2755,6 +2785,16 @@ export class SDKUI_Localizator {
|
|
|
2755
2785
|
default: return "Configurazione Editor";
|
|
2756
2786
|
}
|
|
2757
2787
|
}
|
|
2788
|
+
static get Elapsed() {
|
|
2789
|
+
switch (this._cultureID) {
|
|
2790
|
+
case CultureIDs.De_DE: return "vergangen";
|
|
2791
|
+
case CultureIDs.En_US: return "elapsed";
|
|
2792
|
+
case CultureIDs.Es_ES: return "transcurridos";
|
|
2793
|
+
case CultureIDs.Fr_FR: return "écoulés";
|
|
2794
|
+
case CultureIDs.Pt_PT: return "decorridos";
|
|
2795
|
+
default: return "trascorsi";
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2758
2798
|
static get ElectronicInvoice() {
|
|
2759
2799
|
switch (this._cultureID) {
|
|
2760
2800
|
case CultureIDs.De_DE: return "Elektronische Rechnung";
|
|
@@ -6993,6 +7033,26 @@ export class SDKUI_Localizator {
|
|
|
6993
7033
|
default: return "Calcolo delle correlazioni interrotto: vengono mostrate solo le correlazioni già calcolate.";
|
|
6994
7034
|
}
|
|
6995
7035
|
}
|
|
7036
|
+
static get RelationsCalculationStoppedProgress() {
|
|
7037
|
+
switch (this._cultureID) {
|
|
7038
|
+
case CultureIDs.De_DE: return "Berechnung unterbrochen: {{0}} von {{1}} Dokumenten verarbeitet.";
|
|
7039
|
+
case CultureIDs.En_US: return "Calculation stopped: {{0}} of {{1}} documents processed.";
|
|
7040
|
+
case CultureIDs.Es_ES: return "Cálculo interrumpido: {{0}} de {{1}} documentos procesados.";
|
|
7041
|
+
case CultureIDs.Fr_FR: return "Calcul interrompu : {{0}} sur {{1}} documents traités.";
|
|
7042
|
+
case CultureIDs.Pt_PT: return "Cálculo interrompido: {{0}} de {{1}} documentos processados.";
|
|
7043
|
+
default: return "Calcolo interrotto: elaborati {{0}} documenti su {{1}}.";
|
|
7044
|
+
}
|
|
7045
|
+
}
|
|
7046
|
+
static get RelationsCalculationStoppedEmpty() {
|
|
7047
|
+
switch (this._cultureID) {
|
|
7048
|
+
case CultureIDs.De_DE: return "Berechnung unterbrochen: kein Dokument verarbeitet.";
|
|
7049
|
+
case CultureIDs.En_US: return "Calculation stopped: no documents processed.";
|
|
7050
|
+
case CultureIDs.Es_ES: return "Cálculo interrumpido: ningún documento procesado.";
|
|
7051
|
+
case CultureIDs.Fr_FR: return "Calcul interrompu : aucun document traité.";
|
|
7052
|
+
case CultureIDs.Pt_PT: return "Cálculo interrompido: nenhum documento processado.";
|
|
7053
|
+
default: return "Calcolo interrotto: nessun documento elaborato.";
|
|
7054
|
+
}
|
|
7055
|
+
}
|
|
6996
7056
|
static get RelatedDcmtsNotFound() {
|
|
6997
7057
|
switch (this._cultureID) {
|
|
6998
7058
|
case CultureIDs.De_DE: return "Für das ausgewählte Dokument wurden keine zugehörigen Dokumente gefunden.";
|
|
@@ -7259,6 +7319,16 @@ export class SDKUI_Localizator {
|
|
|
7259
7319
|
default: return "Aggiorna";
|
|
7260
7320
|
}
|
|
7261
7321
|
}
|
|
7322
|
+
static get Remaining() {
|
|
7323
|
+
switch (this._cultureID) {
|
|
7324
|
+
case CultureIDs.De_DE: return "verbleibend";
|
|
7325
|
+
case CultureIDs.En_US: return "remaining";
|
|
7326
|
+
case CultureIDs.Es_ES: return "restantes";
|
|
7327
|
+
case CultureIDs.Fr_FR: return "restants";
|
|
7328
|
+
case CultureIDs.Pt_PT: return "restantes";
|
|
7329
|
+
default: return "rimanenti";
|
|
7330
|
+
}
|
|
7331
|
+
}
|
|
7262
7332
|
static get Reminder() {
|
|
7263
7333
|
switch (this._cultureID) {
|
|
7264
7334
|
case CultureIDs.De_DE: return "Erinnerung";
|
|
@@ -19,7 +19,7 @@ export interface ZipCreateOptions {
|
|
|
19
19
|
encryptionStrength?: 1 | 2 | 3;
|
|
20
20
|
/** Commento globale ZIP */
|
|
21
21
|
comment?: string;
|
|
22
|
-
/** Callback progresso: (
|
|
22
|
+
/** Callback progresso, invocata a voce conclusa: (voci completate, totale, nomeFile appena aggiunto) */
|
|
23
23
|
onProgress?: (index: number, total: number, filename: string) => void;
|
|
24
24
|
/** Callback progresso singolo file: (bytesElaborati, bytesTotali) */
|
|
25
25
|
onEntryProgress?: (progress: number, total: number) => void;
|
package/lib/helper/ZipManager.js
CHANGED
|
@@ -50,7 +50,6 @@ export class ZipManager {
|
|
|
50
50
|
throw new DOMException("Operazione annullata", "AbortError");
|
|
51
51
|
}
|
|
52
52
|
const file = files[i];
|
|
53
|
-
onProgress?.(i + 1, total, file.filename);
|
|
54
53
|
const reader = this.createReader(file.data, { BlobReader, TextReader, Uint8ArrayReader });
|
|
55
54
|
await zipWriter.add(file.filename, reader, {
|
|
56
55
|
comment: file.comment,
|
|
@@ -60,6 +59,8 @@ export class ZipManager {
|
|
|
60
59
|
encryptionStrength,
|
|
61
60
|
onprogress: onEntryProgress ? (progress, total) => onEntryProgress(progress, total) : undefined
|
|
62
61
|
});
|
|
62
|
+
// A voce conclusa, non prima: con un solo file la barra partirebbe gia' al 100%.
|
|
63
|
+
onProgress?.(i + 1, total, file.filename);
|
|
63
64
|
}
|
|
64
65
|
const commentBytes = comment ? new TextEncoder().encode(comment) : undefined;
|
|
65
66
|
return await zipWriter.close(commentBytes);
|
|
@@ -20,11 +20,5 @@ export interface UseCheckInOutOperationsReturn {
|
|
|
20
20
|
copyCheckoutPathToClipboardCallback: (dcmt: DcmtInfo, filename: string) => void;
|
|
21
21
|
handleCheckOutCallback: (dcmt: DcmtInfo, checkout: boolean, filename: string, downloadDcmtsAsync: (params: DownloadDcmtsAsyncParams) => Promise<void>, onRefreshAsync?: (tid: number | undefined, did: number | undefined, refreshUI?: boolean, metadataResult?: SearchResultDescriptor | null) => Promise<void>) => Promise<void>;
|
|
22
22
|
handleCheckInCallback: (dcmt: DcmtInfo, checkoutDate?: string | null, onRefreshAsync?: (tid: number | undefined, did: number | undefined, refreshUI?: boolean, metadataResult?: SearchResultDescriptor | null) => Promise<void>) => Promise<void>;
|
|
23
|
-
showCicoWaitPanel: boolean;
|
|
24
|
-
cicoWaitPanelTitle: string;
|
|
25
|
-
showCicoPrimaryProgress: boolean;
|
|
26
|
-
cicoPrimaryProgressText: string;
|
|
27
|
-
cicoPrimaryProgressValue: number;
|
|
28
|
-
cicoPrimaryProgressMax: number;
|
|
29
23
|
}
|
|
30
24
|
export declare const useCheckInOutOperations: (props: UseCheckInOutOperationsProps) => UseCheckInOutOperationsReturn;
|