@topconsultnpm/sdkui-react-beta 6.12.102 → 6.12.104
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/TMDataGrid.js +2 -2
- package/lib/components/base/TMFileManager.js +5 -11
- package/lib/components/base/TMFileManagerThumbnailItems.d.ts +2 -0
- package/lib/components/base/TMFileManagerThumbnailItems.js +2 -1
- package/lib/components/features/archive/TMArchive.js +4 -4
- package/lib/components/features/documents/TMDcmtForm.js +4 -4
- package/lib/components/features/documents/TMDcmtPreview.js +2 -2
- package/lib/components/features/search/TMSearch.js +5 -5
- package/lib/components/features/search/TMSearchResult.js +2 -2
- package/lib/components/features/search/TMTreeSelector.js +7 -9
- package/lib/components/forms/Login/SelectBox.js +1 -1
- package/lib/components/forms/Login/TMLoginForm.js +11 -1
- package/lib/components/forms/Login/TextBox.js +1 -1
- package/lib/components/forms/TMChooserForm.js +2 -2
- package/lib/components/forms/TMResultDialog.js +1 -1
- package/lib/components/grids/TMBlogs.js +2 -2
- package/lib/components/pages/TMPage.js +1 -1
- package/lib/components/settings/SettingsAppearance.js +33 -31
- package/lib/helper/SDKUI_Globals.d.ts +39 -13
- package/lib/helper/SDKUI_Globals.js +104 -6
- package/lib/hooks/useDcmtOperations.js +2 -2
- package/lib/services/platform_services.d.ts +1 -1
- package/package.json +1 -1
@@ -18,9 +18,9 @@ const TMDataGrid = React.forwardRef((props, ref) => {
|
|
18
18
|
// custom options
|
19
19
|
dataColumns = [], pageSize = TMDataGridPageSize.Large, showHeaderFilter = true, showFilterPanel = false, showLoadPanel = true, showSearchPanel = true, searchPanelToolbarPosition = 'before', counterConfig = { show: false, items: new Map() },
|
20
20
|
// events and callbacks
|
21
|
-
onSelectionChanged, onFocusedRowChanged, onRowDblClick, onRowClick, onCellClick, onOptionChanged, onContentReady, onContextMenuPreparing, onInitialized, onEditorPreparing, onCellPrepared, onRowPrepared, onRowUpdating, onRowExpanded, onRowCollapsed, onRowUpdated, onSaved, onEditCanceled, onEditingStart, onEditingChange, customizeColumns, scrolling = { mode: 'standard', useNative: SDKUI_Globals.
|
21
|
+
onSelectionChanged, onFocusedRowChanged, onRowDblClick, onRowClick, onCellClick, onOptionChanged, onContentReady, onContextMenuPreparing, onInitialized, onEditorPreparing, onCellPrepared, onRowPrepared, onRowUpdating, onRowExpanded, onRowCollapsed, onRowUpdated, onSaved, onEditCanceled, onEditingStart, onEditingChange, customizeColumns, scrolling = { mode: 'standard', useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 }, paging = { enabled: true, pageSize: pageSize }, pager = { visible: true, showInfo: true, showNavigationButtons: true }, selection = { mode: 'multiple', showCheckBoxesMode: "always", selectAllMode: "allPages" }, sorting, summary, stateStoring, columnChooser, grouping, groupPanel, filterRow, headerFilter, editing, rowDragging, masterDetail,
|
22
22
|
// other properties
|
23
|
-
disabled = false, autoNavigateToFocusedRow = true, columnResizingMode = 'widget', columnHidingEnabled = true, columnAutoWidth = true, allowColumnResizing = true, allowColumnReordering = true, showBorders = true, showRowLines =
|
23
|
+
disabled = false, autoNavigateToFocusedRow = true, columnResizingMode = 'widget', columnHidingEnabled = true, columnAutoWidth = true, allowColumnResizing = true, allowColumnReordering = true, showBorders = true, showRowLines = Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showRowLines) === 1, showColumnLines = Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showColumnLines) === 1, showColumnHeaders = true, rowAlternationEnabled = false, wordWrapEnabled = false, noDataText,
|
24
24
|
// styles
|
25
25
|
id, width = '100%', height = '100%', } = props;
|
26
26
|
const [counterValues, setCounterValues] = useState(new Map());
|
@@ -4,7 +4,7 @@ import Toolbar, { Item as ToolbarItem } from 'devextreme-react/cjs/toolbar';
|
|
4
4
|
import TreeView from 'devextreme-react/cjs/tree-view';
|
5
5
|
import ScrollView from 'devextreme-react/cjs/scroll-view';
|
6
6
|
import { ContextMenu, Pagination } from 'devextreme-react';
|
7
|
-
import { IconFolder, SDKUI_Localizator, IconHide, IconShow, IconDashboard, IconList, getFileIcon, formatBytes,
|
7
|
+
import { IconFolder, SDKUI_Localizator, IconHide, IconShow, IconDashboard, IconList, getFileIcon, formatBytes, Globalization } from '../../helper';
|
8
8
|
import { TMSearchBar } from '../sidebar/TMHeader';
|
9
9
|
import TMButton from './TMButton';
|
10
10
|
import TMDataGrid from './TMDataGrid';
|
@@ -53,12 +53,6 @@ const TMFileManager = (props) => {
|
|
53
53
|
event.preventDefault();
|
54
54
|
setTreeViewAnchor(event.currentTarget);
|
55
55
|
};
|
56
|
-
const onViewContextMenu = (event) => {
|
57
|
-
if (event === undefined)
|
58
|
-
return;
|
59
|
-
event.preventDefault();
|
60
|
-
setViewAnchor(event.currentTarget);
|
61
|
-
};
|
62
56
|
// Handle closing the context menu
|
63
57
|
const closeTreeViewContextMenu = useCallback(() => {
|
64
58
|
setTreeViewAnchor(null);
|
@@ -211,7 +205,7 @@ const TMFileManager = (props) => {
|
|
211
205
|
display: "flex",
|
212
206
|
flexGrow: 1,
|
213
207
|
height: "calc(100% - 40px)"
|
214
|
-
}, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', showSeparator: true, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: [isLeftPanelCollapsed ? '0%' : "50%", isLeftPanelCollapsed ? '100%' : "50%"], children: [_jsxs("div", { style: { height: "100%", width: "100%" }, onContextMenu: onTreeViewContextMenu, children: [_jsx(TreeView, { style: { marginTop: "10px" }, dataSource: treeViewData, displayExpr: "text", itemRender: renderTreeViewItem, onItemClick: handleTreeViewItemClick, onItemContextMenu: handleTreeViewContextMenu }), treeViewAnchor && _jsx(ContextMenu, { id: 'treeViewContextMenuDesktop', dataSource: folderContextMenuItems, target: treeViewAnchor, onHiding: closeTreeViewContextMenu })] }), _jsxs("div", { style: { backgroundColor: "#fff", width: "100%", height: "100%" }, children: [_jsxs(Toolbar, { style: { backgroundColor: '#f4f4f4', height: "40px", paddingLeft: "5px", paddingRight: '5px' }, children: [_jsx(ToolbarItem, { location: "before", children: _jsx(TMButton, { caption: viewMode === 'details' ? SDKUI_Localizator.PreviewView : SDKUI_Localizator.DetailsView, btnStyle: 'toolbar', color: 'primaryOutline', icon: viewMode === 'details' ? _jsx(IconDashboard, {}) : _jsx(IconList, {}), onClick: toggleViewMode }) }), _jsx(ToolbarItem, { location: "before", children: _jsx(TMSearchBar, { marginLeft: '0px', maxWidth: '160px', searchValue: searchText, onSearchValueChanged: (e) => handleSearchChange(e) }) })] }), _jsxs("div", { onDrop: handleDrop, onDragOver: handleDragOver, onDragLeave: handleDragLeave,
|
208
|
+
}, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', showSeparator: true, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: [isLeftPanelCollapsed ? '0%' : "50%", isLeftPanelCollapsed ? '100%' : "50%"], children: [_jsxs("div", { style: { height: "100%", width: "100%" }, onContextMenu: onTreeViewContextMenu, children: [_jsx(TreeView, { style: { marginTop: "10px" }, dataSource: treeViewData, displayExpr: "text", itemRender: renderTreeViewItem, onItemClick: handleTreeViewItemClick, onItemContextMenu: handleTreeViewContextMenu }), treeViewAnchor && _jsx(ContextMenu, { id: 'treeViewContextMenuDesktop', dataSource: folderContextMenuItems, target: treeViewAnchor, onHiding: closeTreeViewContextMenu })] }), _jsxs("div", { style: { backgroundColor: "#fff", width: "100%", height: "100%" }, children: [_jsxs(Toolbar, { style: { backgroundColor: '#f4f4f4', height: "40px", paddingLeft: "5px", paddingRight: '5px' }, children: [_jsx(ToolbarItem, { location: "before", children: _jsx(TMButton, { caption: viewMode === 'details' ? SDKUI_Localizator.PreviewView : SDKUI_Localizator.DetailsView, btnStyle: 'toolbar', color: 'primaryOutline', icon: viewMode === 'details' ? _jsx(IconDashboard, {}) : _jsx(IconList, {}), onClick: toggleViewMode }) }), _jsx(ToolbarItem, { location: "before", children: _jsx(TMSearchBar, { marginLeft: '0px', maxWidth: '160px', searchValue: searchText, onSearchValueChanged: (e) => handleSearchChange(e) }) })] }), _jsxs("div", { onDrop: handleDrop, onDragOver: handleDragOver, onDragLeave: handleDragLeave, style: { width: "100%", height: "calc(100% - 40px)", border: isDragging ? '2px solid red' : '2px solid transparent' }, children: [viewMode === 'thumbnails' && _jsxs(_Fragment, { children: [_jsx(ThumbnailsView, { userID: userID, items: filteredFileItems, focusedFile: focusedFile, selectedFiles: selectedFiles, searchText: searchText, handleSelectedFiles: handleSelectedFiles, handleFocusedFile: handleFocusedFile, onDoubleClickHandler: onDoubleClickHandler, setViewAnchor: setViewAnchor }), viewAnchor && _jsx(ContextMenu, { id: 'fileContextMenuDesktop', dataSource: fileContextMenuItems, target: viewAnchor, onHiding: closeViewContextMenu })] }), viewMode === 'details' && _jsx(DetailsView, { userID: userID, items: filteredFileItems, selectedFiles: selectedFiles, searchText: searchText, focusedFile: focusedFile, handleSelectedFiles: handleSelectedFiles, handleFocusedFile: handleFocusedFile, onDoubleClickHandler: onDoubleClickHandler, fileContextMenuItems: fileContextMenuItems })] })] })] }, "TMWGs-panels-treeView") })] }), isMobile && _jsx("div", { style: { height: "100%", width: "100%" }, children: _jsxs(TMToolbarCard, { onBack: openDraftList ? onBackCallback : undefined, title: SDKUI_Localizator.Drafts, totalItems: dcmtsFound ?? 0, children: [_jsxs("div", { style: { display: openDraftList ? 'none' : 'block', transition: 'opacity 0.3s ease-in-out' }, children: [_jsx(TreeView, { style: { marginTop: "10px", }, dataSource: treeViewData, displayExpr: "text", itemRender: renderTreeViewItem, onItemClick: handleTreeViewItemClick }), treeViewAnchor && _jsx(ContextMenu, { id: 'treeViewContextMenuMobile', dataSource: folderContextMenuItems, target: treeViewAnchor, onHiding: closeTreeViewContextMenu })] }), _jsxs("div", { style: { backgroundColor: "#fff", width: "100%", height: "100%", display: openDraftList ? 'block' : 'none', transition: 'opacity 0.3s ease-in-out' }, children: [_jsxs(Toolbar, { style: { backgroundColor: '#f4f4f4', height: "40px", paddingLeft: "5px", paddingRight: '5px' }, children: [_jsx(ToolbarItem, { location: "before", children: _jsx(TMButton, { caption: viewMode === 'details' ? SDKUI_Localizator.PreviewView : SDKUI_Localizator.DetailsView, btnStyle: 'toolbar', color: 'primaryOutline', icon: viewMode === 'details' ? _jsx(IconDashboard, {}) : _jsx(IconList, {}), onClick: toggleViewMode }) }), _jsx(ToolbarItem, { location: "before", children: _jsx(TMSearchBar, { marginLeft: '0px', maxWidth: '160px', searchValue: searchText, onSearchValueChanged: (e) => handleSearchChange(e) }) })] }), _jsxs("div", { onDrop: handleDrop, onDragOver: handleDragOver, onDragLeave: handleDragLeave, style: { width: "100%", height: "calc(100% - 40px)", border: isDragging ? '2px solid red' : '2px solid transparent' }, children: [viewMode === 'thumbnails' && _jsxs(_Fragment, { children: [_jsx(ThumbnailsView, { userID: userID, items: filteredFileItems, focusedFile: focusedFile, selectedFiles: selectedFiles, searchText: searchText, handleSelectedFiles: handleSelectedFiles, handleFocusedFile: handleFocusedFile, onDoubleClickHandler: onDoubleClickHandler, setViewAnchor: setViewAnchor }), viewAnchor && _jsx(ContextMenu, { id: 'fileViewContextMenuMobile', dataSource: fileContextMenuItems, target: viewAnchor, onHiding: closeViewContextMenu })] }), viewMode === 'details' && _jsx(DetailsView, { items: filteredFileItems, selectedFiles: selectedFiles, searchText: searchText, focusedFile: focusedFile, handleSelectedFiles: handleSelectedFiles, handleFocusedFile: handleFocusedFile, onDoubleClickHandler: onDoubleClickHandler })] })] })] }) })] });
|
215
209
|
};
|
216
210
|
export default TMFileManager;
|
217
211
|
const highlightText = (text, searchText, isSelected) => {
|
@@ -282,10 +276,10 @@ const DetailsView = (props) => {
|
|
282
276
|
e.items = fileContextMenuItems ? [...fileContextMenuItems] : [];
|
283
277
|
}
|
284
278
|
};
|
285
|
-
return (items && items.length > 0) ? (_jsx(TMDataGrid, { dataSource: items ?? [], dataColumns: dataColumns, focusedRowKey: focusedFile?.id, selectedRowKeys: selectedFiles?.map(file => file.id), onFocusedRowChanged: onFocusedRowChanged, onSelectionChanged: onSelectionChanged, onRowDblClick: onRowDblClick, onContextMenuPreparing: onContextMenuPreparing, showSearchPanel: false
|
279
|
+
return (items && items.length > 0) ? (_jsx(TMDataGrid, { dataSource: items ?? [], dataColumns: dataColumns, focusedRowKey: focusedFile?.id, selectedRowKeys: selectedFiles?.map(file => file.id), onFocusedRowChanged: onFocusedRowChanged, onSelectionChanged: onSelectionChanged, onRowDblClick: onRowDblClick, onContextMenuPreparing: onContextMenuPreparing, showSearchPanel: false })) : _jsx("div", { style: { width: "100%", height: "100%", display: 'flex', justifyContent: 'center', alignItems: 'center', marginTop: '10px' }, children: SDKUI_Localizator.FolderIsEmpty });
|
286
280
|
};
|
287
281
|
const ThumbnailsView = (props) => {
|
288
|
-
const { items, focusedFile, selectedFiles, searchText = '', userID, handleSelectedFiles, handleFocusedFile, onDoubleClickHandler } = props;
|
282
|
+
const { items, focusedFile, selectedFiles, searchText = '', userID, handleSelectedFiles, handleFocusedFile, onDoubleClickHandler, setViewAnchor } = props;
|
289
283
|
const PAGE_SIZES = [TMFileManagerPageSize.Small, TMFileManagerPageSize.Medium, TMFileManagerPageSize.Large];
|
290
284
|
const initPageSize = TMFileManagerPageSize.Small;
|
291
285
|
const showPagination = (items?.length ?? 0) > initPageSize;
|
@@ -313,5 +307,5 @@ const ThumbnailsView = (props) => {
|
|
313
307
|
if (onDoubleClickHandler)
|
314
308
|
onDoubleClickHandler(item);
|
315
309
|
};
|
316
|
-
return items && items.length > 0 ? (_jsxs("div", { style: { width: "100%", height: "100%" }, children: [_jsx(ScrollView, { width: "100%", height: showPagination ? "calc(100% - 50px)" : "100%", useNative: true, direction: 'vertical', children: _jsx(TMFileManagerThumbnailItems, { items: items, paginatedItems: paginatedItems, focusedFile: focusedFile, selectedFiles: selectedFiles, showId: false, userID: userID, searchText: searchText, handleFocusedFile: handleFocusedFile, handleSelectedFiles: handleSelectedFiles, onClick: handleItemClick, onDoubleClick: handleItemDoubleClick }) }), showPagination && _jsx(Pagination, { height: "50px", showInfo: true, showNavigationButtons: true, allowedPageSizes: PAGE_SIZES, displayMode: 'compact', itemCount: items.length, pageIndex: pageIndex, pageSize: pageSize, onPageIndexChange: setPageIndex, onPageSizeChange: setPageSize })] })) : _jsx("div", { style: { width: "100%", height: "100%", display: 'flex', justifyContent: 'center', alignItems: 'center', marginTop: '10px' }, children: SDKUI_Localizator.FolderIsEmpty });
|
310
|
+
return items && items.length > 0 ? (_jsxs("div", { style: { width: "100%", height: "100%" }, children: [_jsx(ScrollView, { width: "100%", height: showPagination ? "calc(100% - 50px)" : "100%", useNative: true, direction: 'vertical', children: _jsx(TMFileManagerThumbnailItems, { items: items, paginatedItems: paginatedItems, focusedFile: focusedFile, selectedFiles: selectedFiles, showId: false, userID: userID, searchText: searchText, handleFocusedFile: handleFocusedFile, handleSelectedFiles: handleSelectedFiles, onClick: handleItemClick, onDoubleClick: handleItemDoubleClick, setViewAnchor: setViewAnchor }) }), showPagination && _jsx(Pagination, { height: "50px", showInfo: true, showNavigationButtons: true, allowedPageSizes: PAGE_SIZES, displayMode: 'compact', itemCount: items.length, pageIndex: pageIndex, pageSize: pageSize, onPageIndexChange: setPageIndex, onPageSizeChange: setPageSize })] })) : _jsx("div", { style: { width: "100%", height: "100%", display: 'flex', justifyContent: 'center', alignItems: 'center', marginTop: '10px' }, children: SDKUI_Localizator.FolderIsEmpty });
|
317
311
|
};
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
import { FileItem } from './TMFileManager';
|
2
3
|
export interface TMFileManagerThumbnailItemsProps {
|
3
4
|
items: Array<FileItem>;
|
@@ -6,6 +7,7 @@ export interface TMFileManagerThumbnailItemsProps {
|
|
6
7
|
selectedFiles: Array<FileItem> | undefined;
|
7
8
|
showId: boolean;
|
8
9
|
searchText: string;
|
10
|
+
setViewAnchor: React.Dispatch<React.SetStateAction<HTMLElement | null>>;
|
9
11
|
onClick: (file: FileItem) => void;
|
10
12
|
onDoubleClick?: (file: FileItem) => void;
|
11
13
|
handleSelectedFiles?: (fileItems: Array<FileItem>) => void;
|
@@ -39,7 +39,7 @@ const highlightText = (text, searchText, isSelected) => {
|
|
39
39
|
return text.split(regex).map((part, index) => regex.test(part) ? (_jsx("span", { style: { backgroundColor: isSelected ? '#6c9023' : 'yellow' }, children: part }, index)) : (part));
|
40
40
|
};
|
41
41
|
const TMFileManagerThumbnailItems = (props) => {
|
42
|
-
const { items, paginatedItems, focusedFile, selectedFiles, searchText, showId, userID, onClick, onDoubleClick, handleSelectedFiles, handleFocusedFile } = props;
|
42
|
+
const { items, paginatedItems, focusedFile, selectedFiles, searchText, showId, userID, onClick, onDoubleClick, handleSelectedFiles, handleFocusedFile, setViewAnchor } = props;
|
43
43
|
// Ref to the container
|
44
44
|
const containerRef = useRef(null);
|
45
45
|
const clickTimeoutRef = useRef(null);
|
@@ -97,6 +97,7 @@ const TMFileManagerThumbnailItems = (props) => {
|
|
97
97
|
}, [onClick]);
|
98
98
|
const onContextMenu = useCallback((e, item) => {
|
99
99
|
e.preventDefault();
|
100
|
+
setViewAnchor(e.currentTarget);
|
100
101
|
if (handleFocusedFile)
|
101
102
|
handleFocusedFile(item);
|
102
103
|
}, []);
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
3
3
|
import Logo from '../../../assets/Toppy-generico.png';
|
4
|
-
import { LayoutModes
|
5
|
-
import { IconTree, IconProgressReady } from '../../../helper';
|
4
|
+
import { LayoutModes } from '@topconsultnpm/sdk-ts-beta';
|
5
|
+
import { IconTree, IconProgressReady, SDKUI_Globals } from '../../../helper';
|
6
6
|
import { useDeviceType, DeviceType } from '../../base/TMDeviceProvider';
|
7
7
|
import TMLayoutContainer, { TMSplitterLayout, TMLayoutItem } from '../../base/TMLayout';
|
8
8
|
import TMToolbarCard from '../../base/TMToolbarCard';
|
@@ -11,7 +11,7 @@ import TMDcmtForm from '../documents/TMDcmtForm';
|
|
11
11
|
import { StyledToppyTextContainer, StyledToppyText } from '../search/TMSearchQueryPanel';
|
12
12
|
import TMTreeSelector from '../search/TMTreeSelector';
|
13
13
|
const TMArchive = ({ inputTID }) => {
|
14
|
-
const TIDs =
|
14
|
+
const TIDs = SDKUI_Globals.userSettings.archivingSettings.mruTIDs;
|
15
15
|
const [currentTID, setCurrentTID] = useState(0);
|
16
16
|
const [mruTIDs, setMruTIDs] = useState(TIDs);
|
17
17
|
const [showRecentsPanel, setShowRecentsPanel] = useState(true);
|
@@ -47,7 +47,7 @@ const TMArchive = ({ inputTID }) => {
|
|
47
47
|
let index = newMruTIDS.findIndex(o => o == tid);
|
48
48
|
if (index >= 0)
|
49
49
|
newMruTIDS.splice(index, 1);
|
50
|
-
|
50
|
+
SDKUI_Globals.userSettings.archivingSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
51
51
|
setMruTIDs(newMruTIDS);
|
52
52
|
} }) }) }) : _jsx(_Fragment, {}), _jsx(TMLayoutItem, { children: currentTID ?
|
53
53
|
_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) })
|
@@ -2,14 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
2
2
|
import { useEffect, useMemo, useState } from 'react';
|
3
3
|
import styled from 'styled-components';
|
4
4
|
import TMDcmtPreview from './TMDcmtPreview';
|
5
|
-
import { AccessLevels, ArchiveConstraints, ArchiveEngineByID, DcmtTypeListCacheService, LayoutModes,
|
5
|
+
import { AccessLevels, ArchiveConstraints, ArchiveEngineByID, DcmtTypeListCacheService, LayoutModes, MetadataDataTypes, ResultTypes, SDK_Globals, SystemMIDsAsNumber, TemplateTIDs, UpdateEngineByID, ValidationItem } from '@topconsultnpm/sdk-ts-beta';
|
6
6
|
import { ContextMenu } from 'devextreme-react';
|
7
7
|
import { WorkFlowApproveRejectPopUp, WorkFlowOperationButtons, WorkFlowReAssignPopUp } from '../workflow/TMWorkflowPopup';
|
8
8
|
import { DownloadTypes, FormModes } from '../../../ts';
|
9
9
|
import { DeviceType, useDeviceType } from '../../base/TMDeviceProvider';
|
10
10
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
11
11
|
import { handleArchiveVisibility, searchResultToMetadataValues } from '../../../helper/queryHelper';
|
12
|
-
import { genUniqueId, IconCloseCircle, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDataList, IconDetailDcmts, svgToString, IconDownload, IconHide, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo } from '../../../helper';
|
12
|
+
import { genUniqueId, IconCloseCircle, IconShow, SDKUI_Localizator, IconBoard, IconDcmtTypeSys, IconDataList, IconDetailDcmts, svgToString, IconDownload, IconHide, calcIsModified, IconMenuVertical, Globalization, getListMaxItems, getSystemMetadata, IconBoxArchiveIn, IconClear, IconUndo, SDKUI_Globals } from '../../../helper';
|
13
13
|
import { hasDetailRelations, hasMasterRelations, isXMLFileExt } from '../../../helper/dcmtsHelper';
|
14
14
|
import { TMColors } from '../../../utils/theme';
|
15
15
|
import { StyledFormButtonsContainer, StyledModalContainer, StyledToolbarCardContainer } from '../../base/Styled';
|
@@ -33,7 +33,7 @@ import TMModal from '../../base/TMModal';
|
|
33
33
|
let abortControllerLocal = new AbortController();
|
34
34
|
//#endregion
|
35
35
|
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, showDcmtForm = true, showDcmtFormSidebar = true, showPreview = false, showBoard = false, showSysMetadata = false, onClosePreview, titleModal, isModal = false, widthModal = "100%", heightModal = "100%" }) => {
|
36
|
-
const mruTIDs =
|
36
|
+
const mruTIDs = SDKUI_Globals.userSettings.archivingSettings.mruTIDs;
|
37
37
|
const [id, setID] = useState('');
|
38
38
|
const [showWaitPanelLocal, setShowWaitPanelLocal] = useState(false);
|
39
39
|
const [waitPanelTitleLocal, setWaitPanelTitleLocal] = useState('');
|
@@ -390,7 +390,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
|
|
390
390
|
if (newMruTIDS.length >= 10)
|
391
391
|
newMruTIDS.splice(0, 1);
|
392
392
|
newMruTIDS.push(TID);
|
393
|
-
|
393
|
+
SDKUI_Globals.userSettings.archivingSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
394
394
|
onSaveRecents?.(newMruTIDS);
|
395
395
|
ShowAlert({ mode: 'success', title: 'Archiviazione', message: 'Il documento è stato archiviato con successo', duration: 3000 });
|
396
396
|
}
|
@@ -47,8 +47,8 @@ const TMDcmtPreview = ({ dcmtData, onClose, canNext, canPrev, onNext, onPrev })
|
|
47
47
|
rfo.retrieveReason = DcmtOpers.None;
|
48
48
|
rfo.generalRetrieveFormat = GeneralRetrieveFormats.OriginalUnsigned;
|
49
49
|
rfo.cvtFormat = extensionHandler(dcmtData?.fileExt) === FileExtensionHandler.CONVERTIBLE ? FileFormats.PDF : FileFormats.None;
|
50
|
-
rfo.invoiceRetrieveFormat = SDKUI_Globals.invoiceRetrieveFormat;
|
51
|
-
rfo.orderRetrieveFormat = SDKUI_Globals.orderRetrieveFormat;
|
50
|
+
rfo.invoiceRetrieveFormat = SDKUI_Globals.userSettings?.searchSettings.invoiceRetrieveFormat;
|
51
|
+
rfo.orderRetrieveFormat = SDKUI_Globals.userSettings?.searchSettings.orderRetrieveFormat;
|
52
52
|
try {
|
53
53
|
await sleep(300); //wait for DX-DataGrid selectionChanged
|
54
54
|
let dcmtFile = await getDcmtFileAsync({ TID: dcmtData?.tid, DID: dcmtData?.did, FILEEXT: dcmtData?.fileExt }, rfo, 'Anteprima', false);
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
2
|
import { useCallback, useEffect, useState } from 'react';
|
3
|
-
import { SavedQueryCacheService,
|
3
|
+
import { SavedQueryCacheService, DcmtTypeListCacheService, SDK_Localizator } from '@topconsultnpm/sdk-ts-beta';
|
4
4
|
import TMSavedQuerySelector from './TMSavedQuerySelector';
|
5
5
|
import TMTreeSelector from './TMTreeSelector';
|
6
6
|
import { TabPanel, Item } from 'devextreme-react/tab-panel';
|
@@ -36,7 +36,7 @@ const TMSearch = ({ inputTID, inputSqdID, onRefreshAfterAddDcmtToFavs, onTaskCre
|
|
36
36
|
const [lastQdSearched, setLastQdSearched] = useState();
|
37
37
|
const deviceType = useDeviceType();
|
38
38
|
useEffect(() => {
|
39
|
-
setMruTIDs(
|
39
|
+
setMruTIDs(SDKUI_Globals.userSettings.searchSettings.mruTIDs);
|
40
40
|
loadDataSQDsAsync(false);
|
41
41
|
}, []);
|
42
42
|
useEffect(() => {
|
@@ -145,7 +145,7 @@ const TMSearch = ({ inputTID, inputSqdID, onRefreshAfterAddDcmtToFavs, onTaskCre
|
|
145
145
|
default: break;
|
146
146
|
}
|
147
147
|
};
|
148
|
-
return (_jsxs(TMLayoutContainer, { direction: 'vertical', children: [_jsx("div", { style: { position: (currentSearchView === TMSearchViews.None) ? 'relative' : 'absolute', left: (currentSearchView === TMSearchViews.None) ? '0px' : '-9999px', top: (currentSearchView === TMSearchViews.None) ? '0px' : '-9999px', visibility: (currentSearchView === TMSearchViews.None) ? 'visible' : 'hidden', display: "flex", flexDirection: "column", height: "100%", width: '100%' }, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', showSeparator: deviceType !== DeviceType.MOBILE && showTreesPanel, separatorSize: 8, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: (deviceType === DeviceType.MOBILE) ? ['100%', '0%'] : showTreesPanel ? [
|
148
|
+
return (_jsxs(TMLayoutContainer, { direction: 'vertical', children: [_jsx("div", { style: { position: (currentSearchView === TMSearchViews.None) ? 'relative' : 'absolute', left: (currentSearchView === TMSearchViews.None) ? '0px' : '-9999px', top: (currentSearchView === TMSearchViews.None) ? '0px' : '-9999px', visibility: (currentSearchView === TMSearchViews.None) ? 'visible' : 'hidden', display: "flex", flexDirection: "column", height: "100%", width: '100%' }, children: _jsxs(TMSplitterLayout, { direction: 'horizontal', showSeparator: deviceType !== DeviceType.MOBILE && showTreesPanel, separatorSize: 8, separatorColor: 'transparent', separatorActiveColor: 'transparent', min: ['0', '0'], start: (deviceType === DeviceType.MOBILE) ? ['100%', '0%'] : showTreesPanel ? ['20%', '80%'] : ['0%', '100%'], children: [deviceType !== DeviceType.MOBILE && _jsx(TMTreeSelector, { onClose: () => setShowTreesPanel(false), onSelectedTIDChanged: (tid) => {
|
149
149
|
setCurrentTID(tid);
|
150
150
|
if (tid && mruTIDs.includes(tid))
|
151
151
|
setCurrentMruTID(tid);
|
@@ -156,7 +156,7 @@ const TMSearch = ({ inputTID, inputSqdID, onRefreshAfterAddDcmtToFavs, onTaskCre
|
|
156
156
|
let index = newMruTIDS.findIndex(o => o == tid);
|
157
157
|
if (index >= 0)
|
158
158
|
newMruTIDS.splice(index, 1);
|
159
|
-
|
159
|
+
SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
160
160
|
setMruTIDs(newMruTIDS);
|
161
161
|
} }) }), _jsx(TMSearchQueryPanel, { fromDTD: fromDTD, SQD: currentSQD, isOpenDistinctValuesPanel: showDistinctValuesPanel, rightSidebarItems: rightSidebarItems, onFocusedMetadataChanged: setFocusedTidMid, onRightSidebarItemClick: rightSidebarItemClickHandler, onCloseDistinctValuesPanel: () => setShowDistinctValuesPanel(false), onSearchCompleted: (searchResult, qd) => {
|
162
162
|
setSearchResult(searchResult);
|
@@ -175,7 +175,7 @@ const TMSearch = ({ inputTID, inputSqdID, onRefreshAfterAddDcmtToFavs, onTaskCre
|
|
175
175
|
newMruTIDS.push(fromTID);
|
176
176
|
setMruTIDs(newMruTIDS);
|
177
177
|
setCurrentMruTID(fromTID);
|
178
|
-
|
178
|
+
SDKUI_Globals.userSettings.searchSettings.mruTIDs = newMruTIDS.filter(tid => tid != undefined && tid != null);
|
179
179
|
}, onSqdSaved: async (newSqd) => {
|
180
180
|
await loadDataSQDsAsync(true, newSqd.masterTID);
|
181
181
|
await setSQDAsync(newSqd);
|
@@ -4,7 +4,7 @@ import { SDK_Globals, DataColumnTypes, MetadataDataDomains, DataListViewModes, M
|
|
4
4
|
import styled from 'styled-components';
|
5
5
|
import { getCommandsMenuItems, getSelectedDcmtsOrFocused } from './TMSearchResultsMenuItems';
|
6
6
|
import { ContextMenu } from 'devextreme-react';
|
7
|
-
import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconTag, IconDetails, IconCommand, IconDelete, IconRefresh, IconMenuVertical, IconDownload, IconSignature, deepCompare, getDataColumnName, searchResultDescriptorToSimpleArray,
|
7
|
+
import { genUniqueId, IconShow, IconBoard, IconDcmtTypeSys, IconDetailDcmts, SDKUI_Localizator, IconTag, IconDetails, IconCommand, IconDelete, IconRefresh, IconMenuVertical, IconDownload, IconSignature, deepCompare, getDataColumnName, searchResultDescriptorToSimpleArray, IconArchive, IconActivityLog, IconStar, IconFreeSearch, IconChevronDown, searchResultToMetadataValues } from '../../../helper';
|
8
8
|
import { useDcmtOperations } from '../../../hooks/useDcmtOperations';
|
9
9
|
import { useInputAttachmentsDialog, useInputCvtFormatDialog } from '../../../hooks/useInputDialog';
|
10
10
|
import { DcmtOperationTypes, FormModes, SearchResultContext } from '../../../ts';
|
@@ -633,7 +633,7 @@ const TMSearchResultGrid = ({ inputFocusedItem, allowMultipleSelection = true, o
|
|
633
633
|
setShowFilterPanel(!!e.value);
|
634
634
|
}
|
635
635
|
}, []);
|
636
|
-
return _jsx(TMDataGrid, { id: "tm-search-result", keyExpr: "rowIndex", dataColumns: dataColumns, dataSource: dataSource, repaintChangesOnly: true, selectedRowKeys: selectedRowKeys, focusedRowKey: focusedItem?.rowIndex,
|
636
|
+
return _jsx(TMDataGrid, { id: "tm-search-result", keyExpr: "rowIndex", dataColumns: dataColumns, dataSource: dataSource, repaintChangesOnly: true, selectedRowKeys: selectedRowKeys, focusedRowKey: focusedItem?.rowIndex, showSearchPanel: false, showFilterPanel: showFilterPanel, sorting: { mode: "multiple" }, selection: { mode: allowMultipleSelection ? 'multiple' : 'single' }, pageSize: TMDataGridPageSize.Small, onSelectionChanged: handleSelectionChange, onFocusedRowChanged: handleFocusedRowChange, onRowDblClick: onRowDblClick, onContentReady: onContentReady, onOptionChanged: onOptionChanged, onContextMenuPreparing: onContextMenuPreparing, counterConfig: { show: true } });
|
637
637
|
};
|
638
638
|
//#region TMSearchResultSelector
|
639
639
|
const StyledGroupTemplate = styled.div `
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { useCallback, useEffect, useState } from 'react';
|
3
|
-
import { LayoutModes,
|
3
|
+
import { LayoutModes, SDK_Localizator, TreeCacheService, TreeItemTypes } from '@topconsultnpm/sdk-ts-beta';
|
4
4
|
import { TreeList, Column, Scrolling, Selection } from 'devextreme-react/tree-list';
|
5
5
|
import { DropDownBox } from 'devextreme-react';
|
6
6
|
import { IconStarRemove, IconStar, SDKUI_Localizator, SDKUI_Globals } from '../../../helper';
|
@@ -20,7 +20,7 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, onSelectedTIDChanged,
|
|
20
20
|
const [focusedRowKey, setFocusedRowKey] = useState(undefined);
|
21
21
|
const [isGridBoxOpened, setIsGridBoxOpened] = useState(false);
|
22
22
|
const [defaultTreeId, setDefaultTreeId] = useState(-1);
|
23
|
-
const DEFAULT_TREE_KEY_NAME = `DEFAULT_TREE_${SDK_Globals.tmSession?.SessionDescr?.archiveID}_${SDK_Globals.tmSession?.SessionDescr?.userID}`;
|
23
|
+
// const DEFAULT_TREE_KEY_NAME = `DEFAULT_TREE_${SDK_Globals.tmSession?.SessionDescr?.archiveID}_${SDK_Globals.tmSession?.SessionDescr?.userID}`;
|
24
24
|
useEffect(() => {
|
25
25
|
if (treeItems.length > 0 && treeItems[0].id) {
|
26
26
|
setSelectedRowKeys([treeItems[0].id]);
|
@@ -30,7 +30,7 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, onSelectedTIDChanged,
|
|
30
30
|
const setResultCache = (result) => {
|
31
31
|
if (result && result.length > 0) {
|
32
32
|
setTrees(result);
|
33
|
-
let defaultTree =
|
33
|
+
let defaultTree = SDKUI_Globals.userSettings.searchSettings.defaultTree;
|
34
34
|
if (defaultTree > 0) {
|
35
35
|
setDefaultTreeId(defaultTree);
|
36
36
|
setSelectedTreeId(defaultTree);
|
@@ -93,11 +93,11 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, onSelectedTIDChanged,
|
|
93
93
|
}, []);
|
94
94
|
return (_jsx(TMToolbarCard, { title: SDK_Localizator.Trees, totalItems: trees.length, onClose: onClose, toolbar: _jsx(TMButton, { btnStyle: 'icon', caption: defaultTreeId == selectedTreeId ? SDKUI_Localizator.TreeRemoveDefault : SDKUI_Localizator.SetAsDefault, icon: defaultTreeId == selectedTreeId ? _jsx(IconStarRemove, { color: 'rgb(243, 114, 92)' }) : _jsx(IconStar, { color: 'rgb(248, 215, 117)' }), onClick: () => {
|
95
95
|
if (defaultTreeId == selectedTreeId) {
|
96
|
-
|
96
|
+
SDKUI_Globals.userSettings.searchSettings.defaultTree = -1;
|
97
97
|
setDefaultTreeId(-1);
|
98
98
|
}
|
99
99
|
else {
|
100
|
-
|
100
|
+
SDKUI_Globals.userSettings.searchSettings.defaultTree = selectedTreeId;
|
101
101
|
setDefaultTreeId(selectedTreeId);
|
102
102
|
}
|
103
103
|
} }), children: trees.length > 0
|
@@ -110,13 +110,11 @@ const TMTreeSelector = ({ layoutMode = LayoutModes.Update, onSelectedTIDChanged,
|
|
110
110
|
}, value: selectedTreeId, opened: isGridBoxOpened, valueExpr: "id", displayExpr: "nameLoc", deferRendering: false, dataSource: trees, onValueChanged: syncDataGridSelection, onOptionChanged: onGridBoxOpened, children: _jsx(TMDataGrid, { height: "100%", width: "100%", dataSource: trees, dataColumns: [
|
111
111
|
{ dataField: 'nameLoc', caption: SDKUI_Localizator.Name, width: 'auto' },
|
112
112
|
{ dataField: 'description', caption: SDKUI_Localizator.Description, width: 'auto' },
|
113
|
-
], selection: { mode: 'single', showCheckBoxesMode: "none" },
|
114
|
-
// scrolling={{ mode: 'virtual', useNative: SDKUI_Globals.dataGridUseNativeScrollbar }}
|
115
|
-
showRowLines: SDKUI_Globals.dataGridShowRowLines, showColumnLines: SDKUI_Globals.dataGridShowColumnLines, showHeaderFilter: false, selectedRowKeys: selectedRowKeys, onSelectionChanged: onSelectionChanged, focusedRowKey: focusedRowKey, onFocusedRowChanged: onFocusedRowChanged }) }) }), _jsx(TMLayoutItem, { height: 'calc(100% - 50px)', children: _jsxs(TreeList, { height: "100%", elementAttr: { class: 'tm-dx-treelist' }, dataSource: treeItems, showRowLines: SDKUI_Globals.dataGridShowRowLines, showColumnLines: SDKUI_Globals.dataGridShowColumnLines, showBorders: false, columnAutoWidth: true, keyExpr: "id", parentIdExpr: "parentID", dataStructure: "plain", showColumnHeaders: false, onContentReady: (e) => e.component.clearSelection(), onSelectionChanged: (e) => {
|
113
|
+
], selection: { mode: 'single', showCheckBoxesMode: "none" }, showHeaderFilter: false, selectedRowKeys: selectedRowKeys, onSelectionChanged: onSelectionChanged, focusedRowKey: focusedRowKey, onFocusedRowChanged: onFocusedRowChanged }) }) }), _jsx(TMLayoutItem, { height: 'calc(100% - 50px)', children: _jsxs(TreeList, { height: "100%", elementAttr: { class: 'tm-dx-treelist' }, dataSource: treeItems, showRowLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showRowLines) === 1, showColumnLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showColumnLines) === 1, showBorders: false, columnAutoWidth: true, keyExpr: "id", parentIdExpr: "parentID", dataStructure: "plain", showColumnHeaders: false, onContentReady: (e) => e.component.clearSelection(), onSelectionChanged: (e) => {
|
116
114
|
if (e.selectedRowsData[0] && e.selectedRowsData[0].type == TreeItemTypes.DcmtType) {
|
117
115
|
onSelectedTIDChanged?.(e.selectedRowsData[0].tid, selectedTreeId);
|
118
116
|
}
|
119
|
-
}, children: [_jsx(Column, { dataField: "nameLoc", caption: SDKUI_Localizator.Name, cellRender: renderCell }), _jsx(Scrolling, { mode: "virtual", useNative: SDKUI_Globals.
|
117
|
+
}, children: [_jsx(Column, { dataField: "nameLoc", caption: SDKUI_Localizator.Name, cellRender: renderCell }), _jsx(Scrolling, { mode: "virtual", useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 }), _jsx(Selection, { mode: "single" })] }) })] })
|
120
118
|
: _jsx("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%', width: '100%', fontSize: '1.5rem' }, children: SDKUI_Localizator.TreesNoAvailable }) }));
|
121
119
|
};
|
122
120
|
export default TMTreeSelector;
|
@@ -32,7 +32,7 @@ const Select = styled.select `
|
|
32
32
|
flex: 1;
|
33
33
|
border: none;
|
34
34
|
outline: none;
|
35
|
-
font-size: ${SDKUI_Globals.
|
35
|
+
font-size: ${SDKUI_Globals.userSettings?.themeSettings.fontSize ?? '12px'};
|
36
36
|
padding: 6px 0;
|
37
37
|
background: transparent;
|
38
38
|
color: ${props => props.$color ?? '#313131'};
|
@@ -499,7 +499,7 @@ const TMLoginForm = (props) => {
|
|
499
499
|
if (!ra) {
|
500
500
|
ra = [];
|
501
501
|
}
|
502
|
-
;
|
502
|
+
; //NOSONAR
|
503
503
|
let maxId = ra.length > 0
|
504
504
|
? ra.reduce((max, obj) => (obj.id > max.id ? obj : max), ra[0]).id //NOSONAR
|
505
505
|
: 0;
|
@@ -584,6 +584,16 @@ const CeredentialContainer = forwardRef(({ isMobile = false, authMode = Authenti
|
|
584
584
|
return usernameRef.current;
|
585
585
|
});
|
586
586
|
const usernameRef = useRef(null);
|
587
|
+
useEffect(() => {
|
588
|
+
setTimeout(() => {
|
589
|
+
const autoUser = usernameRef.current?.value ?? '';
|
590
|
+
const autoPass = passwordRef.current?.value ?? '';
|
591
|
+
if (autoUser !== username)
|
592
|
+
onUsernameChanged(autoUser);
|
593
|
+
if (autoPass !== password)
|
594
|
+
onPasswordChanged(autoPass);
|
595
|
+
}, 100);
|
596
|
+
}, []);
|
587
597
|
useEffect(() => {
|
588
598
|
if (!secondaryRef)
|
589
599
|
return;
|
@@ -33,7 +33,7 @@ const Input = styled.input `
|
|
33
33
|
flex: 1;
|
34
34
|
border: none;
|
35
35
|
outline: none;
|
36
|
-
font-size: ${SDKUI_Globals.
|
36
|
+
font-size: ${SDKUI_Globals.userSettings?.themeSettings.fontSize ?? '12px'};
|
37
37
|
padding: 6px 30px 6px 10px;
|
38
38
|
background: transparent;
|
39
39
|
color: ${props => props.$color ?? '#313131'};
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
3
3
|
import { SDK_Globals } from '@topconsultnpm/sdk-ts-beta';
|
4
|
-
import { IconApply, IconHide, IconRefresh, IconShow,
|
4
|
+
import { IconApply, IconHide, IconRefresh, IconShow, SDKUI_Localizator } from '../../helper';
|
5
5
|
import TMButton from '../base/TMButton';
|
6
6
|
import TMToggleButton from '../base/TMToggleButton';
|
7
7
|
import TMModal from '../base/TMModal';
|
@@ -88,7 +88,7 @@ const TMChooserForm = ({ children, title, allowMultipleSelection = false, startW
|
|
88
88
|
}, [manageUseLocalizedName, summaryItems]);
|
89
89
|
return (_jsx(TMModal, { title: renderTitle(), width: width ?? '550px', height: height ?? '600px', toolbar: _jsx(ToolbarButtons, {}), onClose: onClose, children: (children ??
|
90
90
|
filteredItems.length > 0)
|
91
|
-
? _jsx(TMDataGrid, { dataSource: filteredItems, keyExpr: keyName, dataColumns: dataColumns, focusedRowKey: focusedRowKey, selectedRowKeys: selectedRowKeys,
|
91
|
+
? _jsx(TMDataGrid, { dataSource: filteredItems, keyExpr: keyName, dataColumns: dataColumns, focusedRowKey: focusedRowKey, selectedRowKeys: selectedRowKeys, headerFilter: { visible: true }, selection: { mode: allowMultipleSelection ? 'multiple' : 'single', showCheckBoxesMode: 'always', selectAllMode: 'allPages' }, grouping: allowGrouping ? { autoExpandAll: false, expandMode: 'rowClick' } : undefined, summary: customSummary, onFocusedRowChanged: handleFocusedRowChange, onSelectionChanged: handleSelectionChanged, onRowDblClick: handleRowDoubleClick })
|
92
92
|
: _jsx(TMLayoutContainer, { gap: 30, alignItems: 'center', justifyContent: 'center', children: _jsx(TMLayoutItem, { children: _jsx("p", { style: { height: "100%", color: TMColors.primaryColor, fontSize: "1.5rem", display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: SDKUI_Localizator.NoDataToDisplay }) }) }) }));
|
93
93
|
};
|
94
94
|
export default TMChooserForm;
|
@@ -19,7 +19,7 @@ const cellRender = (cellData) => {
|
|
19
19
|
}
|
20
20
|
};
|
21
21
|
const TMResultDialog = ({ title, result, id1Caption, id2Caption }) => {
|
22
|
-
return (_jsx(TMModal, { height: '65%', width: '75%', title: `${SDKUI_Localizator.OperationResult} - ${title}`, children: _jsxs(TMLayoutContainer, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: '5px', padding: '5px', justifyContent: 'center', alignItems: 'center' }, children: [_jsx("p", { children: `${SDKUI_Localizator.ProcessedItems}: ${result.length}` }), _jsx(IconSuccessCirlce, { fontSize: 22, color: TMColors.success }), _jsx("p", { children: result.filter(o => o.resultType == ResultTypes.SUCCESS).length ?? 0 }), _jsx(IconWarning, { fontSize: 22, color: TMColors.warning }), _jsx("p", { children: result.filter(o => o.resultType == ResultTypes.WARNING).length ?? 0 }), _jsx(IconCloseCircle, { fontSize: 22, color: TMColors.error }), _jsx("p", { children: result.filter(o => o.resultType == ResultTypes.ERROR).length ?? 0 })] }), _jsxs(DataGrid, { dataSource: result.filter(o => o.resultType != ResultTypes.SUCCESS), showColumnLines: SDKUI_Globals.
|
22
|
+
return (_jsx(TMModal, { height: '65%', width: '75%', title: `${SDKUI_Localizator.OperationResult} - ${title}`, children: _jsxs(TMLayoutContainer, { children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: '5px', padding: '5px', justifyContent: 'center', alignItems: 'center' }, children: [_jsx("p", { children: `${SDKUI_Localizator.ProcessedItems}: ${result.length}` }), _jsx(IconSuccessCirlce, { fontSize: 22, color: TMColors.success }), _jsx("p", { children: result.filter(o => o.resultType == ResultTypes.SUCCESS).length ?? 0 }), _jsx(IconWarning, { fontSize: 22, color: TMColors.warning }), _jsx("p", { children: result.filter(o => o.resultType == ResultTypes.WARNING).length ?? 0 }), _jsx(IconCloseCircle, { fontSize: 22, color: TMColors.error }), _jsx("p", { children: result.filter(o => o.resultType == ResultTypes.ERROR).length ?? 0 })] }), _jsxs(DataGrid, { dataSource: result.filter(o => o.resultType != ResultTypes.SUCCESS), showColumnLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showRowLines) === 1, showRowLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showColumnLines) === 1, keyExpr: "rowIndex", width: "100%", height: "100%", columnResizingMode: "widget", allowColumnResizing: true, focusedRowEnabled: true, hoverStateEnabled: true, rowAlternationEnabled: true, children: [_jsx(Column, { dataField: 'resultType', caption: '', width: "5%", allowResizing: true, allowSorting: true, cellRender: cellRender }), _jsx(Column, { dataField: 'id1', caption: id1Caption, width: "10%" }), id2Caption && _jsx(Column, { dataField: 'id2', caption: id2Caption, width: "10%" }), _jsx(Column, { dataField: 'description', allowResizing: true, caption: SDKUI_Localizator.Description, allowSorting: true, width: id2Caption ? "75%" : "85%" }), _jsx(HeaderFilter, { visible: true }), _jsx(Paging, { enabled: true, pageSize: 30 }), _jsx(Pager, { visible: true, showInfo: true, showNavigationButtons: true }), _jsx(Scrolling, { mode: 'standard', useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 })] })] }) }));
|
23
23
|
};
|
24
24
|
export default TMResultDialog;
|
25
25
|
export class TMResultManager {
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
3
3
|
import { DcmtTypeListCacheService, ResultTypes, SDK_Globals, WorkingGroupEngine } from "@topconsultnpm/sdk-ts-beta";
|
4
4
|
import { ContextMenu, ScrollView } from 'devextreme-react';
|
5
|
-
import { SDKUI_Localizator, IconAttachment, getExceptionMessage, Globalization, IconBoard
|
5
|
+
import { SDKUI_Localizator, IconAttachment, getExceptionMessage, Globalization, IconBoard } from '../../helper';
|
6
6
|
import TMDataGrid from '../base/TMDataGrid';
|
7
7
|
import { useDeviceType, DeviceType } from '../base/TMDeviceProvider';
|
8
8
|
import { TMMessageBoxManager, ButtonNames } from '../base/TMPopUp';
|
@@ -514,7 +514,7 @@ const TMBlogs = (props) => {
|
|
514
514
|
{ dataField: "attachments", caption: SDKUI_Localizator.RefersTo, dataType: 'string', visible: true, cellRender: cellAttachmentsRender },
|
515
515
|
];
|
516
516
|
}, [localShowId, showIconHeader, searchText]);
|
517
|
-
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(TMDataGrid, { ref: gridRef, showSearchPanel: false, dataSource: blogPosts ?? [], dataColumns: dataColumns, selection: { mode: 'none' }, focusedRowKey: focusedBlog?.id, onFocusedRowChanged: onFocusedRowChanged,
|
517
|
+
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(TMDataGrid, { ref: gridRef, showSearchPanel: false, dataSource: blogPosts ?? [], dataColumns: dataColumns, selection: { mode: 'none' }, focusedRowKey: focusedBlog?.id, onFocusedRowChanged: onFocusedRowChanged, onContextMenuPreparing: onContextMenuPreparing }) });
|
518
518
|
};
|
519
519
|
const toggleViewMode = () => {
|
520
520
|
setRenderMode((prevViewMode) => (prevViewMode === 'details' ? 'thumbnails' : 'details'));
|
@@ -203,7 +203,7 @@ const TMPage = ({ id, objClass = ObjectClasses.None, lastRefreshTime, objType, l
|
|
203
203
|
return;
|
204
204
|
setSelectedItems([row.data]);
|
205
205
|
setShowList(false);
|
206
|
-
}, showColumnLines: SDKUI_Globals.
|
206
|
+
}, showColumnLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showColumnLines) === 1, showRowLines: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.showRowLines) === 1, onSelectionChanged: (e) => { setSelectedItems(e.selectedRowsData); onSelectionChanged?.(e.selectedRowsData); }, children: [_jsx(GroupPanel, { visible: !!(deviceType !== DeviceType.MOBILE && showAllColumns) }), _jsx(SearchPanel, { visible: false }), _jsx(Grouping, { autoExpandAll: false }), _jsx(HeaderFilter, { visible: true }), _jsx(Selection, { mode: "multiple", showCheckBoxesMode: "onClick", selectAllMode: 'allPages' }), _jsx(Scrolling, { mode: "standard", useNative: Number(SDKUI_Globals.userSettings?.themeSettings.gridSettings.useNativeScrollbar) === 1 }), _jsx(Paging, { pageSize: 25 }), _jsx(Pager, { visible: true, showInfo: true, showNavigationButtons: true }), _jsx(LoadPanel, { enabled: true }), _jsx(Column, { width: 20, cellRender: cellRenderObjectIcon }), _jsx(Column, { width: 'auto', visible: showId, dataField: "id", caption: "ID" }), _jsx(Column, { width: 250, dataField: "name", caption: SDKUI_Localizator.Name, sortOrder: "asc" }), _jsx(Column, { width: 250, visible: showAllColumns, dataField: "description", caption: SDKUI_Localizator.Description }), customColumns?.map((item, index) => { return React.cloneElement(item, { key: index, visible: showAllColumns }); }), _jsx(Column, { width: 'auto', visible: showAllColumns, dataField: "ownerID", caption: SDKUI_Localizator.OwnerID }), _jsx(Column, { width: 'auto', visible: showAllColumns, dataField: "ownerName", caption: SDKUI_Localizator.OwnerName }), _jsx(Column, { width: 'auto', dataType: "date", format: Globalization.getDateDisplayFormat(), visible: showAllColumns, dataField: "creationTime", caption: SDKUI_Localizator.CreationTime }), _jsx(Column, { width: 'auto', dataType: "date", format: Globalization.getDateDisplayFormat(), visible: showAllColumns, dataField: "lastUpdateTime", caption: SDKUI_Localizator.LastUpdateTime })] })] }), detailInsteadOfContent ??
|
207
207
|
_jsx(TMLayoutItem, { children: selectedItems.length == 1 || formMode == FormModes.Create || formMode == FormModes.Duplicate ?
|
208
208
|
_jsx(TMToolbarCard, { onBack: deviceType === DeviceType.MOBILE ? () => setShowList(true) : undefined, title: calcSaveFormTitle(objName, formMode, selectedItems.length == 0 ? -1 : selectedItems[0].id, detailTitlePathKeys), children: getDetailFormWithProps() })
|
209
209
|
:
|
@@ -6,39 +6,41 @@ import TMDropDown from '../editors/TMDropDown';
|
|
6
6
|
import TMCheckBox from '../editors/TMCheckBox';
|
7
7
|
import TMButton from '../base/TMButton';
|
8
8
|
import { SDKUI_Globals, SDKUI_Localizator } from '../../helper';
|
9
|
+
const fontSizes = [
|
10
|
+
{ value: "10px", display: "10px" },
|
11
|
+
{ value: "11px", display: "11px" },
|
12
|
+
{ value: "12px", display: "12px" },
|
13
|
+
{ value: "13px", display: "13px" },
|
14
|
+
{ value: "14px", display: "14px" },
|
15
|
+
{ value: "15px", display: "15px" },
|
16
|
+
{ value: "16px", display: "16px" },
|
17
|
+
{ value: "17px", display: "17px" },
|
18
|
+
{ value: "18px", display: "18px" },
|
19
|
+
{ value: "19px", display: "19px" },
|
20
|
+
{ value: "20px", display: "20px" }
|
21
|
+
];
|
9
22
|
const SettingsAppearance = () => {
|
10
|
-
const [
|
11
|
-
const
|
12
|
-
|
13
|
-
const [dataGridUseNativeScrollbar, setDataGridUseNativeScrollbar] = useState(Number(localStorage.getItem("dataGridUseNativeScrollbar") ?? 1));
|
14
|
-
const fontSizes = [
|
15
|
-
{ value: "10px", display: "10px" },
|
16
|
-
{ value: "11px", display: "11px" },
|
17
|
-
{ value: "12px", display: "12px" },
|
18
|
-
{ value: "13px", display: "13px" },
|
19
|
-
{ value: "14px", display: "14px" },
|
20
|
-
{ value: "15px", display: "15px" },
|
21
|
-
{ value: "16px", display: "16px" },
|
22
|
-
{ value: "17px", display: "17px" },
|
23
|
-
{ value: "18px", display: "18px" },
|
24
|
-
{ value: "19px", display: "19px" },
|
25
|
-
{ value: "20px", display: "20px" }
|
26
|
-
];
|
27
|
-
return (_jsxs(TMLayoutContainer, { children: [_jsx("p", { style: { fontSize: '1.h1rem', fontWeight: 'bold' }, children: 'Font' }), _jsx(TMDropDown, { label: SDKUI_Localizator.Size, dataSource: fontSizes, width: '150px', value: currentFontSize, onValueChanged: (e) => {
|
23
|
+
const [, forceUpdate] = useState(0); // Dummy state to force re-renders
|
24
|
+
const triggerUIUpdate = () => forceUpdate((prev) => prev + 1); // Increment dummy state to re-render
|
25
|
+
return (_jsxs(TMLayoutContainer, { children: [_jsx("p", { style: { fontSize: '1.h1rem', fontWeight: 'bold' }, children: 'Font' }), _jsx(TMDropDown, { label: SDKUI_Localizator.Size, dataSource: fontSizes, width: '150px', value: SDKUI_Globals.userSettings.themeSettings.fontSize, onValueChanged: (e) => {
|
28
26
|
let newpx = e.target.value;
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
27
|
+
SDKUI_Globals.userSettings.themeSettings.fontSize = newpx;
|
28
|
+
triggerUIUpdate();
|
29
|
+
} }), _jsx("p", { style: { fontSize: '1rem', fontWeight: 'bold', marginTop: '10px', marginBottom: '5px' }, children: 'Griglie' }), _jsx(TMCheckBox, { label: 'Mostra le linee che separano le righe', value: SDKUI_Globals.userSettings.themeSettings.gridSettings.showRowLines, onValueChanged: (newValue) => {
|
30
|
+
SDKUI_Globals.userSettings.themeSettings.gridSettings.showRowLines = newValue;
|
31
|
+
triggerUIUpdate();
|
32
|
+
} }), _jsx(TMCheckBox, { label: 'Mostra le linee che separano le colonne', value: SDKUI_Globals.userSettings.themeSettings.gridSettings.showColumnLines, onValueChanged: (newValue) => {
|
33
|
+
SDKUI_Globals.userSettings.themeSettings.gridSettings.showColumnLines = newValue;
|
34
|
+
triggerUIUpdate();
|
35
|
+
} }), _jsx(TMCheckBox, { label: 'Usa la scrollbar nativa', value: SDKUI_Globals.userSettings.themeSettings.gridSettings.useNativeScrollbar, onValueChanged: (newValue) => {
|
36
|
+
SDKUI_Globals.userSettings.themeSettings.gridSettings.useNativeScrollbar = newValue;
|
37
|
+
triggerUIUpdate();
|
38
|
+
} }), _jsx(TMButton, { elementStyle: { marginTop: '10px' }, caption: SDKUI_Localizator.Restore, showTooltip: false, onClick: () => {
|
39
|
+
SDKUI_Globals.userSettings.themeSettings.fontSize = FontSize.defaultFontSizeInPixel;
|
40
|
+
SDKUI_Globals.userSettings.themeSettings.gridSettings.showRowLines = 0;
|
41
|
+
SDKUI_Globals.userSettings.themeSettings.gridSettings.showColumnLines = 0;
|
42
|
+
SDKUI_Globals.userSettings.themeSettings.gridSettings.useNativeScrollbar = 1;
|
43
|
+
triggerUIUpdate();
|
42
44
|
} })] }));
|
43
45
|
};
|
44
46
|
export default SettingsAppearance;
|
@@ -1,15 +1,41 @@
|
|
1
|
-
import { InvoiceRetrieveFormats, OrderRetrieveFormats
|
1
|
+
import { InvoiceRetrieveFormats, OrderRetrieveFormats } from "@topconsultnpm/sdk-ts-beta";
|
2
|
+
export declare class UserSettings {
|
3
|
+
userID: number | undefined;
|
4
|
+
archiveID: string | undefined;
|
5
|
+
landingPage: string;
|
6
|
+
themeSettings: ThemeSettings;
|
7
|
+
searchSettings: SearchSettings2;
|
8
|
+
archivingSettings: ArchivingSettings;
|
9
|
+
fullTextSettings: FullTextSettings;
|
10
|
+
/** Load settings from local storage or other sources */
|
11
|
+
static LoadSettings(userID: number | undefined, archiveID: string | undefined): UserSettings;
|
12
|
+
/** Save settings to local storage or other sources */
|
13
|
+
static SaveSettings(settings: UserSettings): void;
|
14
|
+
}
|
15
|
+
export declare class DataGridSettings {
|
16
|
+
showColumnLines: number;
|
17
|
+
showRowLines: number;
|
18
|
+
rowAlternationEnabled: number;
|
19
|
+
useNativeScrollbar: number;
|
20
|
+
}
|
21
|
+
export declare class ThemeSettings {
|
22
|
+
fontSize: string;
|
23
|
+
gridSettings: DataGridSettings;
|
24
|
+
gutters: string;
|
25
|
+
}
|
26
|
+
export declare class SearchSettings2 {
|
27
|
+
invoiceRetrieveFormat: InvoiceRetrieveFormats;
|
28
|
+
orderRetrieveFormat: OrderRetrieveFormats;
|
29
|
+
mruTIDs: number[];
|
30
|
+
defaultTree: number;
|
31
|
+
previewThreshold: number;
|
32
|
+
}
|
33
|
+
export declare class ArchivingSettings {
|
34
|
+
mruTIDs: number[];
|
35
|
+
}
|
36
|
+
export declare class FullTextSettings {
|
37
|
+
mruTerms: string[];
|
38
|
+
}
|
2
39
|
export declare class SDKUI_Globals {
|
3
|
-
static
|
4
|
-
private static _dataGridShowRowLines;
|
5
|
-
private static _dataGridShowColumnLines;
|
6
|
-
private static _dataGridUseNativeScrollbar;
|
7
|
-
static get dataGridShowRowLines(): boolean | undefined;
|
8
|
-
static set dataGridShowRowLines(theDataGridShowRowLines: boolean | undefined);
|
9
|
-
static get dataGridShowColumnLines(): boolean | undefined;
|
10
|
-
static set dataGridShowColumnLines(theDataGridShowColumnLines: boolean | undefined);
|
11
|
-
static get dataGridUseNativeScrollbar(): boolean | undefined;
|
12
|
-
static set dataGridUseNativeScrollbar(theDataGridUseNativeScrollbar: boolean | undefined);
|
13
|
-
static invoiceRetrieveFormat: InvoiceRetrieveFormats | undefined;
|
14
|
-
static orderRetrieveFormat: OrderRetrieveFormats | undefined;
|
40
|
+
static userSettings: UserSettings;
|
15
41
|
}
|
@@ -1,8 +1,106 @@
|
|
1
|
+
import { InvoiceRetrieveFormats, LocalStorageService, OrderRetrieveFormats } from "@topconsultnpm/sdk-ts-beta";
|
2
|
+
import { FontSize } from "../utils/theme";
|
3
|
+
export class UserSettings {
|
4
|
+
constructor() {
|
5
|
+
this.userID = undefined;
|
6
|
+
this.archiveID = undefined;
|
7
|
+
this.landingPage = '';
|
8
|
+
this.themeSettings = new ThemeSettings();
|
9
|
+
this.searchSettings = new SearchSettings2();
|
10
|
+
this.archivingSettings = new ArchivingSettings();
|
11
|
+
this.fullTextSettings = new FullTextSettings();
|
12
|
+
}
|
13
|
+
/** Load settings from local storage or other sources */
|
14
|
+
static LoadSettings(userID, archiveID) {
|
15
|
+
if (!userID || !archiveID) {
|
16
|
+
throw new Error('User ID and Archive ID are required to load settings.');
|
17
|
+
}
|
18
|
+
// Load settings from local storage
|
19
|
+
const loadedSettings = LocalStorageService.getItem(`userSettings_${archiveID}_${userID}`);
|
20
|
+
// Merge loaded settings with default settings
|
21
|
+
const defaultSettings = new UserSettings();
|
22
|
+
const settings = Object.assign(defaultSettings, loadedSettings);
|
23
|
+
// Ensure userID and archiveID are set
|
24
|
+
settings.userID = userID;
|
25
|
+
settings.archiveID = archiveID;
|
26
|
+
document.documentElement.style.setProperty('--base-font-size', settings.themeSettings.fontSize);
|
27
|
+
// Wrap the settings object in a Proxy to intercept property updates
|
28
|
+
return createProxy(settings, UserSettings.SaveSettings);
|
29
|
+
}
|
30
|
+
/** Save settings to local storage or other sources */
|
31
|
+
static SaveSettings(settings) {
|
32
|
+
if (!settings.userID || !settings.archiveID) {
|
33
|
+
throw new Error('User ID and Archive ID are required to save settings.');
|
34
|
+
}
|
35
|
+
const defaultSettings = new UserSettings();
|
36
|
+
const filteredSettings = Object.fromEntries(Object.entries(settings).filter(([key, value]) => {
|
37
|
+
const defaultValue = defaultSettings[key];
|
38
|
+
return JSON.stringify(value) !== JSON.stringify(defaultValue);
|
39
|
+
}));
|
40
|
+
LocalStorageService.setItem(`userSettings_${settings.archiveID}_${settings.userID}`, JSON.stringify(filteredSettings));
|
41
|
+
}
|
42
|
+
}
|
43
|
+
export class DataGridSettings {
|
44
|
+
constructor() {
|
45
|
+
this.showColumnLines = 0;
|
46
|
+
this.showRowLines = 0;
|
47
|
+
this.rowAlternationEnabled = 0;
|
48
|
+
this.useNativeScrollbar = 1;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
export class ThemeSettings {
|
52
|
+
constructor() {
|
53
|
+
// theme: string | undefined; ...dark or light
|
54
|
+
this.fontSize = FontSize.defaultFontSizeInPixel;
|
55
|
+
this.gridSettings = new DataGridSettings();
|
56
|
+
this.gutters = '20px';
|
57
|
+
}
|
58
|
+
}
|
59
|
+
export class SearchSettings2 {
|
60
|
+
constructor() {
|
61
|
+
this.invoiceRetrieveFormat = InvoiceRetrieveFormats.ASW_PDF;
|
62
|
+
this.orderRetrieveFormat = OrderRetrieveFormats.ER_PDF;
|
63
|
+
this.mruTIDs = [];
|
64
|
+
this.defaultTree = -1;
|
65
|
+
this.previewThreshold = 500000;
|
66
|
+
// filterPageSettings?: FilterPageSettings;
|
67
|
+
// resultPageSettings?: ResultPageSettings;
|
68
|
+
// dcmtPageSettings?: DcmtPageSettings;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
export class ArchivingSettings {
|
72
|
+
constructor() {
|
73
|
+
this.mruTIDs = [];
|
74
|
+
}
|
75
|
+
}
|
76
|
+
export class FullTextSettings {
|
77
|
+
constructor() {
|
78
|
+
this.mruTerms = [];
|
79
|
+
}
|
80
|
+
}
|
1
81
|
export class SDKUI_Globals {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
82
|
+
}
|
83
|
+
SDKUI_Globals.userSettings = new UserSettings();
|
84
|
+
function createProxy(obj, saveCallback, rootObj) {
|
85
|
+
const root = rootObj || obj; // Use the provided root object or default to the current object
|
86
|
+
return new Proxy(obj, {
|
87
|
+
set(target, prop, value) {
|
88
|
+
target[prop] = value;
|
89
|
+
// Automatically save the root object
|
90
|
+
saveCallback(root);
|
91
|
+
// Handle specific property (fontSize) updates
|
92
|
+
if (prop === 'fontSize' && root instanceof UserSettings) {
|
93
|
+
document.documentElement.style.setProperty('--base-font-size', value);
|
94
|
+
}
|
95
|
+
return true;
|
96
|
+
},
|
97
|
+
get(target, prop) {
|
98
|
+
const value = target[prop];
|
99
|
+
// Recursively wrap nested objects
|
100
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
101
|
+
return createProxy(value, saveCallback, root);
|
102
|
+
}
|
103
|
+
return value;
|
104
|
+
}
|
105
|
+
});
|
8
106
|
}
|
@@ -35,8 +35,8 @@ export function useDcmtOperations() {
|
|
35
35
|
abortController = new AbortController();
|
36
36
|
const rfo = new RetrieveFileOptions();
|
37
37
|
rfo.retrieveReason = DcmtOpers.ShowFile;
|
38
|
-
rfo.invoiceRetrieveFormat = SDKUI_Globals.invoiceRetrieveFormat;
|
39
|
-
rfo.orderRetrieveFormat = SDKUI_Globals.orderRetrieveFormat;
|
38
|
+
rfo.invoiceRetrieveFormat = SDKUI_Globals.userSettings?.searchSettings?.invoiceRetrieveFormat;
|
39
|
+
rfo.orderRetrieveFormat = SDKUI_Globals.userSettings?.searchSettings?.orderRetrieveFormat;
|
40
40
|
let result = [];
|
41
41
|
setWaitPanelMaxValuePrimary(inputDcmts.length);
|
42
42
|
let firstBlock = true;
|
@@ -4,7 +4,7 @@ export declare class PlatformObjectService {
|
|
4
4
|
static readonly retrieveAllAsync: (objClass: ObjectClasses, jobType?: JobTypes) => Promise<DcmtTypeDescriptor[] | import("@topconsultnpm/sdk-ts-beta").UserDescriptor[] | import("@topconsultnpm/sdk-ts-beta").FEDistillerJobDescriptor[] | import("@topconsultnpm/sdk-ts-beta").AreaDescriptor[] | import("@topconsultnpm/sdk-ts-beta").DataListDescriptor[] | import("@topconsultnpm/sdk-ts-beta").DiskDescriptor[] | import("@topconsultnpm/sdk-ts-beta").GroupDescriptor[] | import("@topconsultnpm/sdk-ts-beta").LDAPDescriptor[] | import("@topconsultnpm/sdk-ts-beta").NumeratorDescriptor[] | import("@topconsultnpm/sdk-ts-beta").SignCertDescriptor[] | import("@topconsultnpm/sdk-ts-beta").SignServerDescriptor[] | import("@topconsultnpm/sdk-ts-beta").TreeDescriptor[] | import("@topconsultnpm/sdk-ts-beta").TSADescriptor[] | ProcessDescriptor[] | import("@topconsultnpm/sdk-ts-beta").TaskDescriptor[] | undefined>;
|
5
5
|
private static readonly loadCacheForJobAsync;
|
6
6
|
private static readonly retrieveAdminJobAsync;
|
7
|
-
static readonly retrieveAdminAsync: (objClass: ObjectClasses, jobType: JobTypes, id: number) => Promise
|
7
|
+
static readonly retrieveAdminAsync: (objClass: ObjectClasses, jobType: JobTypes, id: number) => Promise<-1 | DcmtTypeDescriptor | import("@topconsultnpm/sdk-ts-beta").SavedQueryDescriptor | import("@topconsultnpm/sdk-ts-beta").DataListDescriptor | import("@topconsultnpm/sdk-ts-beta").UserDescriptor | import("@topconsultnpm/sdk-ts-beta").BarcodeArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").BatchUpdaterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoDoganaleJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoDoganalePlusJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoFiscaleQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CassettoFiscaleSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").CheckSequenceJobDescriptor | import("@topconsultnpm/sdk-ts-beta").COSCheckerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtConverterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtDeleterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtNoteJobDescriptor | import("@topconsultnpm/sdk-ts-beta").DcmtPrinterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEAttacherJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FECreatorTxtJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEDetacherJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEDistillerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FESenderWsJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FESplitterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FEValidatorJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileCheckerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileExecJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileExportJobDescriptor | import("@topconsultnpm/sdk-ts-beta").FileMoverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").LexJobDescriptor | import("@topconsultnpm/sdk-ts-beta").LinkerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MailArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MailQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MailSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").MigrationJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdDCreatorJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PDFArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdVArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdVQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PdVSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PeppolQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PeppolSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PostelQueryJobDescriptor | import("@topconsultnpm/sdk-ts-beta").PostelSenderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").ReplicatorJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPAlignerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPBarcodeJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPDataReaderJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SAPDataWriterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SignerJobDescriptor | import("@topconsultnpm/sdk-ts-beta").SpoolArchiverJobDescriptor | import("@topconsultnpm/sdk-ts-beta").UpdaterJobDescriptor | import("@topconsultnpm/sdk-ts-beta").AreaDescriptor | import("@topconsultnpm/sdk-ts-beta").BasketTypeDescriptor | import("@topconsultnpm/sdk-ts-beta").DiskDescriptor | import("@topconsultnpm/sdk-ts-beta").GroupDescriptor | import("@topconsultnpm/sdk-ts-beta").LDAPDescriptor | import("@topconsultnpm/sdk-ts-beta").NumeratorDescriptor | import("@topconsultnpm/sdk-ts-beta").SignCertDescriptor | import("@topconsultnpm/sdk-ts-beta").SignServerDescriptor | import("@topconsultnpm/sdk-ts-beta").TreeDescriptor | import("@topconsultnpm/sdk-ts-beta").TSADescriptor | ProcessDescriptor | import("@topconsultnpm/sdk-ts-beta").TaskDescriptor | import("@topconsultnpm/sdk-ts-beta").WorkingGroupDescriptor | undefined>;
|
8
8
|
private static readonly updateJobAsync;
|
9
9
|
static readonly updateAsync: (objClass: ObjectClasses, jobType: JobTypes, d: any) => Promise<number | undefined>;
|
10
10
|
private static readonly createJobAsync;
|