@topconsultnpm/sdkui-react-beta 6.17.28 → 6.17.29

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.
@@ -13,16 +13,22 @@ import TMChooserForm from '../forms/TMChooserForm';
13
13
  import TMSpinner from '../base/TMSpinner';
14
14
  const TMMetadataChooser = ({ tmSession, dataSource, showEditButton = true, buttons = [], disabled, validationItems, getColorIndex, showCompleteMetadataName, qdShowOnlySelectItems, borderRadius = '4px', fontSize = FontSize.defaultFontSize, backgroundColor, openEditorOnSummaryClick, showBorder = true, showId = false, elementStyle, allowMultipleSelection, allowSysMetadata, showSysMetadataDirectly, value, values, isModifiedWhen, tids, label, width, height, showClearButton, qd, placeHolder, filterMetadata, onValueChanged }) => {
15
15
  const [showChooser, setShowChooser] = useState(false);
16
- const renderTemplate = () => {
16
+ const renderTemplate = useMemo(() => {
17
17
  return (_jsxs(StyledDivHorizontal, { style: { width: 'max-content', height: '100%' }, children: [values && _jsx(TMMidViewer, { tmSession: tmSession, tid_mid: values[0], showIcon: true, showId: showId, showCompleteName: showCompleteMetadataName }), values && values.length > 1 && _jsx("p", { style: { marginLeft: '10px' }, children: `(+${values.length - 1} ${values.length == 2 ? 'altro' : 'altri'})` }), (values == undefined || values.length == 0) && _jsx("p", { children: placeHolder })] }));
18
- };
19
- return (_jsxs(_Fragment, { children: [_jsx(TMSummary, { label: label, width: width, height: height, disabled: disabled, validationItems: validationItems, backgroundColor: backgroundColor, buttons: buttons, placeHolder: placeHolder, fontSize: fontSize, showBorder: showBorder, borderRadius: borderRadius, hasValue: values && values.length > 0, showClearButton: showClearButton, showEditButton: showEditButton, iconEditButton: _jsx(IconSearch, { fontSize: 16 }), openEditorOnSummaryClick: openEditorOnSummaryClick, onEditorClick: () => !disabled && setShowChooser(true), elementStyle: elementStyle, isModifiedWhen: isModifiedWhen, template: renderTemplate(), onClearClick: showClearButton ? () => { onValueChanged?.([]); } : undefined }), showChooser &&
18
+ }, [values, tmSession, showId, showCompleteMetadataName, placeHolder]);
19
+ return (_jsxs(_Fragment, { children: [_jsx(TMSummary, { label: label, width: width, height: height, disabled: disabled, validationItems: validationItems, backgroundColor: backgroundColor, buttons: buttons, placeHolder: placeHolder, fontSize: fontSize, showBorder: showBorder, borderRadius: borderRadius, hasValue: values && values.length > 0, showClearButton: showClearButton, showEditButton: showEditButton, iconEditButton: _jsx(IconSearch, { fontSize: 16 }), openEditorOnSummaryClick: openEditorOnSummaryClick, onEditorClick: () => !disabled && setShowChooser(true), elementStyle: elementStyle, isModifiedWhen: isModifiedWhen, template: renderTemplate, onClearClick: showClearButton ? () => { onValueChanged?.([]); } : undefined }), showChooser &&
20
20
  _jsx(TMMetadataChooserForm, { tmSession: tmSession, allowMultipleSelection: allowMultipleSelection, height: '500px', width: '600px', allowSysMetadata: allowSysMetadata, showSysMetadataDirectly: showSysMetadataDirectly, getColorIndex: getColorIndex, dataSource: dataSource, tids: tids, qd: qd, qdShowOnlySelectItems: qdShowOnlySelectItems, filterMetadata: filterMetadata, selectedIDs: values, onClose: () => setShowChooser(false), onChoose: (tid_mids) => { onValueChanged?.(tid_mids); } })] }));
21
21
  };
22
22
  export default TMMetadataChooser;
23
23
  export const TMMetadataChooserForm = ({ tmSession, tids, qd, filterMetadata, qdShowOnlySelectItems, selectedIDs, dataSource, allowMultipleSelection, allowSysMetadata = true, showSysMetadataDirectly, width, height, getColorIndex, onClose, onChoose }) => {
24
- const [showSysMetadata, setShowSysMetadata] = useState((allowSysMetadata && selectedIDs != undefined && selectedIDs.findIndex(o => o.mid < 150) >= 0) ||
25
- (showSysMetadataDirectly != undefined && showSysMetadataDirectly));
24
+ const getInitialShowSysMetadata = () => {
25
+ if (showSysMetadataDirectly)
26
+ return true;
27
+ if (!allowSysMetadata || !selectedIDs)
28
+ return false;
29
+ return selectedIDs.some(o => o.mid < 150);
30
+ };
31
+ const [showSysMetadata, setShowSysMetadata] = useState(getInitialShowSysMetadata());
26
32
  const [hasSysMetadata, setHasSysMetadata] = useState(false);
27
33
  const [dcmtTypes, setDcmtTypes] = useState([]);
28
34
  const getItems = useCallback(async (refreshCache) => {
@@ -31,71 +37,77 @@ export const TMMetadataChooserForm = ({ tmSession, tids, qd, filterMetadata, qdS
31
37
  let checkProps = qd != undefined ? dataSource != undefined || tids != undefined : dataSource != undefined && tids != undefined;
32
38
  if (checkProps)
33
39
  throw Error('Le props qd | tids | dataSource devono essere in alternativa');
34
- if (qd) {
35
- let tids = getTIDsByQd(qd);
36
- let inputTIDs = tids.map((item) => item.tid);
37
- TMSpinner.show({ description: `${SDKUI_Localizator.Loading} - ${SDK_Localizator.DcmtType} ...` });
38
- let dtds = await DcmtTypeListCacheService.GetFromTIDsAsync(inputTIDs, true, tmSession, false, refreshCache);
39
- TMSpinner.hide();
40
- for (let i = 0; i < dtds.length; i++) {
41
- const dtd = new DcmtTypeDescriptor();
42
- dtd.init({ ...dtds[i] });
43
- const alias = tids?.[i].alias ?? '';
44
- dtd.customData2 = alias;
45
- if (!qdShowOnlySelectItems) {
46
- dtd.metadata?.forEach((md) => {
47
- md.customData1 = dtd.id;
48
- md.customData2 = alias;
49
- }); //getDisplayAlias(SDK_Globals.useLocalizedName ? dtd.nameLoc : dtd.name, alias)
40
+ try {
41
+ if (qd) {
42
+ let tids = getTIDsByQd(qd);
43
+ let inputTIDs = tids.map((item) => item.tid);
44
+ TMSpinner.show({ description: `${SDKUI_Localizator.Loading} - ${SDK_Localizator.DcmtType} ...` });
45
+ let dtds = await DcmtTypeListCacheService.GetFromTIDsAsync(inputTIDs, true, tmSession, false, refreshCache);
46
+ for (let i = 0; i < dtds.length; i++) {
47
+ const dtd = new DcmtTypeDescriptor();
48
+ dtd.init({ ...dtds[i] });
49
+ const alias = tids?.[i].alias ?? '';
50
+ dtd.customData2 = alias;
51
+ if (!qdShowOnlySelectItems) {
52
+ dtd.metadata?.forEach((md) => {
53
+ md.customData1 = dtd.id;
54
+ md.customData2 = alias;
55
+ });
56
+ }
57
+ else {
58
+ let newMetadata = dtd.metadata?.filter(o => qd.select?.some(s => s.tid == dtd.id && s.mid == o.id && ((s.alias ?? '') == alias)));
59
+ newMetadata?.forEach((md) => {
60
+ md.customData1 = dtd.id;
61
+ md.customData2 = alias;
62
+ });
63
+ }
64
+ let mds = filterMetadata ? dtd.metadata?.filter(filterMetadata) : dtd.metadata;
65
+ dtdList.push({ ...dtd, metadata: mds });
50
66
  }
51
- else {
52
- let newMetadata = dtd.metadata?.filter(o => qd.select?.some(s => s.tid == dtd.id && s.mid == o.id && ((s.alias ?? '') == alias)));
53
- newMetadata?.forEach((md) => {
54
- md.customData1 = dtd.id;
55
- md.customData2 = alias;
56
- });
57
- dtd.metadata = newMetadata;
67
+ }
68
+ else if (tids) {
69
+ if (tids.length <= 0)
70
+ return [];
71
+ if (refreshCache)
72
+ TMSpinner.show({ description: `${SDKUI_Localizator.Loading} - ${SDK_Localizator.DcmtType} ...` });
73
+ // Chiamate parallele mantenendo l'ordine
74
+ const promises = tids.map(tid => tid ? DcmtTypeListCacheService.GetAsync(tid, true, tmSession, true, refreshCache) : Promise.resolve(null));
75
+ const dtds = await Promise.all(promises);
76
+ for (let i = 0; i < dtds.length; i++) {
77
+ const dtd = dtds[i];
78
+ if (!dtd) {
79
+ if (tids[i])
80
+ throw new Error(`TID sconosciuto (${tids[i]})`);
81
+ continue;
82
+ }
83
+ let mds = filterMetadata ? dtd.metadata?.filter(filterMetadata) : dtd.metadata;
84
+ mds?.forEach((md) => { md.customData1 = dtd?.id; });
85
+ dtdList.push({ ...dtd, metadata: mds });
58
86
  }
59
- dtdList.push(dtd);
60
87
  }
61
- }
62
- else if (tids) {
63
- if (tids.length <= 0)
64
- return [];
65
- if (refreshCache)
66
- TMSpinner.show({ description: `${SDKUI_Localizator.Loading} - ${SDK_Localizator.DcmtType} ...` });
67
- for (const tid of tids) {
68
- if (!tid)
88
+ for (const dtd of dtdList) {
89
+ if (!dtd.metadata)
69
90
  continue;
70
- let dtd = await DcmtTypeListCacheService.GetAsync(tid, true, tmSession, true, refreshCache);
71
- if (!dtd)
72
- throw new Error(`TID sconosciuto (${tid})`);
73
- let mds = filterMetadata ? dtd.metadata?.filter(filterMetadata) : dtd.metadata;
74
- mds?.forEach((md) => { md.customData1 = dtd?.id; });
75
- dtdList.push({ ...dtd, metadata: mds });
91
+ for (const md of dtd.metadata)
92
+ metadata.push(md);
76
93
  }
77
- if (refreshCache)
78
- TMSpinner.hide();
94
+ setDcmtTypes(dtdList);
95
+ setHasSysMetadata(allowSysMetadata && metadata.findIndex(md => md.isSystem == 1) >= 0);
96
+ return showSysMetadata ? metadata : metadata.filter(o => o.isSystem != 1);
79
97
  }
80
- for (const dtd of dtdList) {
81
- if (!dtd.metadata)
82
- continue;
83
- for (const md of dtd.metadata)
84
- metadata.push(md);
98
+ finally {
99
+ TMSpinner.hide();
85
100
  }
86
- setDcmtTypes(dtdList);
87
- setHasSysMetadata(allowSysMetadata && metadata.findIndex(md => md.isSystem == 1) >= 0);
88
- return showSysMetadata ? metadata : metadata.filter(o => o.isSystem != 1);
89
- }, [showSysMetadata]);
90
- const cellRenderIcon = (data) => {
101
+ }, [showSysMetadata, qd, tids, dataSource, filterMetadata, qdShowOnlySelectItems, allowSysMetadata, tmSession]);
102
+ const cellRenderIcon = useCallback((data) => {
91
103
  let md = data.data;
92
104
  return (_jsx(TMMetadataIcon, { tid: md.customData1 ?? 0, md: md }));
93
- };
94
- const groupCellRender = (data) => {
105
+ }, []);
106
+ const groupCellRender = useCallback((data) => {
95
107
  let tid_alias = JSON.parse(data.value);
96
108
  let dtd = dcmtTypes?.find(o => o.id == tid_alias.tid);
97
109
  return _jsxs(StyledDxGridGroupHeader, { "$backgroundColor": getColorIndex?.(tid_alias), children: [_jsx(TMDcmtTypeIcon, { dtd: dtd }), _jsx("p", { children: getDisplayAlias(SDK_Globals.useLocalizedName ? dtd?.nameLoc : dtd?.name, tid_alias.alias) }), data.summaryItems && data.summaryItems.length > 0 && _jsx(StyledBadge, { "$backgroundColor": TMColors.info, children: data.summaryItems[0].value })] });
98
- };
110
+ }, [dcmtTypes, getColorIndex]);
99
111
  const dataColumns = useMemo(() => {
100
112
  return [
101
113
  { dataField: 'isSystem', visible: false },
@@ -108,10 +120,15 @@ export const TMMetadataChooserForm = ({ tmSession, tids, qd, filterMetadata, qdS
108
120
  }
109
121
  ];
110
122
  }, [dcmtTypes, groupCellRender]);
111
- const renderSummaryItems = { groupItems: [{ column: 'id', summaryType: 'count' }] };
123
+ const renderSummaryItems = useMemo(() => ({
124
+ groupItems: [{ column: 'id', summaryType: 'count' }]
125
+ }), []);
112
126
  const renderCustomButtons = useCallback(() => {
113
127
  return (_jsx(StyledDivHorizontal, { children: hasSysMetadata && _jsx(TMButton, { caption: SDKUI_Localizator.ShowHideMetadataSystemDesc, icon: _jsx(IconSettings, {}), btnStyle: 'toolbar', fontSize: '1.3rem', onClick: () => setShowSysMetadata(!showSysMetadata) }) }));
114
128
  }, [hasSysMetadata, showSysMetadata]);
115
129
  const convertID = useCallback((md) => { return { tid: md.customData1, mid: md.id, aliasTID: md.customData2 }; }, []);
116
- return (_jsx(TMChooserForm, { title: SDK_Localizator.Metadatas, allowMultipleSelection: allowMultipleSelection, allowSorting: false, allowGrouping: dcmtTypes.length > 1, width: width, height: height, selectedIDs: selectedIDs?.map((item) => item.mid), convertID: convertID, cellRenderIcon: cellRenderIcon, cellRenderNameAndDesc: (data) => { return _jsx("p", { style: { textAlign: 'left', color: data.data.isRequired == 1 ? 'red' : '' }, children: data.value }); }, dataSource: dataSource, getItems: getItems, customButtons: renderCustomButtons(), columns: dataColumns, summaryItems: renderSummaryItems, onClose: onClose, onChoose: (IDs) => { onChoose?.(IDs); } }));
130
+ const cellRenderNameAndDesc = useCallback((data) => {
131
+ return _jsx("p", { style: { textAlign: 'left', color: data.data.isRequired == 1 ? 'red' : '' }, children: data.value });
132
+ }, []);
133
+ return (_jsx(TMChooserForm, { title: SDK_Localizator.Metadatas, allowMultipleSelection: allowMultipleSelection, allowSorting: false, allowGrouping: dcmtTypes.length > 1, width: width, height: height, selectedIDs: selectedIDs?.map((item) => item.mid), convertID: convertID, cellRenderIcon: cellRenderIcon, cellRenderNameAndDesc: cellRenderNameAndDesc, dataSource: dataSource, getItems: getItems, customButtons: renderCustomButtons(), columns: dataColumns, summaryItems: renderSummaryItems, onClose: onClose, onChoose: (IDs) => { onChoose?.(IDs); } }));
117
134
  };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { LayoutModes, TaskDescriptor } from '@topconsultnpm/sdk-ts-beta';
2
+ import { LayoutModes, SearchResultDescriptor, TaskDescriptor } from '@topconsultnpm/sdk-ts-beta';
3
3
  import { DcmtInfo, FormModes, TaskContext } from '../../../ts';
4
4
  interface ITMDcmtFormProps {
5
5
  TID?: number;
@@ -23,7 +23,7 @@ interface ITMDcmtFormProps {
23
23
  onNext?: () => void;
24
24
  onPrev?: () => void;
25
25
  onClose?: () => void;
26
- onSavedAsyncCallback?: (tid: number | undefined, did: number | undefined) => Promise<void>;
26
+ onSavedAsyncCallback?: (tid: number | undefined, did: number | undefined, metadataResult?: SearchResultDescriptor | null) => Promise<void>;
27
27
  onSaveRecents?: (TIDs: number[]) => void;
28
28
  onWFOperationCompleted?: () => Promise<void>;
29
29
  onTaskCompleted?: (task: TaskDescriptor) => void;
@@ -92,7 +92,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
92
92
  TMSpinner.show({ description: 'Loading Metadata...' });
93
93
  let getMetadataResult;
94
94
  if (layoutMode === LayoutModes.Update)
95
- await SDK_Globals.tmSession?.NewSearchEngine().GetMetadataAsync(TID, DID, true);
95
+ getMetadataResult = await SDK_Globals.tmSession?.NewSearchEngine().GetMetadataAsync(TID, DID, true);
96
96
  let dtd = await DcmtTypeListCacheService.GetWithNotGrantedAsync(TID, DID, getMetadataResult);
97
97
  setFromDTD(dtd);
98
98
  if (layoutMode === LayoutModes.Update || (layoutMode === LayoutModes.Ark && DID)) {
@@ -412,9 +412,52 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
412
412
  }
413
413
  }
414
414
  await ue.UpdateAsync();
415
- await onSavedAsyncCallback?.(TID, DID);
416
- await setMetadataListAsync(fromDTD?.metadata ?? []);
417
- ShowAlert({ mode: 'success', title: 'Form di documento', message: 'Le modifiche sono state salvate con successo', duration: 3000 });
415
+ // Aggiorna lo stato locale immediatamente dopo il salvataggio riuscito
416
+ // Questo garantisce che isModified diventi false anche se il reload fallisce
417
+ setFormDataOrig(structuredClone(formData));
418
+ // Tenta di ottenere i metadati aggiornati
419
+ let metadataResult = undefined;
420
+ let hasGetMetadataError = false;
421
+ try {
422
+ metadataResult = await SDK_Globals.tmSession?.NewSearchEngine().GetMetadataAsync(TID, DID, true);
423
+ }
424
+ catch (metadataError) {
425
+ hasGetMetadataError = true;
426
+ // Estrai ErrorCode dal campo detail se disponibile
427
+ let errorCode = undefined;
428
+ if (metadataError?.isApiException && metadataError?.response?.detail) {
429
+ try {
430
+ const detailObj = JSON.parse(metadataError.response.detail);
431
+ errorCode = detailObj?.ErrorCode;
432
+ }
433
+ catch (parseError) {
434
+ console.log("Impossibile parsare il detail dell'eccezione:", parseError);
435
+ }
436
+ }
437
+ // Se ErrorCode è -5, mostra messaggio personalizzato, altrimenti mostra l'eccezione originale
438
+ if (errorCode === -5) {
439
+ TMMessageBoxManager.show({
440
+ message: SDKUI_Localizator.DcmtOutOfView,
441
+ buttons: [ButtonNames.OK],
442
+ });
443
+ }
444
+ else {
445
+ TMExceptionBoxManager.show({ exception: metadataError });
446
+ }
447
+ // Usa null per indicare al callback che c'è stato un errore e non deve ritentare
448
+ metadataResult = null;
449
+ }
450
+ // Esegui sempre il callback:
451
+ // - Se metadataResult è un oggetto: refresh normale
452
+ // - Se metadataResult è null: GetMetadataAsync fallito, rimuove il documento dalla griglia senza ritentare
453
+ // - Se metadataResult è undefined: nessun parametro passato, il callback può decidere cosa fare
454
+ await onSavedAsyncCallback?.(TID, DID, metadataResult === null ? null : metadataResult);
455
+ // Mostra messaggio di successo solo se non ci sono stati errori critici
456
+ if (!hasGetMetadataError) {
457
+ if (metadataResult && metadataResult !== null)
458
+ await setMetadataListAsync(fromDTD?.metadata ?? [], metadataResult);
459
+ ShowAlert({ mode: 'success', title: 'Form di documento', message: 'Le modifiche sono state salvate con successo', duration: 3000 });
460
+ }
418
461
  }
419
462
  catch (e) {
420
463
  TMExceptionBoxManager.show({ exception: e });
@@ -463,7 +506,7 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
463
506
  else {
464
507
  ae.ArchivingFile = dcmtFile;
465
508
  }
466
- let res = await ae.ArchiveAsync(abortControllerLocal.signal, (pd) => {
509
+ let newDID = await ae.ArchiveAsync(abortControllerLocal.signal, (pd) => {
467
510
  if (firstBlock) {
468
511
  maxFileSize = pd.ProgressBarMaximum ?? 0;
469
512
  setWaitPanelMaxValueSecondaryLocal(maxFileSize);
@@ -478,8 +521,8 @@ const TMDcmtForm = ({ showHeader = true, onSaveRecents, layoutMode = LayoutModes
478
521
  firstBlock = true;
479
522
  }
480
523
  });
481
- await onSavedAsyncCallback?.(ae.TID, res);
482
- await setMetadataListAsync(fromDTD?.metadata ?? [], undefined, true, res);
524
+ await onSavedAsyncCallback?.(ae.TID, newDID);
525
+ await setMetadataListAsync(fromDTD?.metadata ?? [], undefined, true, newDID);
483
526
  resetHandler();
484
527
  let newMruTIDS = updateMruTids(SDKUI_Globals.userSettings.archivingSettings.mruTIDs, TID);
485
528
  SDKUI_Globals.userSettings.archivingSettings.mruTIDs = newMruTIDS;
@@ -297,7 +297,7 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
297
297
  }
298
298
  onSelectedTIDChanged?.(e.fromTID);
299
299
  };
300
- const refreshFocusedDataRowAsync = async (tid, did, refreshUI) => {
300
+ const refreshFocusedDataRowAsync = async (tid, did, refreshUI, metadataResult) => {
301
301
  if (!tid || !did)
302
302
  return;
303
303
  let currentResult = searchResults.length > 1 ? selectedSearchResult : searchResults[0];
@@ -307,8 +307,46 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
307
307
  let currentResultColIndexDID = currentResult?.dtdResult?.columns?.findIndex(o => o.caption == "DID");
308
308
  if (currentResultColIndexDID == undefined)
309
309
  return;
310
- let newDcmt = await SDK_Globals.tmSession?.NewSearchEngine().GetMetadataAsync(tid, did, true);
311
- let newDcmtRow = newDcmt?.dtdResult?.rows?.[0] ?? [];
310
+ let newDcmt;
311
+ // Se metadataResult è null (non undefined!), significa che GetMetadataAsync è già fallito
312
+ // nel form e l'errore è già stato mostrato all'utente, quindi non ritentiamo
313
+ if (metadataResult === null) {
314
+ newDcmt = undefined;
315
+ }
316
+ // Se metadataResult è un oggetto valido, usiamolo
317
+ else if (metadataResult !== undefined) {
318
+ newDcmt = metadataResult;
319
+ }
320
+ // Altrimenti (metadataResult === undefined), tentiamo di ottenerlo
321
+ else {
322
+ try {
323
+ newDcmt = await SDK_Globals.tmSession?.NewSearchEngine().GetMetadataAsync(tid, did, true);
324
+ }
325
+ catch (error) {
326
+ newDcmt = undefined;
327
+ }
328
+ }
329
+ // Se newDcmt è undefined o non ha righe, significa che il documento non esiste più
330
+ // o non è più accessibile. Rimuovi la riga dal risultato della ricerca
331
+ if (!newDcmt || !newDcmt.dtdResult?.rows?.[0]) {
332
+ if (currentResult?.dtdResult?.rows) {
333
+ // IMPORTANTE: Modifica direttamente l'oggetto originale per mantenere la sincronizzazione
334
+ currentResult.dtdResult.rows = currentResult.dtdResult.rows.filter((row) => !(row[currentResultColIndexTID] == tid?.toString() && row[currentResultColIndexDID] == did?.toString()));
335
+ currentResult.dcmtsReturned = currentResult.dtdResult.rows.length;
336
+ currentResult.dcmtsFound = Math.max(0, (currentResult.dcmtsFound ?? 0) - 1);
337
+ // Se il documento rimosso era quello focalizzato, resetta il focus
338
+ if (focusedItem?.TID === tid && focusedItem?.DID === did) {
339
+ setFocusedItem(undefined);
340
+ setSelectedItems([]);
341
+ }
342
+ }
343
+ // IMPORTANTE: forza l'aggiornamento della griglia
344
+ if (refreshUI)
345
+ setLastUpdateSearchTime(new Date(Date.now()));
346
+ return;
347
+ }
348
+ // Se il documento esiste, aggiorna i valori come prima
349
+ let newDcmtRow = newDcmt.dtdResult.rows[0];
312
350
  let currentDcmtRow = currentResult?.dtdResult?.rows?.filter((row) => row[currentResultColIndexTID] == tid?.toString() && row[currentResultColIndexDID] == did?.toString()) ?? [];
313
351
  for (const row of currentDcmtRow) {
314
352
  let mids = currentResult?.selectMIDs ?? [];
@@ -478,7 +516,9 @@ const TMSearchResult = ({ context = SearchResultContext.METADATA_SEARCH, isVisib
478
516
  :
479
517
  _jsx(TMPanelManagerProvider, { panels: initialPanels, initialVisibility: allInitialPanelVisibility, defaultDimensions: initialPanelDimensions, initialDimensions: initialPanelDimensions, initialMobilePanelId: 'tmSearchResult', children: _jsx(TMPanelManagerContainer, { panels: initialPanels, direction: "horizontal", parentId: groupId, showToolbar: showSearchResultSidebar }) }) }) }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDetails, children: isOpenDetails && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, isForMaster: false, inputDcmts: getSelectionDcmtInfo(), allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenDetails(false) }) }), _jsxs(StyledMultiViewPanel, { "$isVisible": isOpenMaster, children: [isOpenMaster && _jsx(TMMasterDetailDcmts, { deviceType: deviceType, inputDcmts: getSelectionDcmtInfo(), isForMaster: true, allowNavigation: focusedItem && selectedItems.length <= 0, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onBack: () => setIsOpenMaster(false), appendMasterDcmts: handleAddItem }), secondaryMasterDcmts.length > 0 && secondaryMasterDcmts.map((dcmt, index) => {
480
518
  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}`));
481
- })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem?.TID, DID: focusedItem?.DID, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: async (tid, did) => { await refreshFocusedDataRowAsync(tid, did, true); }, onOpenS4TViewerRequest: onOpenS4TViewerRequest }) })] }));
519
+ })] }), _jsx(StyledMultiViewPanel, { "$isVisible": isOpenDcmtForm, children: isOpenDcmtForm && _jsx(TMDcmtForm, { isModal: openDcmtFormAsModal || (dcmtFormLayoutMode === LayoutModes.Ark && focusedItem?.DID), titleModal: fromDTD?.name ?? '', TID: focusedItem?.TID, DID: focusedItem?.DID, layoutMode: dcmtFormLayoutMode, count: visibleItems.length, itemIndex: visibleItems.findIndex(o => o.rowIndex === focusedItem?.rowIndex) + 1, canNext: canNavigateHandler('next'), canPrev: canNavigateHandler('prev'), onNext: () => onNavigateHandler('next'), onPrev: () => onNavigateHandler('prev'), onClose: () => { setIsOpenDcmtForm(false); }, onWFOperationCompleted: onWFOperationCompleted, onTaskCreateRequest: onTaskCreateRequest, onSavedAsyncCallback: async (tid, did, metadataResult) => {
520
+ await refreshFocusedDataRowAsync(tid, did, true, metadataResult);
521
+ }, onOpenS4TViewerRequest: onOpenS4TViewerRequest }) })] }));
482
522
  };
483
523
  export default TMSearchResult;
484
524
  const renderDcmtIcon = (cellData, onDownloadDcmtsAsync, openInOffice) => _jsx(TMDcmtIcon, { tid: cellData.data.TID, did: cellData.data.DID, fileExtension: cellData.data.FILEEXT, fileCount: cellData.data.FILECOUNT, isLexProt: cellData.data.IsLexProt, isMail: cellData.data.ISMAIL, isShared: cellData.data.ISSHARED, isSigned: cellData.data.ISSIGNED, downloadMode: 'openInNewWindow', onDownloadDcmtsAsync: onDownloadDcmtsAsync, openInOffice: openInOffice });
@@ -743,7 +743,7 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDis
743
743
  _jsxs(StyledRowItem, { children: [_jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.Add, onClick: onAdd_SelectItem }), dcmtTypesList.length == 1
744
744
  ? _jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.AddAlls, onClick: () => { onAddAll_SelectItem(qdTIDs[0]); } })
745
745
  : _jsx(TMQdDropDownMenu, { backgroundColor: 'white', borderRadius: '3px', content: _jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.AddAlls }), items: qdTIDs.map((tid_alias) => ({ text: `${getDisplayAlias(getDcmtTypeName(tid_alias.tid), tid_alias.alias)}`, onClick: () => { onAddAll_SelectItem(tid_alias); } })) })] }), formData?.select?.map((si, index) => {
746
- return (_jsxs(StyledRowItem, { onDragEnd: dragEnd, onDragOver: dragOver, onDrop: (e) => dropSelect(e, si), children: [!isReadOnly && _jsx(StyledDraggableDiv, { draggable: true, onDragStart: (e) => dragStart(e, si), children: _jsx(IconDraggabledots, { fontSize: 15, color: TMColors.button_icon }) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconClear, { color: TMColors.button_icon }), caption: SDKUI_Localizator.Remove, onClick: () => onRemove_SelectItem(index) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconAddCircleOutline, { color: TMColors.button_icon }), caption: SDKUI_Localizator.AddBelow, onClick: () => onAdd_SelectItem(index + 1) }), !isReadOnly && _jsx(TMQdDropDownMenu, { content: _jsx(TMTooltip, { content: SDK_Localizator.toCaseWord(SDKUI_Localizator.OneMore), children: _jsx(IconDotsVerticalCircleOutline, { color: TMColors.button_icon }) }), items: getSelectMenuItems(index) }), (!isReadOnly || (si.function && si.function != QueryFunctions.None)) && _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, color: 'green', borderRadius: borderRadius, content: _jsx(StyledItemWrapper, { children: si.function === QueryFunctions.None ? "..." : LocalizeQueryFunctions(si.function) }), items: getQueryFunctionsMenuItems(si, index) }), _jsx(TMMetadataChooser, { disabled: isReadOnly, showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, borderRadius: borderRadius, showId: showId, backgroundColor: getColorIndex({ tid: si.tid, alias: si.alias }), qd: formData, values: [{ tid: si.tid, mid: si.mid, aliasTID: si.alias }], onValueChanged: (values) => { values.length > 0 && onChange_SelectItem_MID(values[0], index); } }), (!isReadOnly || si.as) && _jsx(TMQdEditableItem, { value: si.as, backgroundColor: colorValue, placeHolder: `<${SDKUI_Localizator.Query_EnterAlias}...>`, width: '100%', onValueChanged: (value) => { onChange_SelectItem_As(value, index); } })] }, `${si.tid}_${si.mid}_${index}`));
746
+ return (_jsxs(StyledRowItem, { onDragEnd: dragEnd, onDragOver: dragOver, onDrop: (e) => dropSelect(e, si), children: [!isReadOnly && _jsx(StyledDraggableDiv, { draggable: true, onDragStart: (e) => dragStart(e, si), children: _jsx(IconDraggabledots, { fontSize: 15, color: TMColors.button_icon }) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconClear, { color: TMColors.button_icon }), caption: SDKUI_Localizator.Remove, onClick: () => onRemove_SelectItem(index) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconAddCircleOutline, { color: TMColors.button_icon }), caption: SDKUI_Localizator.AddBelow, onClick: () => onAdd_SelectItem(index + 1) }), !isReadOnly && _jsx(TMQdDropDownMenu, { content: _jsx(TMTooltip, { content: SDK_Localizator.toCaseWord(SDKUI_Localizator.OneMore), children: _jsx(IconDotsVerticalCircleOutline, { color: TMColors.button_icon }) }), items: getSelectMenuItems(index) }), (!isReadOnly || (si.function && si.function != QueryFunctions.None)) && _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, color: 'green', borderRadius: borderRadius, content: _jsx(StyledItemWrapper, { children: si.function === QueryFunctions.None ? "..." : LocalizeQueryFunctions(si.function) }), items: getQueryFunctionsMenuItems(si, index) }), _jsx(TMMetadataChooser, { disabled: isReadOnly, filterMetadata: (o => o.perm?.canView === AccessLevels.Yes || o.perm?.canUpdate === AccessLevels.Yes), showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, borderRadius: borderRadius, showId: showId, backgroundColor: getColorIndex({ tid: si.tid, alias: si.alias }), qd: formData, values: [{ tid: si.tid, mid: si.mid, aliasTID: si.alias }], onValueChanged: (values) => { values.length > 0 && onChange_SelectItem_MID(values[0], index); } }), (!isReadOnly || si.as) && _jsx(TMQdEditableItem, { value: si.as, backgroundColor: colorValue, placeHolder: `<${SDKUI_Localizator.Query_EnterAlias}...>`, width: '100%', onValueChanged: (value) => { onChange_SelectItem_As(value, index); } })] }, `${si.tid}_${si.mid}_${index}`));
747
747
  })] }) }) }), fromCount > 0 && (!isReadOnly || whereCount > 0) && _jsx(Item, { title: SDK_Localizator.QueryWhere, titleRender: (tabItemProps) => renderAccordionTitle(tabItemProps, whereCount, validationItems.filter((o) => o.PropertyName == TMPropertyNames.where)), children: _jsx(StyledAccordionItemContainer, { children: _jsxs(StyledAccordionItemContent, { "$disabled": isReadOnly, children: [_jsx(TMVilViewer, { vil: validationItems.filter((o) => o.PropertyName === TMPropertyNames.where) }), (!formData?.where || formData?.where.length <= 0) && !isReadOnly &&
748
748
  _jsx(StyledRowItem, { children: _jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.Add, onClick: onAdd_WhereItem }) }), formData?.where?.map((wi, index) => {
749
749
  return (_jsxs(StyledRowItem, { onDragEnd: dragEnd, onDragOver: dragOver, onDrop: (e) => dropWhere(e, wi), children: [!isReadOnly && _jsx(StyledDraggableDiv, { draggable: true, onDragStart: (e) => dragStart(e, wi), children: _jsx(IconDraggabledots, { fontSize: 15, color: TMColors.button_icon }) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconClear, { color: TMColors.button_icon }), caption: SDKUI_Localizator.Remove, onClick: () => onRemove_WhereItem(index) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconAddCircleOutline, { color: TMColors.button_icon }), caption: SDKUI_Localizator.AddBelow, onClick: () => onAdd_WhereItem(index + 1) }), !isReadOnly && _jsx(TMQdDropDownMenu, { content: _jsx(TMTooltip, { content: SDK_Localizator.toCaseWord(SDKUI_Localizator.OneMore), children: _jsx(IconDotsVerticalCircleOutline, { color: TMColors.button_icon }) }), items: [
@@ -761,7 +761,7 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDis
761
761
  ] }), _jsx(TMQdDropDownMenu, { disabled: index == 0, color: 'green', content: _jsx("div", { style: { fontSize: '1rem' }, children: wi.or ? 'OR' : 'AND' }), items: [
762
762
  { text: 'AND', onClick: () => onChange_WhereItem_Or(false, index) },
763
763
  { text: 'OR', onClick: () => onChange_WhereItem_Or(true, index) }
764
- ] }), _jsx(TMQdEditableItem, { value: wi.leftBrackets, allowedPattern: /\(/g, backgroundColor: colorBrackets, onValueChanged: (value) => { onChange_WhereItem_Brackets(value, true, index); } }), _jsx(TMMetadataChooser, { disabled: isReadOnly, showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, borderRadius: borderRadius, showId: showId, backgroundColor: getColorIndex({ tid: wi.tid, alias: wi.alias }), qd: formData, values: [{ tid: wi.tid, mid: wi.mid, aliasTID: wi.alias }], onValueChanged: (values) => { values.length > 0 && onChange_WhereItem_Metadato(values[0], index); } }), _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, color: 'green', borderRadius: borderRadius, content: _jsx(StyledDivHorizontal, { children: _jsx(StyledItemWrapper, { children: LocalizeQueryOperators(wi.operator) }) }), items: getQueryOperatorsMenuItems(wi, index) }), _jsx(TMQdWhereItemValue, { whereItem: wi, index: index, onValueChanged: (values) => { onChange_WhereItem_Values(values[0], values[1], index); } }), _jsx(TMQdEditableItem, { value: wi.rightBrackets, allowedPattern: /\)/g, backgroundColor: colorBrackets, onValueChanged: (value) => { onChange_WhereItem_Brackets(value, false, index); } })] }, `${wi.tid}_${wi.mid}_${index}`));
764
+ ] }), _jsx(TMQdEditableItem, { value: wi.leftBrackets, allowedPattern: /\(/g, backgroundColor: colorBrackets, onValueChanged: (value) => { onChange_WhereItem_Brackets(value, true, index); } }), _jsx(TMMetadataChooser, { disabled: isReadOnly, filterMetadata: (o => o.perm?.canSearch === AccessLevels.Yes), showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, borderRadius: borderRadius, showId: showId, backgroundColor: getColorIndex({ tid: wi.tid, alias: wi.alias }), qd: formData, values: [{ tid: wi.tid, mid: wi.mid, aliasTID: wi.alias }], onValueChanged: (values) => { values.length > 0 && onChange_WhereItem_Metadato(values[0], index); } }), _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, color: 'green', borderRadius: borderRadius, content: _jsx(StyledDivHorizontal, { children: _jsx(StyledItemWrapper, { children: LocalizeQueryOperators(wi.operator) }) }), items: getQueryOperatorsMenuItems(wi, index) }), _jsx(TMQdWhereItemValue, { whereItem: wi, index: index, onValueChanged: (values) => { onChange_WhereItem_Values(values[0], values[1], index); } }), _jsx(TMQdEditableItem, { value: wi.rightBrackets, allowedPattern: /\)/g, backgroundColor: colorBrackets, onValueChanged: (value) => { onChange_WhereItem_Brackets(value, false, index); } })] }, `${wi.tid}_${wi.mid}_${index}`));
765
765
  })] }) }) }), fromCount > 0 && (!isReadOnly || orderByCount > 0) && _jsx(Item, { title: SDK_Localizator.QueryOrderBy, titleRender: (tabItemProps) => renderAccordionTitle(tabItemProps, orderByCount, validationItems.filter((o) => o.PropertyName == TMPropertyNames.orderBy)), children: _jsx(StyledAccordionItemContainer, { children: _jsxs(StyledAccordionItemContent, { "$disabled": isReadOnly, children: [(!formData?.orderBy || formData?.orderBy.length <= 0) && !isReadOnly &&
766
766
  _jsx(StyledRowItem, { children: _jsx(TMButton, { btnStyle: 'normal', disabled: !formData?.from?.tid, caption: SDKUI_Localizator.Add, onClick: onAdd_OrderByItem }) }), formData?.orderBy?.map((oi, index) => {
767
767
  return (_jsxs(StyledRowItem, { onDragEnd: dragEnd, onDragOver: dragOver, onDrop: (e) => dropOrderBy(e, oi), children: [!isReadOnly && _jsx(StyledDraggableDiv, { draggable: true, onDragStart: (e) => dragStart(e, oi), children: _jsx(IconDraggabledots, { fontSize: 15, color: TMColors.button_icon }) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconClear, { color: TMColors.button_icon }), caption: SDKUI_Localizator.Remove, onClick: () => onRemove_OrderByItem(index) }), !isReadOnly && _jsx(TMButton, { btnStyle: 'icon', padding: '3px 0px', icon: _jsx(IconAddCircleOutline, { color: TMColors.button_icon }), caption: SDKUI_Localizator.AddBelow, onClick: () => onAdd_OrderByItem(index + 1) }), !isReadOnly && _jsx(TMQdDropDownMenu, { content: _jsx(TMTooltip, { content: SDK_Localizator.toCaseWord(SDKUI_Localizator.OneMore), children: _jsx(IconDotsVerticalCircleOutline, { color: TMColors.button_icon }) }), items: [
@@ -769,7 +769,7 @@ const TMQueryEditor = ({ formMode, inputData, onQDChanged, isExpertMode, showDis
769
769
  { text: SDKUI_Localizator.AddBelow, onClick: () => onAdd_OrderByItem(index + 1) },
770
770
  { text: SDKUI_Localizator.Remove, onClick: () => onRemove_OrderByItem(index) },
771
771
  { text: SDKUI_Localizator.RemoveAll, onClick: () => setFormData({ ...formData, orderBy: undefined }) },
772
- ] }), _jsx(TMMetadataChooser, { disabled: isReadOnly, showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, showId: showId, borderRadius: borderRadius, backgroundColor: getColorIndex({ tid: oi.tid, alias: oi.alias }), qd: formData, values: [{ tid: oi.tid, mid: oi.mid, aliasTID: oi.alias }], onValueChanged: (values) => onChange_OrderByItem_MID(values[0], index) }), _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, borderRadius: borderRadius, content: _jsx(StyledItemWrapper, { children: oi.asc ? 'ASC' : 'DESC' }), items: [
772
+ ] }), _jsx(TMMetadataChooser, { disabled: isReadOnly, filterMetadata: (o => o.perm?.canView === AccessLevels.Yes || o.perm?.canUpdate === AccessLevels.Yes), showEditButton: false, getColorIndex: getColorIndex, showCompleteMetadataName: showCompleteMetadataName, openEditorOnSummaryClick: true, showBorder: false, showId: showId, borderRadius: borderRadius, backgroundColor: getColorIndex({ tid: oi.tid, alias: oi.alias }), qd: formData, values: [{ tid: oi.tid, mid: oi.mid, aliasTID: oi.alias }], onValueChanged: (values) => onChange_OrderByItem_MID(values[0], index) }), _jsx(TMQdDropDownMenu, { backgroundColor: colorOperator, borderRadius: borderRadius, content: _jsx(StyledItemWrapper, { children: oi.asc ? 'ASC' : 'DESC' }), items: [
773
773
  { text: 'ASC', onClick: () => onChange_OrderByItem_Asc(true, oi, index) },
774
774
  { text: 'DESC', onClick: () => onChange_OrderByItem_Asc(false, oi, index) }
775
775
  ] })] }, `${oi.tid}_${oi.mid}_${index}`));
@@ -113,6 +113,7 @@ export declare class SDKUI_Localizator {
113
113
  static get DcmtCount(): "Anzahl der Dokumente" | "Number of documents" | "Número de documentos" | "Nombre de documents" | "Numero documenti";
114
114
  static get DcmtsDetail(): "Detail-Dokumente" | "Detail documents" | "Documentos detail" | "Documents detail" | "Documenti dettaglio";
115
115
  static get DcmtsMaster(): "Master-Dokumente" | "Master documents" | "Documentos master" | "Documents master" | "Documenti master";
116
+ static get DcmtOutOfView(): "Das Dokument wurde erfolgreich bearbeitet, aber die Änderung hat es aus der Sicht entfernt und Sie können nicht mehr darauf zugreifen." | "The document has been successfully updated, but the update has removed it from view and you can no longer access it." | "El documento se ha modificado correctamente, pero la modificación lo ha quitado de la vista y ya no se puede acceder al mismo." | "Le document a été modifié avec succès, mais le changement l' a supprimé de la vue et vous ne pouvez plus y accéder." | "O documento foi alterado com sucesso, mas a mudança foi removido de vista e você não pode mais acessá-lo." | "Il documento è stato modificato con successo, ma la modifica lo ha rimosso dalla vista e non è più possibile accedervi.";
116
117
  static get DcmtType(): "Dokumententyp" | "Document type" | "Tipo de documento" | "Type de document" | "Tipo documento";
117
118
  static get DcmtTypesSelected(): "Ausgewählte Dokumenttypen" | "Selected document types" | "Tipos de documentos seleccionados" | "Types de documents sélectionnés" | "Tipos de documentos selecionados" | "Tipi documento selezionati";
118
119
  static get DcmtTypeSelect(): "Wählen Sie einen Dokumenttyp aus" | "Select a document type" | "Seleccione un tipo de documento" | "Sélectionnez un type de document" | "Selecione um tipo de documento" | "Selezionare un tipo documento";
@@ -1085,6 +1085,16 @@ export class SDKUI_Localizator {
1085
1085
  default: return "Documenti master";
1086
1086
  }
1087
1087
  }
1088
+ static get DcmtOutOfView() {
1089
+ switch (this._cultureID) {
1090
+ case CultureIDs.De_DE: return "Das Dokument wurde erfolgreich bearbeitet, aber die Änderung hat es aus der Sicht entfernt und Sie können nicht mehr darauf zugreifen.";
1091
+ case CultureIDs.En_US: return "The document has been successfully updated, but the update has removed it from view and you can no longer access it.";
1092
+ case CultureIDs.Es_ES: return "El documento se ha modificado correctamente, pero la modificación lo ha quitado de la vista y ya no se puede acceder al mismo.";
1093
+ case CultureIDs.Fr_FR: return "Le document a été modifié avec succès, mais le changement l' a supprimé de la vue et vous ne pouvez plus y accéder.";
1094
+ case CultureIDs.Pt_PT: return "O documento foi alterado com sucesso, mas a mudança foi removido de vista e você não pode mais acessá-lo.";
1095
+ default: return "Il documento è stato modificato con successo, ma la modifica lo ha rimosso dalla vista e non è più possibile accedervi.";
1096
+ }
1097
+ }
1088
1098
  static get DcmtType() {
1089
1099
  switch (this._cultureID) {
1090
1100
  case CultureIDs.De_DE: return "Dokumententyp";
@@ -188,7 +188,7 @@ export const getQD = async (tid, easyOr) => {
188
188
  }
189
189
  qd.where = [];
190
190
  for (const md of dtd.metadata) {
191
- if ((md?.perm?.canView == AccessLevels.No) && (md?.perm?.canSearch == AccessLevels.No))
191
+ if (md?.perm?.canSearch == AccessLevels.No)
192
192
  continue;
193
193
  if (md.isSystem == 1)
194
194
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.17.28",
3
+ "version": "6.17.29",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",