@topconsultnpm/sdkui-react-beta 6.13.23 → 6.13.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/features/archive/TMArchive.js +22 -14
- package/lib/components/features/documents/TMBatchUpdateForm.js +4 -5
- package/lib/components/features/documents/TMDcmtForm.d.ts +2 -2
- package/lib/components/features/documents/TMDcmtForm.js +76 -53
- package/lib/components/features/documents/TMDcmtPreview.js +7 -8
- package/lib/components/features/documents/TMFileUploader.js +2 -2
- package/lib/components/features/documents/TMMasterDetailDcmts.js +26 -18
- package/lib/components/features/search/TMSearch.js +85 -156
- package/lib/components/features/search/TMSearchResult.js +63 -41
- package/lib/components/grids/TMRecentsManager.js +1 -1
- package/lib/components/sidebar/TMCommandsPanel.d.ts +16 -0
- package/lib/components/sidebar/TMCommandsPanel.js +25 -0
- package/package.json +2 -2
- package/lib/assets/Designer-bianco.svg +0 -21
- package/lib/assets/Designer-blu.svg +0 -21
- package/lib/assets/Orchestrator-bianco.svg +0 -72
- package/lib/assets/Orchestrator-blu.svg +0 -25
- package/lib/assets/Surfer-bianco.svg +0 -19
- package/lib/assets/Surfer-blu.svg +0 -19
@@ -10,7 +10,7 @@ import TMDcmtForm from '../documents/TMDcmtForm';
|
|
10
10
|
import { StyledToppyTextContainer, StyledToppyText } from '../search/TMSearchQueryPanel';
|
11
11
|
import TMTreeSelector from '../search/TMTreeSelector';
|
12
12
|
import TMPanel from '../../base/TMPanel';
|
13
|
-
import
|
13
|
+
import TMCommandsPanel from '../../sidebar/TMCommandsPanel';
|
14
14
|
const TMArchive = ({ inputTID }) => {
|
15
15
|
const TIDs = SDKUI_Globals.userSettings.archivingSettings.mruTIDs;
|
16
16
|
const [currentTID, setCurrentTID] = useState(0);
|
@@ -39,20 +39,28 @@ const TMArchive = ({ inputTID }) => {
|
|
39
39
|
}, [deviceType, currentTID, showRecentsPanel]);
|
40
40
|
let customSidebarItems = useMemo(() => {
|
41
41
|
return ([
|
42
|
-
{ icon: _jsx(IconTree, {}),
|
43
|
-
{ icon: _jsx(IconProgressReady, {}),
|
42
|
+
{ icon: _jsx(IconTree, {}), selected: showTreesPanel, onClick: () => { setShowTreesPanel(!showTreesPanel); } },
|
43
|
+
{ icon: _jsx(IconProgressReady, {}), selected: showRecentsPanel, onClick: () => { setShowRecentsPanel(!showRecentsPanel); } }
|
44
44
|
]);
|
45
45
|
}, [showTreesPanel, showRecentsPanel]);
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
46
|
+
const isMobile = deviceType === DeviceType.MOBILE;
|
47
|
+
return (_jsxs("div", { style: {
|
48
|
+
display: 'flex',
|
49
|
+
flexDirection: isMobile ? 'column' : 'row',
|
50
|
+
justifyContent: 'space-between',
|
51
|
+
gap: SDKUI_Globals.userSettings.themeSettings.gutters,
|
52
|
+
width: '100%',
|
53
|
+
height: '100%',
|
54
|
+
}, children: [_jsx("div", { style: { flex: 1, minWidth: 0, height: '100%' }, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, showSeparator: deviceType !== DeviceType.MOBILE && showTreesPanel, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: getPrimarySplitterStartValues(), children: [showTreesPanel ? _jsx(TMLayoutItem, { children: deviceType !== DeviceType.MOBILE && _jsx(TMTreeSelector, { onClose: () => setShowTreesPanel(false), layoutMode: LayoutModes.Ark, onSelectedTIDChanged: (tid) => { setSearchByTID(tid); } }) }) : _jsx(_Fragment, {}), _jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, direction: 'horizontal', overflow: 'visible', showSeparator: deviceType !== DeviceType.MOBILE && showRecentsPanel, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: getSecondarySplitterStartValues(), children: [showRecentsPanel ? _jsx(TMLayoutItem, { children: _jsx(TMPanel, { title: 'Recenti', onClose: () => setShowRecentsPanel(false), totalItems: mruTIDs.length, children: _jsx(TMRecentsManager, { mruTIDs: mruTIDs, deviceType: deviceType, onSelectedTID: (tid) => setCurrentTID(tid), onDeletedTID: (tid) => {
|
55
|
+
let newMruTIDS = mruTIDs.slice();
|
56
|
+
let index = newMruTIDS.findIndex(o => o == tid);
|
57
|
+
if (index >= 0)
|
58
|
+
newMruTIDS.splice(index, 1);
|
59
|
+
SDKUI_Globals.userSettings.archivingSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
60
|
+
setMruTIDs(newMruTIDS);
|
61
|
+
} }) }) }) : _jsx(_Fragment, {}), _jsx(TMLayoutItem, { children: currentTID ?
|
62
|
+
_jsx(TMDcmtForm, { TID: currentTID, DID: undefined, layoutMode: LayoutModes.Ark, customRightSidebarItems: customSidebarItems, showPreview: deviceType !== DeviceType.MOBILE, onClose: deviceType === DeviceType.MOBILE ? () => setCurrentTID(undefined) : undefined, onSaveRecents: (TIDs) => setMruTIDs(TIDs) })
|
63
|
+
:
|
64
|
+
_jsx(TMPanel, { title: 'Archiviazione', children: _jsxs(TMLayoutContainer, { gap: 30, alignItems: 'center', justifyContent: 'center', children: [_jsxs(TMLayoutItem, { width: 'max-content', height: 'max-content', children: [" ", _jsxs(StyledToppyTextContainer, { children: [" ", _jsxs(StyledToppyText, { children: [" ", 'Selezionare un tipo documento', " "] }), " "] }), " "] }), _jsxs(TMLayoutItem, { width: 'max-content', height: 'max-content', children: [" ", _jsx("img", { src: Logo, width: 120, alt: '' }), " "] })] }) }) })] }) })] }) }), !currentTID ? _jsx(TMCommandsPanel, { isMobile: isMobile, items: customSidebarItems }) : _jsx(_Fragment, {})] }));
|
57
65
|
};
|
58
66
|
export default TMArchive;
|
@@ -4,20 +4,19 @@ import { AccessLevels, DcmtTypeListCacheService, LayoutModes, MetadataDataDomain
|
|
4
4
|
import { searchResultToMetadataValues, getSystemMetadata, calcIsModified, getListMaxItems, SDKUI_Localizator, SDKUI_Globals } from '../../../helper';
|
5
5
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
6
6
|
import { DcmtOperationTypes, FormModes } from '../../../ts';
|
7
|
-
import { TMColors } from '../../../utils/theme';
|
8
7
|
import { StyledToolbarCardContainer, StyledFormButtonsContainer } from '../../base/Styled';
|
9
8
|
import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
|
10
9
|
import { TMSplitterLayout } from '../../base/TMLayout';
|
11
10
|
import { TMExceptionBoxManager } from '../../base/TMPopUp';
|
12
11
|
import TMShowAllOrMaxItemsButton from '../../base/TMShowAllOrMaxItemsButton';
|
13
12
|
import TMSpinner from '../../base/TMSpinner';
|
14
|
-
import TMToolbarCard from '../../base/TMToolbarCard';
|
15
13
|
import { TMLayoutWaitingContainer } from '../../base/TMWaitPanel';
|
16
14
|
import TMDistinctValues from '../../choosers/TMDistinctValues';
|
17
15
|
import TMFormulaEditor, { FormulaDescriptor, FormulaHelper, FormulaTargets } from '../../editors/TMFormulaEditor';
|
18
16
|
import { useMetadataEditableList } from '../../editors/TMMetadataEditor';
|
19
17
|
import TMMetadataValues, { ShowCheckBoxesMode, AdvancedMenuButtons } from '../../editors/TMMetadataValues';
|
20
18
|
import { TMSaveFormButtonSave, TMSaveFormButtonUndo } from '../../forms/TMSaveForm';
|
19
|
+
import TMPanel from '../../base/TMPanel';
|
21
20
|
const TMBatchUpdateForm = ({ inputDcmts, TID, DID, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, onSavedCallbackAsync, onBack, onStatusChanged }) => {
|
22
21
|
const [metadataValues, setMetadataValues] = useState([]);
|
23
22
|
const [metadataValuesOrig, setMetadataValuesOrig] = useState([]);
|
@@ -113,7 +112,7 @@ const TMBatchUpdateForm = ({ inputDcmts, TID, DID, isExpertMode = SDKUI_Globals.
|
|
113
112
|
const totalItems = metadataValues.filter(o => o.mid && o.mid > 100).length;
|
114
113
|
const metadataValuesSource = metadataValues.filter(o => o.mid && o.mid > 100).slice(0, showAll ? metadataValues.filter(o => o.mid && o.mid > 100).length : listMaxItems);
|
115
114
|
const metadataValuesSourceOrig = metadataValuesOrig.filter(o => o.mid && o.mid > 100).slice(0, showAll ? metadataValuesOrig.filter(o => o.mid && o.mid > 100).length : listMaxItems);
|
116
|
-
return (_jsx(TMLayoutWaitingContainer, { showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { separatorSize:
|
115
|
+
return (_jsx(TMLayoutWaitingContainer, { showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', showSeparator: showFormulaEditor, start: showFormulaEditor ? ['50%', '50%'] : ['100%', '0%'], min: ['0', '0'], children: [_jsx(TMPanel, { title: `${SDKUI_Localizator.BatchUpdate} (${inputDcmts.length} documenti selezionati)`, onBack: deviceType === DeviceType.MOBILE ? onBack : undefined, onClose: deviceType !== DeviceType.MOBILE ? onBack : undefined, children: _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, isExpertMode: isExpertMode, showCheckBoxes: ShowCheckBoxesMode.Always, showNullValueCheckBoxes: true, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, validationItems: validationItems, isOpenDistinctValues: showDistinctValuesPanel, selectedMID: focusedMetadataValue?.mid, onFocusedItemChanged: (item) => { setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
|
117
116
|
setMetadataValues((prevItems) => prevItems.map((item) => {
|
118
117
|
const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
|
119
118
|
return newItem ? { ...item, ...newItem } : item;
|
@@ -128,12 +127,12 @@ const TMBatchUpdateForm = ({ inputDcmts, TID, DID, isExpertMode = SDKUI_Globals.
|
|
128
127
|
break;
|
129
128
|
}
|
130
129
|
} }), _jsxs(StyledFormButtonsContainer, { children: [_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 10 }, children: _jsxs("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: [_jsx(TMSaveFormButtonSave, { showTooltip: false, btnStyle: 'advanced', advancedColor: '#f09c0a', isModified: errors.length <= 0 && isModified, formMode: FormModes.Update, errorsCount: errors.length, onSaveAsync: onSavedAsync }), _jsx(TMSaveFormButtonUndo, { btnStyle: 'toolbar', showTooltip: true, color: 'primary', isModified: isModified, formMode: FormModes.Update, onUndo: onUndoHandler })] }) }), totalItems > listMaxItems && _jsx(TMShowAllOrMaxItemsButton, { showAll: showAll, dataSourceLength: totalItems, onClick: () => { setShowAll(!showAll); } })] })] }) }), showDistinctValuesPanel && focusedMetadataValue &&
|
131
|
-
_jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, separator: ', ', allowAppendMode: false, onClosePanelCallback: () => setShowDistinctValuesPanel(false), onSelectionChanged: (e) => {
|
130
|
+
_jsx(TMDistinctValues, { isModal: true, tid: TID, mid: focusedMetadataValue?.mid, separator: ', ', allowAppendMode: false, onClosePanelCallback: () => setShowDistinctValuesPanel(false), onSelectionChanged: (e) => {
|
132
131
|
if (!e)
|
133
132
|
return;
|
134
133
|
setMetadataValues((prevItems) => prevItems.map((item) => item.tid == e.tid && item.mid === e.mid ? { ...item, value: e.newValue, isSelected: true } : item));
|
135
134
|
} }), showFormulaEditor && focusedMetadataValue &&
|
136
|
-
_jsx(
|
135
|
+
_jsx(TMPanel, { title: SDKUI_Localizator.FormulaEditorTitle + (focusedMetadataValue?.md?.nameLoc ? ` (${focusedMetadataValue?.md?.nameLoc})` : ''), onClose: () => setShowFormulaEditor(false), children: _jsx(TMFormulaEditor, { isModal: false, formMode: FormModes.Update, inputData: getFormula(), showBack: false, onClose: () => setShowFormulaEditor(false), onApplied: (newFormula) => {
|
137
136
|
setMetadataValues((prevItems) => prevItems.map((item) => item.tid == newFormula.tid && item.mid === newFormula.mid ? { ...item, value: FormulaHelper.addFormulaTag(newFormula.expression), isSelected: true, isEditable: true } : item));
|
138
137
|
setFocusedMetadataValue(prevState => ({
|
139
138
|
...prevState,
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { LayoutModes } from '@topconsultnpm/sdk-ts-beta';
|
3
3
|
import { FormModes } from '../../../ts';
|
4
|
-
import {
|
4
|
+
import { TMCommandItemProps } from '../../sidebar/TMCommandsPanel';
|
5
5
|
interface ITMDcmtFormProps {
|
6
6
|
TID?: number;
|
7
7
|
DID?: number;
|
@@ -14,7 +14,7 @@ interface ITMDcmtFormProps {
|
|
14
14
|
showPreview?: boolean;
|
15
15
|
showBoard?: boolean;
|
16
16
|
showSysMetadata?: boolean;
|
17
|
-
customRightSidebarItems?:
|
17
|
+
customRightSidebarItems?: TMCommandItemProps[];
|
18
18
|
showDcmtFormSidebar?: boolean;
|
19
19
|
isExpertMode?: boolean;
|
20
20
|
count?: number;
|
@@ -18,7 +18,6 @@ import TMButton from '../../base/TMButton';
|
|
18
18
|
import { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
|
19
19
|
import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames } from '../../base/TMPopUp';
|
20
20
|
import TMSpinner from '../../base/TMSpinner';
|
21
|
-
import TMToolbarCard from '../../base/TMToolbarCard';
|
22
21
|
import { TMLayoutWaitingContainer } from '../../base/TMWaitPanel';
|
23
22
|
import TMDistinctValues from '../../choosers/TMDistinctValues';
|
24
23
|
import TMFormulaEditor, { FormulaDescriptor, FormulaHelper, FormulaTargets } from '../../editors/TMFormulaEditor';
|
@@ -30,6 +29,8 @@ import TMMasterDetailDcmts from './TMMasterDetailDcmts';
|
|
30
29
|
import TMDcmtBlog from './TMDcmtBlog';
|
31
30
|
import { useInputAttachmentsDialog } from '../../../hooks/useInputDialog';
|
32
31
|
import TMModal from '../../base/TMModal';
|
32
|
+
import TMPanel from '../../base/TMPanel';
|
33
|
+
import TMCommandsPanel from '../../sidebar/TMCommandsPanel';
|
33
34
|
let abortControllerLocal = new AbortController();
|
34
35
|
//#endregion
|
35
36
|
const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes.Update, onClose, onSavedAsyncCallback, TID, DID, formMode = FormModes.Update, canNext, canPrev, count, itemIndex, onNext, onPrev, customRightSidebarItems = [], allowNavigation = true, allowRelations = true, isClosable = false, isExpertMode = SDKUI_Globals.userSettings.advancedSettings.expertMode === 1, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false, onClosePreview, titleModal, isModal = false, widthModal = "100%", heightModal = "100%" }) => {
|
@@ -142,18 +143,6 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
142
143
|
}
|
143
144
|
return _jsx(IconShow, {});
|
144
145
|
}, [layoutMode, fileIsNotValid]);
|
145
|
-
const sideBarItems = useMemo(() => {
|
146
|
-
let fixedItems = [
|
147
|
-
{ icon: fileManagerIcon, id: 'Preview', visibleName: (layoutMode === LayoutModes.Ark && fileIsNotValid) ? SDKUI_Localizator.RequiredField : layoutMode === LayoutModes.Ark ? SDKUI_Localizator.UploadFile : 'Anteprima', isActive: isOpenPreview, onClick: () => { setIsOpenPreview(!isOpenPreview); }, disabled: layoutMode === LayoutModes.Ark && fromDTD?.archiveConstraint === ArchiveConstraints.OnlyMetadata },
|
148
|
-
{ icon: _jsx(IconBoard, {}), id: 'Board', visibleName: 'Bacheca', disabled: layoutMode !== LayoutModes.Update, beginGroup: true, isActive: isOpenBoard, visible: layoutMode !== LayoutModes.Ark, onClick: () => { closeMiddlePanel(); setIsOpenBoard(!isOpenBoard); } },
|
149
|
-
{ icon: _jsx(IconDcmtTypeSys, {}), id: 'SystemMetadata', visibleName: 'Metadati di sistema', disabled: layoutMode !== LayoutModes.Update, isActive: isOpenSysMetadata, visible: layoutMode !== LayoutModes.Ark, onClick: () => { closeMiddlePanel(); setIsOpenSysMetadata(!isOpenSysMetadata); } },
|
150
|
-
{ icon: _jsx(IconDetailDcmts, { fontSize: 20, transform: 'scale(-1, 1)' }), id: 'Master', beginGroup: true, visible: layoutMode !== LayoutModes.Ark && allowRelations && currentTIDHasMasterRelations, visibleName: SDKUI_Localizator.DcmtsMaster, disabled: layoutMode !== LayoutModes.Update || !DID, isActive: isOpenMaster, onClick: () => { setIsOpenMaster(!isOpenMaster); } },
|
151
|
-
{ icon: _jsx(IconDetailDcmts, { fontSize: 20 }), id: 'Details', visibleName: SDKUI_Localizator.DcmtsDetail, disabled: layoutMode !== LayoutModes.Update || !DID, isActive: isOpenDetails, visible: layoutMode !== LayoutModes.Ark && allowRelations && currentTIDHasDetailRelations, onClick: () => { setIsOpenDetails(!isOpenDetails); } },
|
152
|
-
];
|
153
|
-
return customRightSidebarItems.length === 0
|
154
|
-
? fixedItems
|
155
|
-
: [...fixedItems.filter(item => item.id !== 'DistinctValues'), ...customRightSidebarItems, ...fixedItems.filter(item => item.id === 'DistinctValues')];
|
156
|
-
}, [customRightSidebarItems, layoutMode, isOpenPreview, focusedMetadataValue, fromDTD?.archiveConstraint]);
|
157
146
|
const closeMiddlePanel = () => {
|
158
147
|
setIsOpenBoard(false);
|
159
148
|
setIsOpenSysMetadata(false);
|
@@ -449,50 +438,84 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
449
438
|
fd.tid = TID;
|
450
439
|
return fd;
|
451
440
|
};
|
441
|
+
const isPreviewDisabled = layoutMode === LayoutModes.Ark && fromDTD?.archiveConstraint === ArchiveConstraints.OnlyMetadata;
|
442
|
+
const isBoardDisabled = layoutMode !== LayoutModes.Update;
|
443
|
+
const isSysMetadataDisabled = layoutMode !== LayoutModes.Update;
|
444
|
+
const isDetailsDisabled = layoutMode !== LayoutModes.Update || !DID;
|
445
|
+
const isMasterDisabled = layoutMode !== LayoutModes.Update || !DID;
|
452
446
|
const renderDcmtForm = () => {
|
453
|
-
return (_jsxs(
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
447
|
+
return (_jsxs("div", { style: {
|
448
|
+
display: 'flex',
|
449
|
+
flexDirection: deviceType === DeviceType.MOBILE ? 'column' : 'row',
|
450
|
+
justifyContent: 'space-between',
|
451
|
+
gap: SDKUI_Globals.userSettings.themeSettings.gutters,
|
452
|
+
width: '100%',
|
453
|
+
height: '100%',
|
454
|
+
}, children: [_jsx("div", { style: { flex: 1, minWidth: 0, height: '100%' }, children: _jsxs(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: useWaitPanelLocalState ? showWaitPanelLocal : showWaitPanel, showWaitPanelPrimary: useWaitPanelLocalState ? showPrimaryLocal : showPrimary, showWaitPanelSecondary: useWaitPanelLocalState ? showSecondaryLocal : showSecondary, waitPanelTitle: useWaitPanelLocalState ? waitPanelTitleLocal : waitPanelTitle, waitPanelTextPrimary: useWaitPanelLocalState ? waitPanelTextPrimaryLocal : waitPanelTextPrimary, waitPanelValuePrimary: useWaitPanelLocalState ? waitPanelValuePrimaryLocal : waitPanelValuePrimary, waitPanelMaxValuePrimary: useWaitPanelLocalState ? waitPanelMaxValuePrimaryLocal : waitPanelMaxValuePrimary, waitPanelTextSecondary: useWaitPanelLocalState ? waitPanelTextSecondaryLocal : waitPanelTextSecondary, waitPanelValueSecondary: useWaitPanelLocalState ? waitPanelValueSecondaryLocal : waitPanelValueSecondary, waitPanelMaxValueSecondary: useWaitPanelLocalState ? waitPanelMaxValueSecondaryLocal : waitPanelMaxValueSecondary, isCancelable: useWaitPanelLocalState ? dcmtFile ? dcmtFile.size >= 1000000 : false : true, abortController: useWaitPanelLocalState ? abortControllerLocal : abortController, children: [_jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', showSeparator: (isOpenPreview || isOpenMiddlePanel()) && deviceType !== DeviceType.MOBILE && isOpenDcmtForm, start: getPrimarySplitterStartLayout(), min: deviceType !== DeviceType.MOBILE && isOpenDcmtForm ? ['150px', '0'] : ['0', '0'], children: [_jsx(TMLayoutItem, { children: _jsx(TMPanel, { showHeader: showHeader, title: fromDTD?.nameLoc, toolbar: allowNavigation ? formToolbar : _jsx(_Fragment, {}), onBack: isClosable ? undefined : handleClose, onClose: isClosable ? handleClose : undefined, children: metadataValuesSource.length > 0 && _jsxs(StyledToolbarCardContainer, { children: [_jsx(TMMetadataValues, { TID: TID, metadataValues: metadataValuesSource, metadataValuesOrig: metadataValuesSourceOrig, isExpertMode: isExpertMode, isOpenDistinctValues: isOpenDistinctValues, openChooserBySingleClick: !isOpenDistinctValues, selectedMID: focusedMetadataValue?.mid, layoutMode: layoutMode, deviceType: deviceType, validationItems: validationItems, onFocusedItemChanged: (item) => { (item?.mid !== focusedMetadataValue?.mid) && setFocusedMetadataValue(item); }, onValueChanged: (newItems) => {
|
455
|
+
setFormData((prevItems) => prevItems.map((item) => {
|
456
|
+
const newItem = newItems.find((newItem) => newItem.tid === item.tid && newItem.mid === item.mid);
|
457
|
+
return newItem ? { ...item, ...newItem } : item;
|
458
|
+
}));
|
459
|
+
}, onAdvancedMenuClick: (e) => {
|
460
|
+
switch (e.button) {
|
461
|
+
case AdvancedMenuButtons.DistinctValues:
|
462
|
+
setIsOpenDistinctValues(!isOpenDistinctValues);
|
463
|
+
break;
|
464
|
+
case AdvancedMenuButtons.FormulaEditor:
|
465
|
+
setIsOpenFormulaEditor(!isOpenFormulaEditor);
|
466
|
+
break;
|
467
|
+
}
|
468
|
+
} }), _jsxs(StyledFormButtonsContainer, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 10 }, children: [fromDTD?.templateTID === TemplateTIDs.WF_WIApprView && _jsx(WorkFlowOperationButtons, { onApprove: () => setShowApprovePopup(true), onReject: () => setShowRejectPopup(true), onReAssign: () => setShowReAssignPopup(true), isInDcmtForm: true }), _jsx("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: layoutMode === LayoutModes.Update ? _jsxs(_Fragment, { children: [_jsx(TMSaveFormButtonSave, { showTooltip: false, btnStyle: 'advanced', advancedColor: '#f09c0a', isModified: isModified, formMode: formMode, errorsCount: validationItems.filter(o => o.ResultType == ResultTypes.ERROR).length, onSaveAsync: confirmActionPopup }), _jsx(TMSaveFormButtonUndo, { btnStyle: 'toolbar', showTooltip: true, color: 'primary', isModified: isModified, formMode: formMode, onUndo: onUndoHandler })] }) :
|
469
|
+
_jsxs(_Fragment, { children: [_jsx(TMButton, { disabled: archiveBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconBoxArchiveIn, {}), showTooltip: false, caption: 'Archivia', advancedColor: TMColors.success, onClick: confirmActionPopup }), _jsx(TMButton, { disabled: !clearFormBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconClear, {}), showTooltip: false, caption: 'Pulisci', advancedColor: TMColors.tertiary, onClick: clearFormHandler }), DID && _jsx(TMButton, { disabled: undoBtnDisabled, btnStyle: 'advanced', icon: _jsx(IconUndo, {}), width: '150px', showTooltip: false, caption: 'Annulla modifiche', advancedColor: TMColors.tertiary, onClick: onUndoHandler })] }) })] }), totalItems > listMaxItems && _jsx(TMShowAllOrMaxItemsButton, { showAll: showAll, dataSourceLength: totalItems, onClick: () => { setShowAll(!showAll); } })] }), showApprovePopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, TID: TID, DID: DID, op: 0, onClose: () => setShowApprovePopup(false) }), showRejectPopup && _jsx(WorkFlowApproveRejectPopUp, { deviceType: deviceType, TID: TID, DID: DID, op: 1, onClose: () => setShowRejectPopup(false) }), showReAssignPopup && _jsx(WorkFlowReAssignPopUp, { deviceType: deviceType, TID: TID, DID: DID, onClose: () => setShowReAssignPopup(false) }), _jsx(ConfirmAttachmentsDialog, {})] }) }) }), isOpenPreview || isOpenMiddlePanel() ?
|
470
|
+
_jsx(TMLayoutItem, { children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, showSeparator: deviceType !== DeviceType.MOBILE && (isOpenPreview && isOpenMiddlePanel()), start: getSecondarySplitterStartLayout(), min: ['0', '0'], separatorColor: 'transparent', children: [isOpenMiddlePanel()
|
471
|
+
? _jsx(TMLayoutItem, { children: _jsx(TMPanel, { showHeader: !(isOpenDetails && layoutMode === LayoutModes.Update), color: TMColors.primaryColor, backgroundColor: `${TMColors.primaryColor}25`, title: titleText(), toolbar: middlePanelToolbar, onClose: () => { closeMiddlePanel(); }, children: _jsx(StyledToolbarCardContainer, { children: _jsx(StyledSectionContainer, { children: _jsxs(StyledSidebarItemsContentContainer, { children: [isOpenBoard && layoutMode === LayoutModes.Update &&
|
472
|
+
_jsx(TMDcmtBlog, { tid: TID, did: DID }), isOpenSysMetadata && layoutMode === LayoutModes.Update &&
|
473
|
+
_jsx(TMMetadataValues, { layoutMode: layoutMode, openChooserBySingleClick: !isOpenDistinctValues, TID: TID, isReadOnly: true, deviceType: deviceType, metadataValues: formData.filter(o => (o.mid != undefined && o.mid <= 100)), metadataValuesOrig: formData.filter(o => (o.mid != undefined && o.mid <= 100)), validationItems: [] }), isOpenFormulaEditor &&
|
474
|
+
_jsx(TMFormulaEditor, { isModal: false, formMode: FormModes.Update, inputData: getFormula(), showBack: false, onClose: () => setIsOpenFormulaEditor(false), onApplied: (newFormula) => {
|
475
|
+
setFormData((prevItems) => prevItems.map((item) => item.tid == newFormula.tid && item.mid === newFormula.mid ? { ...item, value: FormulaHelper.addFormulaTag(newFormula.expression), isSelected: true, isEditable: true } : item));
|
476
|
+
setFocusedMetadataValue(prevState => ({
|
477
|
+
...prevState,
|
478
|
+
isSelected: true,
|
479
|
+
isEditable: true,
|
480
|
+
value: FormulaHelper.addFormulaTag(newFormula.expression)
|
481
|
+
}));
|
482
|
+
} })] }) }) }) }) })
|
483
|
+
: _jsx(_Fragment, {}), isOpenPreview
|
484
|
+
? _jsxs(TMLayoutItem, { children: [layoutMode === LayoutModes.Update ?
|
485
|
+
_jsx(TMDcmtPreview, { onClose: () => { setIsOpenPreview(false); onClosePreview?.(); }, dcmtData: currentDcmt, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev }) :
|
486
|
+
_jsx(TMFileUploader, { onFileUpload: (file) => setDcmtFile(file), onClose: () => setIsOpenPreview(false), isRequired: fromDTD?.archiveConstraint === ArchiveConstraints.ContentCompulsory && dcmtFile === null, defaultBlob: dcmtFile, deviceType: deviceType }), " "] })
|
487
|
+
: _jsx(_Fragment, {})] }) }) : _jsx(_Fragment, {})] }), isOpenDistinctValues &&
|
488
|
+
_jsx(TMDistinctValues, { tid: TID, mid: focusedMetadataValue?.mid, isModal: true, showHeader: false, layoutMode: layoutMode, onSelectionChanged: (e) => {
|
489
|
+
if (!e)
|
490
|
+
return;
|
491
|
+
setFormData((prevItems) => prevItems.map((item) => item.tid == e.tid && item.mid === e.mid ? { ...item, value: e.newValue } : item));
|
492
|
+
} }), (isModal && onClose) && _jsx("div", { id: "TMDcmtFormShowConfirmForClose-" + id })] }) }), showDcmtFormSidebar && _jsx(TMCommandsPanel, { isMobile: deviceType === DeviceType.MOBILE, items: [
|
493
|
+
...(layoutMode === LayoutModes.Ark ? [
|
494
|
+
{ icon: _jsx(IconRoundFileUpload, { fontSize: 20 }), selected: isOpenPreview, disabled: isPreviewDisabled, onClick: () => { if (!isPreviewDisabled)
|
495
|
+
setIsOpenPreview(!isOpenPreview); } }
|
496
|
+
] : []),
|
497
|
+
...(layoutMode !== LayoutModes.Ark ? [
|
498
|
+
{ icon: _jsx(IconShow, { fontSize: 20 }), selected: isOpenPreview, disabled: isPreviewDisabled, onClick: () => { if (!isPreviewDisabled)
|
499
|
+
setIsOpenPreview(!isOpenPreview); } },
|
500
|
+
{ icon: _jsx(IconBoard, { fontSize: 20 }), selected: isOpenBoard, disabled: isBoardDisabled, onClick: () => { if (!isBoardDisabled) {
|
501
|
+
closeMiddlePanel();
|
502
|
+
setIsOpenBoard(!isOpenBoard);
|
503
|
+
} } },
|
504
|
+
{ icon: _jsx(IconDcmtTypeSys, { fontSize: 20 }), selected: isOpenSysMetadata, disabled: isSysMetadataDisabled, onClick: () => { if (!isSysMetadataDisabled) {
|
505
|
+
closeMiddlePanel();
|
506
|
+
setIsOpenSysMetadata(!isOpenSysMetadata);
|
507
|
+
} } },
|
508
|
+
] : []),
|
509
|
+
...(currentTIDHasMasterRelations ? [{ icon: _jsx(IconDetailDcmts, { fontSize: 20 }), selected: isOpenMaster, disabled: isMasterDisabled, onClick: () => { if (!isMasterDisabled)
|
510
|
+
setIsOpenMaster(!isOpenMaster); } }] : []),
|
511
|
+
...(currentTIDHasDetailRelations ? [{ icon: _jsx(IconDetailDcmts, { fontSize: 20, transform: 'scale(-1, 1)' }), selected: isOpenDetails, disabled: isDetailsDisabled, onClick: () => { if (!isDetailsDisabled)
|
512
|
+
setIsOpenDetails(!isOpenDetails); } }] : []),
|
513
|
+
...customRightSidebarItems
|
514
|
+
] }), isOpenDetails &&
|
492
515
|
_jsx(StyledModalContainer, { style: { backgroundColor: 'white' }, children: _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenDetails(false) }) }), isOpenMaster &&
|
493
516
|
_jsxs(StyledModalContainer, { style: { backgroundColor: 'white' }, children: [_jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: allowNavigation, canNext: canNext, canPrev: canPrev, onNext: onNext, onPrev: onPrev, onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
|
494
517
|
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 }) }, `${index}-${dcmt.DID}`));
|
495
|
-
})] })
|
518
|
+
})] })] }));
|
496
519
|
};
|
497
520
|
const handleClose = () => {
|
498
521
|
if (!isModified) {
|
@@ -9,13 +9,12 @@ import { TMColors } from '../../../utils/theme';
|
|
9
9
|
import ShowAlert from '../../base/TMAlert';
|
10
10
|
import TMButton from '../../base/TMButton';
|
11
11
|
import TMDropDownMenu from '../../base/TMDropDownMenu';
|
12
|
-
import { TMLayoutItem } from '../../base/TMLayout';
|
13
12
|
import { TMExceptionBoxManager } from '../../base/TMPopUp';
|
14
|
-
import TMToolbarCard from '../../base/TMToolbarCard';
|
15
13
|
import TMTooltip from '../../base/TMTooltip';
|
16
14
|
import { TMLayoutWaitingContainer } from '../../base/TMWaitPanel';
|
17
15
|
import { TMSaveFormButtonPrevious, TMSaveFormButtonNext } from '../../forms/TMSaveForm';
|
18
16
|
import { StyledAnimatedComponentOpacity } from '../../base/Styled';
|
17
|
+
import TMPanel from '../../base/TMPanel';
|
19
18
|
const TMDcmtPreview = ({ dcmtData, onClose, canNext, canPrev, onNext, onPrev }) => {
|
20
19
|
const [dcmtBlob, setDcmtBlob] = useState(undefined);
|
21
20
|
const [showPreview, setShowPreview] = useState(false);
|
@@ -86,12 +85,12 @@ const TMDcmtPreview = ({ dcmtData, onClose, canNext, canPrev, onNext, onPrev })
|
|
86
85
|
}
|
87
86
|
return title;
|
88
87
|
};
|
89
|
-
return (_jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsx(
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
88
|
+
return (_jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, showWaitPanelSecondary: showSecondary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, waitPanelTextSecondary: waitPanelTextSecondary, waitPanelValueSecondary: waitPanelValueSecondary, waitPanelMaxValueSecondary: waitPanelMaxValueSecondary, isCancelable: true, abortController: abortController, children: _jsx(TMPanel, { padding: '0', title: titleHandler(), toolbar: _jsxs("div", { style: { width: 'max-content', display: 'flex', alignItems: 'center', gap: '10px' }, children: [_jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', isModified: false, formMode: FormModes.ReadOnly, canPrev: canPrev, onPrev: onPrev }), _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', isModified: false, formMode: FormModes.ReadOnly, canNext: canNext, onNext: onNext }), _jsx(StyledHeaderIcon, { "$color": TMColors.primaryColor, children: _jsx(TMDropDownMenu, { backgroundColor: 'white', borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'icon', caption: 'Altro', icon: _jsx(IconMenuVertical, {}), showTooltip: false }), items: [
|
89
|
+
{ icon: _jsx(IconCloseCircle, {}), text: "Rimuovi elemento dalla cache", onClick: () => { removeDcmtsFileCache(cacheKey); setIsFromCache(false); } },
|
90
|
+
{ icon: _jsx(IconClear, {}), text: "Cancella la cache", onClick: () => { clearDcmtsFileCache(); setIsFromCache(false); } },
|
91
|
+
] }, "btn13") }), _jsx(StyledHeaderIcon, { onClick: onClose, "$color": TMColors.primaryColor, children: _jsx(TMTooltip, { content: SDKUI_Localizator.Close, children: _jsx(IconCloseOutline, {}) }) })] }), children: error
|
92
|
+
? _jsx(TMNothingToShow, { icon: _jsx(IconCloseOutline, { fontSize: 92, color: TMColors.error }), text: error })
|
93
|
+
: renderedPreview(dcmtData?.tid, dcmtData?.did, dcmtData?.fileExt, dcmtData?.fileSize, dcmtData?.fileCount, extensionHandler(dcmtData?.fileExt), showPreview, () => { loadDocumentWithCache(); setShowPreview(true); }, dcmtBlob) }) }));
|
95
94
|
};
|
96
95
|
export default TMDcmtPreview;
|
97
96
|
export const TMFileViewer = ({ fileBlob }) => {
|
@@ -7,9 +7,9 @@ import { FileExtensionHandler } from '../../../ts';
|
|
7
7
|
import { TMColors } from '../../../utils/theme';
|
8
8
|
import TMButton from '../../base/TMButton';
|
9
9
|
import { DeviceType } from '../../base/TMDeviceProvider';
|
10
|
-
import TMToolbarCard from '../../base/TMToolbarCard';
|
11
10
|
import TMTooltip from '../../base/TMTooltip';
|
12
11
|
import { TMFileViewer, StyledHeaderIcon } from './TMDcmtPreview';
|
12
|
+
import TMPanel from '../../base/TMPanel';
|
13
13
|
const TMFileUploader = ({ deviceType = DeviceType.DESKTOP, onClose, onFileUpload, isRequired = false, defaultBlob = null }) => {
|
14
14
|
const [dragOver, setDragOver] = useState(false);
|
15
15
|
const [uploadedFile, setUploadedFile] = useState(defaultBlob);
|
@@ -73,7 +73,7 @@ const TMFileUploader = ({ deviceType = DeviceType.DESKTOP, onClose, onFileUpload
|
|
73
73
|
_jsx("div", { style: { display: 'flex', gap: 10, width: '100%', height: '100%' }, children: _jsxs(UploadContainer, { ref: uploaderRef, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, style: { backgroundColor: dragOver ? '#76b1e6' : 'white' }, onDoubleClick: browseHandler, "$isRequired": isRequired, children: [_jsx("div", { style: { display: 'flex', gap: '10px', flexDirection: 'column', position: 'absolute', right: 5, top: 5 }, children: _jsx(TMButton, { btnStyle: 'icon', caption: 'Sfoglia', color: isRequired && !uploadedFile ? 'error' : 'primary', onClick: browseHandler, icon: _jsx(IconFolderOpen, { fontSize: 22 }) }) }), _jsx("p", { style: { fontSize: '1.2rem', fontWeight: 'bold' }, children: deviceType === DeviceType.MOBILE ? 'Clicca per sfogliare il tuo file' : 'Trascina il tuo file qui o fai doppio click per sfogliarlo' }), isRequired && _jsxs("p", { style: { fontWeight: 'bold' }, children: [" ", SDKUI_Localizator.RequiredField, " "] })] }) }) :
|
74
74
|
_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 10, width: '100%', height: '100%' }, children: [_jsxs("div", { style: { backgroundColor: 'white', padding: '5px 10px', borderRadius: 8, display: 'flex', alignItems: 'center', justifyContent: 'space-between', color: TMColors.primaryColor }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 5 }, children: [_jsx("p", { children: "File name:" }), _jsxs("div", { style: { fontWeight: 'bold' }, children: [fileName, " ", _jsxs("span", { children: [" ", ` (${formatBytes(fileSize)})`, " "] })] })] }), uploadedFile && _jsx(TMButton, { btnStyle: 'icon', color: 'error', caption: 'Pulisci', onClick: clearFile, icon: _jsx(IconClear, { fontSize: 22 }) })] }), extensionHandler(fileExt) === FileExtensionHandler.READY_TO_SHOW ? _jsx(TMFileViewer, { fileBlob: uploadedFile }) :
|
75
75
|
_jsx("div", { style: { backgroundColor: '#f6dbdb', padding: '5px 10px', borderRadius: 8, display: 'flex', alignItems: 'center', justifyContent: 'space-between', color: TMColors.error }, children: _jsxs("div", { children: [" ", 'Anteprima non disponibile.', fileExt && _jsx("b", { children: ` (*.${fileExt})` })] }) })] });
|
76
|
-
return (_jsx(
|
76
|
+
return (_jsx(TMPanel, { title: 'Caricamento File', onBack: deviceType === DeviceType.MOBILE ? () => onClose?.() : undefined, toolbar: deviceType !== DeviceType.MOBILE ? _jsx(StyledHeaderIcon, { onClick: onClose, "$color": 'white', children: _jsx(TMTooltip, { content: SDKUI_Localizator.Close, children: _jsx(IconCloseOutline, {}) }) }) : undefined, children: _jsxs("div", { style: { width: '100%', height: '100%', padding: '2px', display: 'flex', flexDirection: 'column', gap: 10 }, children: [_jsx(HiddenInput, { id: "fileInput", type: "file", onChange: handleInputChange }), content] }) }));
|
77
77
|
};
|
78
78
|
const UploadContainer = styled.div `
|
79
79
|
position: relative;
|
@@ -5,7 +5,7 @@ import { ContextMenu } from 'devextreme-react';
|
|
5
5
|
import { TMNothingToShow } from './TMDcmtPreview';
|
6
6
|
import TMDcmtForm from './TMDcmtForm';
|
7
7
|
import TMSearchResult from '../search/TMSearchResult';
|
8
|
-
import { genUniqueId, getExceptionMessage, IconFolder, IconShow, IconPreview, IconBoard, IconDcmtTypeSys, IconCheckFile, IconDetailDcmts, SDKUI_Localizator, svgToString, IconMail, IconDcmtTypeOnlyMetadata, IconCopy, IconMultipleSelection, IconMenuVertical } from '../../../helper';
|
8
|
+
import { genUniqueId, getExceptionMessage, IconFolder, IconShow, IconPreview, IconBoard, IconDcmtTypeSys, IconCheckFile, IconDetailDcmts, SDKUI_Localizator, svgToString, IconMail, IconDcmtTypeOnlyMetadata, IconCopy, IconMultipleSelection, IconMenuVertical, SDKUI_Globals } from '../../../helper';
|
9
9
|
import { hasDetailRelations } from '../../../helper/dcmtsHelper';
|
10
10
|
import { FormModes, SearchResultContext } from '../../../ts';
|
11
11
|
import { TMColors } from '../../../utils/theme';
|
@@ -16,7 +16,6 @@ import { DeviceType } from '../../base/TMDeviceProvider';
|
|
16
16
|
import { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
|
17
17
|
import { TMExceptionBoxManager } from '../../base/TMPopUp';
|
18
18
|
import TMSpinner from '../../base/TMSpinner';
|
19
|
-
import TMToolbarCard from '../../base/TMToolbarCard';
|
20
19
|
import { TMLayoutWaitingContainer } from '../../base/TMWaitPanel';
|
21
20
|
import { TMUserIdViewer } from '../../choosers/TMUserChooser';
|
22
21
|
import { TMResultManager } from '../../forms/TMResultDialog';
|
@@ -25,6 +24,8 @@ import TMDataListItemViewer from '../../viewers/TMDataListItemViewer';
|
|
25
24
|
import { TMDcmtTypeTooltip } from '../../viewers/TMTidViewer';
|
26
25
|
import TMTreeView from '../../base/TMTreeView';
|
27
26
|
import TMDcmtIcon from './TMDcmtIcon';
|
27
|
+
import TMPanel from '../../base/TMPanel';
|
28
|
+
import TMCommandsPanel from '../../sidebar/TMCommandsPanel';
|
28
29
|
let abortController = new AbortController();
|
29
30
|
const TMMasterDetailDcmts = ({ deviceType, inputDcmts, isForMaster, showCurrentDcmtIndicator = true, allowNavigation, canNext, canPrev, onNext, onPrev, onBack, appendMasterDcmts, onTaskCreateRequest }) => {
|
30
31
|
const [id, setID] = useState('');
|
@@ -287,14 +288,6 @@ const TMMasterDetailDcmts = ({ deviceType, inputDcmts, isForMaster, showCurrentD
|
|
287
288
|
const handleSelectedItemsChanged = useCallback((items) => {
|
288
289
|
setSelectedItems(items);
|
289
290
|
}, []);
|
290
|
-
const sideBarItems = [
|
291
|
-
{ icon: _jsx(IconShow, {}), id: 'Preview', visibleName: 'Anteprima', isActive: showPreview, onClick: () => { setShowPreview(!showPreview); } },
|
292
|
-
{ icon: _jsx(IconPreview, {}), id: 'DcmtForm', visibleName: 'Form', isActive: showDcmtForm, onClick: () => { setShowDcmtForm(!showDcmtForm); } },
|
293
|
-
{ icon: _jsx(IconBoard, {}), id: 'Board', visibleName: 'Bacheca', beginGroup: true, isActive: showBoard, onClick: () => { setShowSysMetadata(false); setShowBoard(!showBoard); } },
|
294
|
-
{ icon: _jsx(IconDcmtTypeSys, {}), id: 'SystemMetadata', visibleName: 'Metadati di sistema', isActive: showSysMetadata, onClick: () => { setShowBoard(false); setShowSysMetadata(!showSysMetadata); } },
|
295
|
-
{ icon: _jsx(IconCheckFile, {}), id: 'allowZeroRelations', visibleName: 'Consenti dettagli con 0 documenti', beginGroup: true, isActive: showZeroDcmts, onClick: () => { setShowZeroDcmts(!showZeroDcmts); } },
|
296
|
-
{ icon: _jsx(IconDetailDcmts, { fontSize: 20, transform: 'scale(-1, 1)' }), id: 'Master', beginGroup: true, visible: isForMaster, disabled: !focusedItem?.isDcmt, visibleName: SDKUI_Localizator.DcmtsMaster, onClick: () => { appendMasterDcmts?.(focusedItem?.tid, focusedItem?.did); } }
|
297
|
-
];
|
298
291
|
const commandsMenuItems = [
|
299
292
|
{
|
300
293
|
icon: svgToString(_jsx(IconMail, {})),
|
@@ -386,14 +379,29 @@ const TMMasterDetailDcmts = ({ deviceType, inputDcmts, isForMaster, showCurrentD
|
|
386
379
|
];
|
387
380
|
const toolbar = _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '10px' }, children: [allowMultipleSelection && _jsx("p", { style: { color: TMColors.colorHeader, textAlign: 'center', padding: '1px 4px', borderRadius: '3px', display: 'flex' }, children: `${selectedItems.length} selezionati` }), _jsx(TMButton, { btnStyle: 'icon', caption: 'Selezione multipla', icon: _jsx(IconMultipleSelection, { fontSize: 16, color: allowMultipleSelection ? TMColors.tertiary : 'white' }), onClick: () => setAllowMultipleSelection(!allowMultipleSelection) }), allowNavigation && canPrev != undefined && _jsx(TMSaveFormButtonPrevious, { btnStyle: 'icon', iconColor: 'white', isModified: false, formMode: FormModes.ReadOnly, canPrev: canPrev, onPrev: onPrev }), allowNavigation && canNext != undefined && _jsx(TMSaveFormButtonNext, { btnStyle: 'icon', iconColor: 'white', isModified: false, formMode: FormModes.ReadOnly, canNext: canNext, onNext: onNext }), _jsx(IconMenuVertical, { id: `commands-detail-${id}`, color: 'white', cursor: 'pointer' }), _jsx(ContextMenu, { showEvent: 'click', dataSource: commandsMenuItems, target: `#commands-detail-${id}` })] });
|
388
381
|
const getTitle = () => isForMaster ? `${SDKUI_Localizator.DcmtsMaster} - ${dtdMaster?.nameLoc}` : SDKUI_Localizator.DcmtsDetail;
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
382
|
+
const isMobile = deviceType === DeviceType.MOBILE;
|
383
|
+
return (_jsxs("div", { style: {
|
384
|
+
display: 'flex',
|
385
|
+
flexDirection: isMobile ? 'column' : 'row',
|
386
|
+
justifyContent: 'space-between',
|
387
|
+
gap: SDKUI_Globals.userSettings.themeSettings.gutters,
|
388
|
+
width: '100%',
|
389
|
+
height: '100%',
|
390
|
+
}, children: [_jsx("div", { style: { flex: 1, minWidth: 0, height: '100%' }, children: _jsx(TMLayoutWaitingContainer, { direction: 'vertical', showWaitPanel: showWaitPanel, showWaitPanelPrimary: showPrimary, waitPanelTitle: waitPanelTitle, waitPanelTextPrimary: waitPanelTextPrimary, waitPanelValuePrimary: waitPanelValuePrimary, waitPanelMaxValuePrimary: waitPanelMaxValuePrimary, isCancelable: true, abortController: abortController, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', overflow: 'visible', separatorSize: SDKUI_Globals.userSettings.themeSettings.gutters, separatorColor: 'transparent', showSeparator: focusedItem != undefined, separatorActiveColor: 'transparent', min: ['0', '0'], start: focusedItem && (showDcmtForm || showPreview || showBoard || showSysMetadata) ? deviceType != DeviceType.MOBILE ? ["40%", "60%"] : ["0%", "100%"] : ["100%", "0%"], children: [_jsx(TMPanel, { title: getTitle(), toolbar: toolbar, onBack: onBack, children: isLoading ? _jsx(_Fragment, {}) :
|
391
|
+
data.length <= 0
|
392
|
+
?
|
393
|
+
_jsx(TMNothingToShow, { text: getTitle(), secondText: SDKUI_Localizator.NoDataToDisplay, icon: isForMaster ? _jsx(IconDetailDcmts, { fontSize: 96, transform: 'scale(-1, 1)' }) : _jsx(IconDetailDcmts, { fontSize: 96 }) })
|
394
|
+
:
|
395
|
+
_jsx(TMTreeView, { dataSource: data, allowMultipleSelection: allowMultipleSelection, calculateItemsForNode: calculateItemsForNode, itemRender: renderItem, focusedItem: focusedItem, selectedItems: selectedItems, onFocusedItemChanged: handleFocusedItemChanged, onSelectionChanged: handleSelectedItemsChanged, onDataChanged: (items) => setData(updateHiddenProperty(items)) }) }), _jsx(TMLayoutItem, { children: focusedItem?.isDcmt ?
|
396
|
+
_jsx(TMDcmtForm, { TID: focusedItem?.tid, DID: focusedItem.did, isClosable: deviceType !== DeviceType.MOBILE, allowNavigation: false, allowRelations: deviceType !== DeviceType.MOBILE, showDcmtFormSidebar: deviceType === DeviceType.MOBILE, showPreview: showPreview, showBoard: showBoard, showSysMetadata: showSysMetadata, showDcmtForm: showDcmtForm, onClose: () => { setShowDcmtForm(false); }, onClosePreview: () => { setShowPreview(false); } }) :
|
397
|
+
_jsx(TMSearchResult, { context: SearchResultContext.METADATA_SEARCH, searchResults: focusedItem?.searchResult ?? [], showSearchResultSidebar: false, onClose: () => { setShowDcmtForm(false); }, onClosePreview: () => { setShowPreview(false); }, onTaskCreateRequest: onTaskCreateRequest }) })] }, "TMDetails-panel") }) }), _jsx(TMCommandsPanel, { isMobile: isMobile, items: [
|
398
|
+
{ icon: _jsx(IconShow, { fontSize: 20 }), selected: showPreview, onClick: () => { setShowPreview(!showPreview); } },
|
399
|
+
{ icon: _jsx(IconPreview, { fontSize: 20 }), selected: showDcmtForm, onClick: () => { setShowDcmtForm(!showDcmtForm); } },
|
400
|
+
{ icon: _jsx(IconBoard, { fontSize: 20 }), selected: showBoard, onClick: () => { setShowSysMetadata(false); setShowBoard(!showBoard); } },
|
401
|
+
{ icon: _jsx(IconDcmtTypeSys, { fontSize: 20 }), selected: showSysMetadata, onClick: () => { setShowBoard(false); setShowSysMetadata(!showSysMetadata); } },
|
402
|
+
{ icon: _jsx(IconCheckFile, { fontSize: 20 }), selected: showZeroDcmts, onClick: () => { setShowZeroDcmts(!showZeroDcmts); } },
|
403
|
+
{ icon: _jsx(IconDetailDcmts, { fontSize: 20, transform: 'scale(-1, 1)' }), disabled: !focusedItem?.isDcmt, onClick: () => { appendMasterDcmts?.(focusedItem?.tid, focusedItem?.did); } }
|
404
|
+
] })] }));
|
397
405
|
};
|
398
406
|
export default TMMasterDetailDcmts;
|
399
407
|
function getMetadataKeys(obj) {
|