@topconsultnpm/sdkui-react-beta 6.16.44 → 6.16.46

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.
@@ -16,7 +16,7 @@ const TMMetadataChooser = ({ tmSession, dataSource, showEditButton = true, butto
16
16
  const renderTemplate = () => {
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
18
  };
19
- return (_jsxs(_Fragment, { children: [_jsx(TMSummary, { label: label, width: width, height: height, 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 &&
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;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { CultureIDs } from '@topconsultnpm/sdk-ts-beta';
3
+ import { ValidationItem } from '@topconsultnpm/sdk-ts-beta';
3
4
  export declare const getCultureIDImg: (cultureID: CultureIDs) => any;
4
5
  interface TMLocalizedTextBoxProps {
5
6
  label: string;
@@ -11,6 +12,7 @@ interface TMLocalizedTextBoxProps {
11
12
  value_PT?: string;
12
13
  value_ES?: string;
13
14
  value_DE?: string;
15
+ validationItems?: ValidationItem[];
14
16
  onValueChanged: (lang: CultureIDs, value: string) => void;
15
17
  }
16
18
  declare const TMLocalizedTextBox: React.FC<TMLocalizedTextBoxProps>;
@@ -57,7 +57,7 @@ export const getCultureIDImg = (cultureID) => {
57
57
  default: return it;
58
58
  }
59
59
  };
60
- const TMLocalizedTextBox = ({ label, value, value_IT, value_EN, value_FR, value_PT, value_ES, value_DE, isModifiedWhen, onValueChanged, }) => {
60
+ const TMLocalizedTextBox = ({ label, value, value_IT, value_EN, value_FR, value_PT, value_ES, value_DE, isModifiedWhen, validationItems, onValueChanged, }) => {
61
61
  // const [isModalOpen, setIsModalOpen] = useState(false);
62
62
  const [isPopoverVisible, setIsPopoverVisible] = useState(false);
63
63
  const popoverRef = useRef(null);
@@ -90,6 +90,6 @@ const TMLocalizedTextBox = ({ label, value, value_IT, value_EN, value_FR, value_
90
90
  icon: (_jsxs(IconContainer, { children: [_jsx(IconLanguage, {}), localizedCount > 0 && _jsx(Badge, { children: localizedCount })] })),
91
91
  onClick: handleTogglePopover,
92
92
  };
93
- return (_jsxs(LocalizedContainer, { ref: popoverRef, children: [_jsx(TMTextBox, { type: "text", label: label, value: value, isModifiedWhen: isModifiedWhen, buttons: [localizationButton], onValueChanged: (e) => onValueChanged(CultureIDs.None, e.target.value) }), _jsx(Popover, { "$isVisible": isPopoverVisible, children: languages.map((lang) => (_jsx(TMTextBox, { label: `${lang.label}`, showClearButton: true, icon: _jsx("img", { src: getCultureIDImg(lang.code), alt: "Lang", width: 18, height: 18 }), value: lang.value || '', onValueChanged: (e) => onValueChanged(lang.code, e.target.value) }, lang.code))) })] }));
93
+ return (_jsxs(LocalizedContainer, { ref: popoverRef, children: [_jsx(TMTextBox, { type: "text", label: label, value: value, isModifiedWhen: isModifiedWhen, buttons: [localizationButton], validationItems: validationItems, onValueChanged: (e) => onValueChanged(CultureIDs.None, e.target.value) }), _jsx(Popover, { "$isVisible": isPopoverVisible, children: languages.map((lang) => (_jsx(TMTextBox, { label: `${lang.label}`, showClearButton: true, icon: _jsx("img", { src: getCultureIDImg(lang.code), alt: "Lang", width: 18, height: 18 }), value: lang.value || '', onValueChanged: (e) => onValueChanged(lang.code, e.target.value) }, lang.code))) })] }));
94
94
  };
95
95
  export default TMLocalizedTextBox;
@@ -10,7 +10,7 @@ import TMTextBox from '../../../editors/TMTextBox';
10
10
  import TMButton from '../../../base/TMButton';
11
11
  import styled from 'styled-components';
12
12
  import TMQuerySummary from '../../../query/TMQuerySummary';
13
- import { CultureIDs, DcmtTypeListCacheService, FromItem, MetadataDataDomains, SDK_Globals, SearchEngine, Severities, WFAppTypes, WorkItemSetRules } from '@topconsultnpm/sdk-ts-beta';
13
+ import { CultureIDs, DcmtTypeListCacheService, FromItem, MetadataDataDomains, PlatformObjectValidator, QueryValidatorOptions, ResultTypes, SDK_Globals, SearchEngine, Severities, TMPropertyNames, ValidationItem, WFAppTypes, WorkItemSetRules } from '@topconsultnpm/sdk-ts-beta';
14
14
  import TMLocalizedTextBox from '../../../editors/TMLocalizedTextBox';
15
15
  import TMDataListItemPicker from '../../../choosers/TMDataListItemPicker';
16
16
  import WorkitemRecipientsEditor, { actorsToTos, RecipientsContainer, tosToActors } from './WorkitemRecipientsEditor';
@@ -25,6 +25,7 @@ import TMTextExpression from '../../../editors/TMTextExpression';
25
25
  import TMCultureIDPicker from '../../../choosers/TMCultureIDPicker';
26
26
  import RecipientList, { WorkItemActorTypes } from './RecipientList';
27
27
  import TMRadioButton from '../../../editors/TMRadioButton';
28
+ import TMVilViewer from '../../../base/TMVilViewer';
28
29
  const FormContainer = styled.div `
29
30
  display: flex;
30
31
  flex-direction: column;
@@ -77,6 +78,7 @@ const APP_TYPES_DATASOURCE = [
77
78
  const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
78
79
  const [localItem, setLocalItem] = useState(itemToEdit);
79
80
  const [localItemOrig] = useState(structuredClone(itemToEdit));
81
+ const [validationItems, setValidationItems] = useState([]);
80
82
  if (!localItem) {
81
83
  return null;
82
84
  }
@@ -85,13 +87,13 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
85
87
  let height = '50%';
86
88
  switch (localItem.Type) {
87
89
  case DiagramItemTypes.Start:
88
- width = '30%';
89
- height = '40%';
90
+ width = '515px';
91
+ height = '235px';
90
92
  break;
91
93
  case DiagramItemTypes.End:
92
94
  case DiagramItemTypes.Exit:
93
- width = '30%';
94
- height = '40%';
95
+ width = '365px';
96
+ height = '145px';
95
97
  break;
96
98
  case DiagramItemTypes.Condition:
97
99
  width = '40%';
@@ -134,8 +136,54 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
134
136
  }
135
137
  return { calculatedWidth: width, calculatedHeight: height };
136
138
  }, [localItem.Type]);
139
+ const validator = async (d) => {
140
+ let vil = [];
141
+ switch (d.Type) {
142
+ case DiagramItemTypes.Start:
143
+ if (d.StartAfterArchive !== 1 && d.StartAfterUpdate !== 1 && d.StartManual !== 1)
144
+ vil.push(new ValidationItem(ResultTypes.ERROR, "*", "Indicare la modalità di avvio dell'istanza di workflow"));
145
+ if (d.StartAfterUpdate === 1 && (d.StartAfterUpdateMIDs === undefined || d.StartAfterUpdateMIDs.length <= 0))
146
+ vil.push(new ValidationItem(ResultTypes.ERROR, DiagramItemProps.StartAfterUpdateMIDs, "Indicare almeno un metadato la cui modifica avvii l'istanza"));
147
+ break;
148
+ case DiagramItemTypes.Approval:
149
+ PlatformObjectValidator.RequiredStringValidator(d.ItemName, DiagramItemProps.ItemName, vil, SDKUI_Localizator.Name);
150
+ PlatformObjectValidator.RequiredStringValidator(d.Description, DiagramItemProps.Description, vil, SDKUI_Localizator.Description);
151
+ PlatformObjectValidator.RequiredStringValidator(d.Tos, DiagramItemProps.Tos, vil, SDKUI_Localizator.Recipients);
152
+ break;
153
+ case DiagramItemTypes.ExecTask:
154
+ PlatformObjectValidator.RequiredStringValidator(d.ItemName, DiagramItemProps.ItemName, vil, SDKUI_Localizator.Name);
155
+ PlatformObjectValidator.RequiredStringValidator(d.Description, DiagramItemProps.Description, vil, SDKUI_Localizator.Description);
156
+ PlatformObjectValidator.RequiredStringValidator(d.Tos, DiagramItemProps.Tos, vil, SDKUI_Localizator.Recipients);
157
+ PlatformObjectValidator.RequiredStringValidator(d.AppName, DiagramItemProps.AppName, vil, SDKUI_Localizator.WorkflowAppName);
158
+ PlatformObjectValidator.RequiredStringValidator(d.AppType, DiagramItemProps.AppType, vil, SDKUI_Localizator.WorkflowAppType);
159
+ break;
160
+ case DiagramItemTypes.Notification:
161
+ PlatformObjectValidator.RequiredStringValidator(d.ItemName, DiagramItemProps.ItemName, vil, SDKUI_Localizator.Name);
162
+ PlatformObjectValidator.RequiredStringValidator(d.Tos, DiagramItemProps.Tos, vil, SDKUI_Localizator.Recipients);
163
+ PlatformObjectValidator.RequiredStringValidator(d.Severity, DiagramItemProps.Severity, vil, SDKUI_Localizator.Severity);
164
+ PlatformObjectValidator.RequiredStringValidator(d.AppType, DiagramItemProps.AppType, vil, SDKUI_Localizator.WorkflowAppType);
165
+ break;
166
+ case DiagramItemTypes.RunApp:
167
+ PlatformObjectValidator.RequiredStringValidator(d.ItemName, DiagramItemProps.ItemName, vil, SDKUI_Localizator.Name);
168
+ PlatformObjectValidator.RequiredStringValidator(d.Tos, DiagramItemProps.Tos, vil, SDKUI_Localizator.Recipients);
169
+ PlatformObjectValidator.RequiredStringValidator(d.AppName, DiagramItemProps.AppName, vil, SDKUI_Localizator.WorkflowAppName);
170
+ PlatformObjectValidator.RequiredStringValidator(d.AppType, DiagramItemProps.AppType, vil, SDKUI_Localizator.WorkflowAppType);
171
+ break;
172
+ case DiagramItemTypes.Condition:
173
+ PlatformObjectValidator.RequiredStringValidator(d.ItemName, DiagramItemProps.ItemName, vil, SDKUI_Localizator.Name);
174
+ let qvo = new QueryValidatorOptions();
175
+ qvo.DoSelectValidation = false;
176
+ qvo.DoOrderByValidation = false;
177
+ await PlatformObjectValidator.QueryValidatorAsync(localItem.QD, vil, qvo);
178
+ if (localItem.QD?.where === undefined || localItem.QD.where.length <= 0) {
179
+ vil.push(new ValidationItem(ResultTypes.ERROR, TMPropertyNames.where, "La query della condizione non contiene criteri di selezione", [DiagramItemProps.QD]));
180
+ }
181
+ break;
182
+ }
183
+ return vil;
184
+ };
137
185
  useEffect(() => {
138
- console.log('localItem: ', localItem);
186
+ validator(localItem).then((vil) => setValidationItems(vil));
139
187
  }, [localItem]);
140
188
  const isModified = useMemo(() => calcIsModified(localItem, localItemOrig), [localItem, localItemOrig]);
141
189
  const handleCancel = () => {
@@ -356,13 +404,13 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
356
404
  // Function to render common elements like the name textbox
357
405
  const renderCommonFields = () => {
358
406
  if (localItem.Type !== DiagramItemTypes.Start && localItem.Type !== DiagramItemTypes.End && localItem.Type !== DiagramItemTypes.Exit && localItem.Type !== DiagramItemTypes.Status) {
359
- return (_jsx(TMLocalizedTextBox, { label: SDKUI_Localizator.Name, value: localItem.ItemName, isModifiedWhen: localItem.ItemName !== localItemOrig.ItemName, value_IT: localItem.ItemName_IT, value_EN: localItem.ItemName_EN, value_FR: localItem.ItemName_FR, value_PT: localItem.ItemName_PT, value_ES: localItem.ItemName_ES, value_DE: localItem.ItemName_DE, onValueChanged: handleLocalizedNameChange }));
407
+ return (_jsx(TMLocalizedTextBox, { label: SDKUI_Localizator.Name, value: localItem.ItemName, isModifiedWhen: localItem.ItemName !== localItemOrig.ItemName, value_IT: localItem.ItemName_IT, value_EN: localItem.ItemName_EN, value_FR: localItem.ItemName_FR, value_PT: localItem.ItemName_PT, value_ES: localItem.ItemName_ES, value_DE: localItem.ItemName_DE, validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.ItemName), onValueChanged: handleLocalizedNameChange }));
360
408
  }
361
409
  return null;
362
410
  };
363
411
  // Function to render Start-specific fields
364
412
  const renderStartFields = () => {
365
- return (_jsxs(_Fragment, { children: [_jsx(TMCheckBox, { value: localItem.StartAfterArchive ?? 0, label: SDKUI_Localizator.WorkflowStartAfterArchive, isModifiedWhen: localItem.StartAfterArchive !== localItemOrig.StartAfterArchive, onValueChanged: handleStartAfterArchiveChange }), _jsx(TMCheckBox, { value: localItem.StartAfterUpdate ?? 0, label: SDKUI_Localizator.WorkflowStartAfterUpdate, isModifiedWhen: localItem.StartAfterUpdate !== localItemOrig.StartAfterUpdate, onValueChanged: handleStartAfterUpdateChange }), _jsx(TMMetadataChooser, { tids: wf?.MTID ? [wf.MTID] : [], allowMultipleSelection: true, allowSysMetadata: false, showClearButton: true, disabled: localItem.StartAfterUpdate !== 1, values: localItem.StartAfterUpdateMIDs?.map((mid) => ({ tid: wf?.MTID, mid: mid })) ?? [], onValueChanged: handleStartAfterUpdateMIDsChange, width: "100%" })] }));
413
+ return (_jsxs(_Fragment, { children: [_jsx(TMVilViewer, { vil: validationItems.filter(v => v.PropertyName === "*") }), _jsx(TMCheckBox, { value: localItem.StartAfterArchive ?? 0, label: SDKUI_Localizator.WorkflowStartAfterArchive, isModifiedWhen: localItem.StartAfterArchive !== localItemOrig.StartAfterArchive, onValueChanged: handleStartAfterArchiveChange }), _jsx(TMCheckBox, { value: localItem.StartAfterUpdate ?? 0, label: SDKUI_Localizator.WorkflowStartAfterUpdate, isModifiedWhen: localItem.StartAfterUpdate !== localItemOrig.StartAfterUpdate, onValueChanged: handleStartAfterUpdateChange }), _jsx(TMMetadataChooser, { tids: wf?.MTID ? [wf.MTID] : [], allowMultipleSelection: true, allowSysMetadata: false, showClearButton: true, disabled: localItem.StartAfterUpdate !== 1, values: localItem.StartAfterUpdateMIDs?.map((mid) => ({ tid: wf?.MTID, mid: mid })) ?? [], validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.StartAfterUpdateMIDs), onValueChanged: handleStartAfterUpdateMIDsChange, width: "100%" })] }));
366
414
  };
367
415
  // Function to render End-specific fields
368
416
  const renderEndFields = () => {
@@ -374,16 +422,16 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
374
422
  };
375
423
  // Function to render Condition-specific fields
376
424
  const renderConditionFields = () => {
377
- return (_jsx(TMQuerySummary, { qd: localItem.QD, onValueChanged: handleQDChange }));
425
+ return (_jsx(TMQuerySummary, { qd: localItem.QD, validateSelect: false, validateOrderBy: false, validationItems: validationItems.filter(v => v.PropertyScopes.includes(DiagramItemProps.QD)), onValueChanged: handleQDChange }));
378
426
  };
379
427
  // Function to render Status-specific fields
380
428
  const renderStatusFields = () => {
381
429
  return (_jsx(TMDataListItemPicker, { dataListID: wf?.MStatusDLID, selectedValue: localItem.StatusValue, onItemSelect: handleStatusChange }));
382
430
  };
383
431
  const renderAppFields = () => {
384
- return (_jsxs(_Fragment, { children: [_jsx(TMDropDown, { label: SDKUI_Localizator.WorkflowAppType, dataSource: APP_TYPES_DATASOURCE, value: localItem.AppType, isModifiedWhen: localItem.AppType !== localItemOrig.AppType, onValueChanged: (e) => { handleAppTypeChange(e.target.value); } }), localItem.AppType === WFAppTypes.EXE
385
- ? _jsx(TMPathChooser, { label: SDKUI_Localizator.WorkflowAppName, value: localItem.AppName || '', isModifiedWhen: (localItem.AppName ?? '') !== (localItemOrig.AppName ?? ''), onValueChanged: (newValue) => { handleAppNameChange(newValue); }, allowBrowseFile_Area: true, allowBrowseFolder_Area: false, allowParametricPath: false })
386
- : _jsx(TMTextBox, { label: SDKUI_Localizator.WorkflowAppName, value: localItem.AppName, isModifiedWhen: (localItem.AppName ?? '') !== (localItemOrig.AppName ?? ''), onValueChanged: (e) => { handleAppNameChange(e.target.value); } }), _jsx(TMTextExpression, { label: SDKUI_Localizator.Arguments, value: localItem.AppArgs, valueOrig: localItemOrig.AppArgs, tid: wf?.MTID, onValueChanged: (newValue) => { handleAppArgsChange(newValue); } }), _jsx(TMCultureIDPicker, { label: SDKUI_Localizator.Format, selectedValue: localItem.FormatCultureID, isModifiedWhen: localItem.FormatCultureID !== localItemOrig.FormatCultureID, openChooserBySingleClick: true, onSelectCultureID: handleFormatCultureIDChange })] }));
432
+ return (_jsxs(_Fragment, { children: [_jsx(TMDropDown, { label: SDKUI_Localizator.WorkflowAppType, dataSource: APP_TYPES_DATASOURCE, value: localItem.AppType, isModifiedWhen: localItem.AppType !== localItemOrig.AppType, validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.AppType), onValueChanged: (e) => { handleAppTypeChange(e.target.value); } }), localItem.AppType === WFAppTypes.EXE
433
+ ? _jsx(TMPathChooser, { label: SDKUI_Localizator.WorkflowAppName, value: localItem.AppName || '', isModifiedWhen: (localItem.AppName ?? '') !== (localItemOrig.AppName ?? ''), onValueChanged: (newValue) => { handleAppNameChange(newValue); }, allowBrowseFile_Area: true, allowBrowseFolder_Area: false, allowParametricPath: false, validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.AppName) })
434
+ : _jsx(TMTextBox, { label: SDKUI_Localizator.WorkflowAppName, value: localItem.AppName, isModifiedWhen: (localItem.AppName ?? '') !== (localItemOrig.AppName ?? ''), validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.AppName), onValueChanged: (e) => { handleAppNameChange(e.target.value); } }), _jsx(TMTextExpression, { label: SDKUI_Localizator.Arguments, value: localItem.AppArgs, valueOrig: localItemOrig.AppArgs, tid: wf?.MTID, onValueChanged: (newValue) => { handleAppArgsChange(newValue); } }), _jsx(TMCultureIDPicker, { label: SDKUI_Localizator.Format, selectedValue: localItem.FormatCultureID, isModifiedWhen: localItem.FormatCultureID !== localItemOrig.FormatCultureID, openChooserBySingleClick: true, onSelectCultureID: handleFormatCultureIDChange })] }));
387
435
  };
388
436
  // Function to render Approval-specific fields
389
437
  const renderApprovalFields = () => {
@@ -395,7 +443,7 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
395
443
  return qd;
396
444
  };
397
445
  const qdForRecipientsEditor = localItem.QD ?? newQD();
398
- return (_jsxs(_Fragment, { children: [_jsx(TMLocalizedTextBox, { label: SDKUI_Localizator.Description, value: localItem.Description, value_IT: localItem.Description_IT, value_EN: localItem.Description_EN, value_FR: localItem.Description_FR, value_PT: localItem.Description_PT, value_ES: localItem.Description_ES, value_DE: localItem.Description_DE, isModifiedWhen: localItem.Description !== localItemOrig.Description, onValueChanged: handleLocalizedDescriptionChange }), _jsx(WorkitemRecipientsEditor, { tos: localItem.Tos ?? '', mTID: wf?.MTID, qd: qdForRecipientsEditor, onTosChange: handleTosChange, onQDChange: handleSetRuleQDChange }), _jsxs(FlexContainer, { children: [_jsx(TMDropDown, { label: SDKUI_Localizator.WorkflowRecipientSetRule, elementStyle: { width: '320px' }, dataSource: SET_RULE_DATASOURCE, value: localItem.SetRule, isModifiedWhen: localItem.SetRule !== localItemOrig.SetRule, onValueChanged: (e) => { handleSetRuleChange(e.target.value); } }), _jsx(TMCheckBox, { value: localItem.AllowZeroTos ?? 0, label: SDKUI_Localizator.WorkflowAllowZeroTos, isModifiedWhen: localItem.AllowZeroTos !== localItemOrig.AllowZeroTos, onValueChanged: handleAllowZeroTosChange })] }), localItem.Type === DiagramItemTypes.ExecTask &&
446
+ return (_jsxs(_Fragment, { children: [_jsx(TMLocalizedTextBox, { label: SDKUI_Localizator.Description, value: localItem.Description, value_IT: localItem.Description_IT, value_EN: localItem.Description_EN, value_FR: localItem.Description_FR, value_PT: localItem.Description_PT, value_ES: localItem.Description_ES, value_DE: localItem.Description_DE, isModifiedWhen: localItem.Description !== localItemOrig.Description, validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.Description), onValueChanged: handleLocalizedDescriptionChange }), _jsx(WorkitemRecipientsEditor, { tos: localItem.Tos ?? '', mTID: wf?.MTID, qd: qdForRecipientsEditor, onTosChange: handleTosChange, onQDChange: handleSetRuleQDChange }), _jsx(TMVilViewer, { vil: validationItems.filter(v => v.PropertyName === DiagramItemProps.Tos) }), _jsxs(FlexContainer, { children: [_jsx(TMDropDown, { label: SDKUI_Localizator.WorkflowRecipientSetRule, elementStyle: { width: '320px' }, dataSource: SET_RULE_DATASOURCE, value: localItem.SetRule, isModifiedWhen: localItem.SetRule !== localItemOrig.SetRule, onValueChanged: (e) => { handleSetRuleChange(e.target.value); } }), _jsx(TMCheckBox, { value: localItem.AllowZeroTos ?? 0, label: SDKUI_Localizator.WorkflowAllowZeroTos, isModifiedWhen: localItem.AllowZeroTos !== localItemOrig.AllowZeroTos, onValueChanged: handleAllowZeroTosChange })] }), localItem.Type === DiagramItemTypes.ExecTask &&
399
447
  _jsxs(BoxContainer, { children: [_jsx(HeaderContainer, { children: _jsx("span", { children: SDKUI_Localizator.Application }) }), renderAppFields()] })] }));
400
448
  };
401
449
  // Function to render UpdateDcmt-specific fields
@@ -429,7 +477,6 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
429
477
  setShowDistinctValuesPanel(false);
430
478
  setShowFormulaEditor(false);
431
479
  }, [dtd, localItem.MetadataValues]);
432
- const validationItems = [];
433
480
  const getFormula = () => {
434
481
  let fd = new FormulaDescriptor();
435
482
  fd.expression = FormulaHelper.isFormula(focusedMetadataValue?.value) ? FormulaHelper.removeFormulaTag(focusedMetadataValue?.value) : undefined;
@@ -520,7 +567,7 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
520
567
  handleSetRuleQDChange(undefined);
521
568
  }
522
569
  }, [localItem]);
523
- return (_jsxs(_Fragment, { children: [_jsx(TMTextExpression, { label: SDKUI_Localizator.Description, placeHolder: 'Inserire il testo della notifica...', rows: 3, value: localItem.Description, tid: wf?.MTID, isModifiedWhen: (localItem.Description ?? '') !== (localItemOrig.Description ?? ''), onValueChanged: (newValue) => handleLocalizedDescriptionChange(CultureIDs.None, newValue ?? ''), valueOrig: undefined }), _jsx(TMDropDown, { label: "Gravit\u00E0", dataSource: SEVERITY_DATASOURCE, value: localItem.Severity, isModifiedWhen: localItem.Severity !== localItemOrig.Severity, onValueChanged: (e) => setLocalItem(prevLocalItem => ({ ...prevLocalItem, Severity: e.target.value })) }), _jsx(TMCultureIDPicker, { label: SDKUI_Localizator.Format, selectedValue: localItem.FormatCultureID, isModifiedWhen: localItem.FormatCultureID !== localItemOrig.FormatCultureID, openChooserBySingleClick: true, onSelectCultureID: handleFormatCultureIDChange }), _jsx(TMCheckBox, { value: localItem.RegAsWfInstPart ?? 0, label: "Registra i destinatari della notifica come partecipanti dell'istanza di flusso", isModifiedWhen: localItem.RegAsWfInstPart !== localItemOrig.RegAsWfInstPart, onValueChanged: handleRegAsWfInstPartChange }), _jsx(RecipientList, { recipients: andRecipients, title: "Destinatari", tid: wf?.MTID, qd: qdForRecipientsEditor, onQDChange: (newQd) => newQd && handleQDChosen(newQd, 0), onAdd: (newRecipients) => handleAddRecipients(newRecipients, 0), onRemove: handleRemoveRecipient })] }));
570
+ return (_jsxs(_Fragment, { children: [_jsx(TMTextExpression, { label: SDKUI_Localizator.Description, placeHolder: 'Inserire il testo della notifica...', rows: 3, value: localItem.Description, tid: wf?.MTID, isModifiedWhen: (localItem.Description ?? '') !== (localItemOrig.Description ?? ''), onValueChanged: (newValue) => handleLocalizedDescriptionChange(CultureIDs.None, newValue ?? ''), validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.Description), valueOrig: undefined }), _jsx(TMDropDown, { label: "Gravit\u00E0", dataSource: SEVERITY_DATASOURCE, value: localItem.Severity, isModifiedWhen: localItem.Severity !== localItemOrig.Severity, validationItems: validationItems.filter(v => v.PropertyName === DiagramItemProps.Severity), onValueChanged: (e) => setLocalItem(prevLocalItem => ({ ...prevLocalItem, Severity: e.target.value })) }), _jsx(TMCultureIDPicker, { label: SDKUI_Localizator.Format, selectedValue: localItem.FormatCultureID, isModifiedWhen: localItem.FormatCultureID !== localItemOrig.FormatCultureID, openChooserBySingleClick: true, onSelectCultureID: handleFormatCultureIDChange }), _jsx(TMCheckBox, { value: localItem.RegAsWfInstPart ?? 0, label: "Registra i destinatari della notifica come partecipanti dell'istanza di flusso", isModifiedWhen: localItem.RegAsWfInstPart !== localItemOrig.RegAsWfInstPart, onValueChanged: handleRegAsWfInstPartChange }), _jsx(RecipientList, { recipients: andRecipients, title: SDKUI_Localizator.Recipients, tid: wf?.MTID, qd: qdForRecipientsEditor, onQDChange: (newQd) => newQd && handleQDChosen(newQd, 0), onAdd: (newRecipients) => handleAddRecipients(newRecipients, 0), onRemove: handleRemoveRecipient }), _jsx(TMVilViewer, { vil: validationItems.filter(v => v.PropertyName === DiagramItemProps.Tos) })] }));
524
571
  };
525
572
  const renderWorkGroupCreateFields = () => {
526
573
  // Gestione di Tos e Tos2
@@ -624,3 +671,54 @@ const DiagramItemForm = ({ itemToEdit, wf, onClose, onApply }) => {
624
671
  return (_jsx(TMModal, { title: DiagramItemTypes[localItem.Type].toString(), onClose: onClose, isModal: true, width: calculatedWidth, height: calculatedHeight, children: renderForm() }));
625
672
  };
626
673
  export default DiagramItemForm;
674
+ const DiagramItemProps = {
675
+ ID: 'ID',
676
+ Left: 'Left',
677
+ Top: 'Top',
678
+ Width: 'Width',
679
+ Height: 'Height',
680
+ Type: 'Type',
681
+ ItemName: 'ItemName',
682
+ ItemName_IT: 'ItemName_IT',
683
+ ItemName_EN: 'ItemName_EN',
684
+ ItemName_FR: 'ItemName_FR',
685
+ ItemName_PT: 'ItemName_PT',
686
+ ItemName_ES: 'ItemName_ES',
687
+ ItemName_DE: 'ItemName_DE',
688
+ Description: 'Description',
689
+ Description_IT: 'Description_IT',
690
+ Description_EN: 'Description_EN',
691
+ Description_FR: 'Description_FR',
692
+ Description_PT: 'Description_PT',
693
+ Description_ES: 'Description_ES',
694
+ Description_DE: 'Description_DE',
695
+ StatusValue: 'StatusValue',
696
+ RegisterPost: 'RegisterPost',
697
+ AllowZeroTos: 'AllowZeroTos',
698
+ Tos: 'Tos',
699
+ SetRule: 'SetRule',
700
+ StartAfterArchive: 'StartAfterArchive',
701
+ StartAfterUpdate: 'StartAfterUpdate',
702
+ StartAfterUpdateMIDs: 'StartAfterUpdateMIDs',
703
+ StartManual: 'StartManual',
704
+ Hist: 'Hist',
705
+ EndWFInstance: 'EndWFInstance',
706
+ QD: 'QD',
707
+ SOD: 'SOD',
708
+ MetadataValues: 'MetadataValues',
709
+ Severity: 'Severity',
710
+ RegAsWfInstPart: 'RegAsWfInstPart',
711
+ FormatCultureID: 'FormatCultureID',
712
+ Tos2: 'Tos2',
713
+ QD2: 'QD2',
714
+ PlatformObjName: 'PlatformObjName',
715
+ PlatformObjDescr: 'PlatformObjDescr',
716
+ Value1asInt: 'Value1asInt',
717
+ Value2asInt: 'Value2asInt',
718
+ Value3asInt: 'Value3asInt',
719
+ Value1asString: 'Value1asString',
720
+ AppType: 'AppType',
721
+ AppName: 'AppName',
722
+ AppArgs: 'AppArgs',
723
+ Trunc: 'Trunc',
724
+ };
@@ -3,7 +3,7 @@ import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
3
3
  import { DiagramItemTypes, ArrowSymbol } from './interfaces';
4
4
  import { parseWfDiagramXml } from './xmlParser';
5
5
  import styled from 'styled-components';
6
- import { CultureIDs, WFAppTypes, WorkItemStatus } from "@topconsultnpm/sdk-ts-beta";
6
+ import { CultureIDs, SearchEngine, WFAppTypes, WorkItemStatus } from "@topconsultnpm/sdk-ts-beta";
7
7
  import ConnectionComponent from './ConnectionComponent';
8
8
  import DiagramItemComponent from './DiagramItemComponent';
9
9
  import DiagramItemSvgContent from './DiagramItemSvgContent';
@@ -1258,6 +1258,12 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, readOnly = false, zoomLevel
1258
1258
  return;
1259
1259
  const x = (event.clientX - svgRect.left) / zoomLevel;
1260
1260
  const y = (event.clientY - svgRect.top) / zoomLevel;
1261
+ let newQD = undefined;
1262
+ if (draggedItemType === DiagramItemTypes.Condition) {
1263
+ newQD = SearchEngine.NewQueryDescriptor();
1264
+ if (newQD.from)
1265
+ newQD.from.tid = wfDiagram.Info?.MTID;
1266
+ }
1261
1267
  const newItem = {
1262
1268
  ID: generateUUID(),
1263
1269
  Left: x - 50,
@@ -1267,6 +1273,7 @@ const WFDiagram = ({ xmlDiagramString, currentSetID, readOnly = false, zoomLevel
1267
1273
  Type: draggedItemType,
1268
1274
  ItemName: `New ${DiagramItemTypes[draggedItemType]}`,
1269
1275
  Description: "",
1276
+ ...(draggedItemType === DiagramItemTypes.Condition ? { QD: newQD } : {}),
1270
1277
  ...(draggedItemType === DiagramItemTypes.RunApp || draggedItemType === DiagramItemTypes.ExecTask ? { AppType: WFAppTypes.EXE, FormatCultureID: CultureIDs.It_IT } : {})
1271
1278
  };
1272
1279
  const updatedDiagram = {
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useState } from 'react';
3
3
  import styled from 'styled-components';
4
4
  import RecipientList, { WorkItemActorTypes } from './RecipientList';
5
+ import { SDKUI_Localizator } from '../../../../helper';
5
6
  export const RecipientsContainer = styled.div `
6
7
  display: flex;
7
8
  gap: 20px;
@@ -91,6 +92,6 @@ const WorkitemRecipientsEditor = ({ tos, qd, mTID, onTosChange, onQDChange }) =>
91
92
  onTosChange(newTos);
92
93
  onQDChange(newQd);
93
94
  }, [andRecipients, orRecipients, onTosChange, onQDChange]);
94
- return (_jsxs(RecipientsContainer, { children: [_jsx(RecipientList, { recipients: andRecipients, title: "Destinatari in AND", tid: mTID, qd: qd, onQDChange: (newQd) => newQd && handleQDChosen(newQd, 0), onAdd: (newRecipients) => handleAddRecipients(newRecipients, 0), onRemove: handleRemoveRecipient }), _jsx(RecipientList, { recipients: orRecipients, title: "Destinatari in OR", tid: mTID, qd: qd, onQDChange: (newQd) => newQd && handleQDChosen(newQd, 1), onAdd: (newRecipients) => handleAddRecipients(newRecipients, 1), onRemove: handleRemoveRecipient })] }));
95
+ return (_jsxs(RecipientsContainer, { children: [_jsx(RecipientList, { recipients: andRecipients, title: `${SDKUI_Localizator.Recipients} (AND)`, tid: mTID, qd: qd, onQDChange: (newQd) => newQd && handleQDChosen(newQd, 0), onAdd: (newRecipients) => handleAddRecipients(newRecipients, 0), onRemove: handleRemoveRecipient }), _jsx(RecipientList, { recipients: orRecipients, title: `${SDKUI_Localizator.Recipients} (OR)`, tid: mTID, qd: qd, onQDChange: (newQd) => newQd && handleQDChosen(newQd, 1), onAdd: (newRecipients) => handleAddRecipients(newRecipients, 1), onRemove: handleRemoveRecipient })] }));
95
96
  };
96
97
  export default WorkitemRecipientsEditor;
@@ -20,6 +20,7 @@ const mapOutputStatus = (statusValue) => {
20
20
  export const parseWfDiagramXml = (xmlString) => {
21
21
  const parser = new DOMParser();
22
22
  const xmlDoc = parser.parseFromString(xmlString, "application/xml");
23
+ console.log('xmlDoc', xmlDoc);
23
24
  const wfDiagram = {
24
25
  Info: {
25
26
  ID: "",
@@ -73,6 +74,10 @@ export const parseWfDiagramXml = (xmlString) => {
73
74
  if (metadataValuesXmlString) {
74
75
  parsedMetadataValues = parseMetadataValuesXml(metadataValuesXmlString);
75
76
  }
77
+ const startAfterUpdateMIDsContent = itemXML.querySelector("StartAfterUpdateMIDs")?.textContent;
78
+ const startAfterUpdateMIDsArray = (startAfterUpdateMIDsContent && startAfterUpdateMIDsContent !== '')
79
+ ? startAfterUpdateMIDsContent.split(';').map(Number)
80
+ : undefined;
76
81
  const item = {
77
82
  ID: itemXML.querySelector("ID")?.textContent || "",
78
83
  Left: left,
@@ -101,11 +106,11 @@ export const parseWfDiagramXml = (xmlString) => {
101
106
  SetRule: parseInt(itemXML.querySelector("SetRule")?.textContent || "0", 10),
102
107
  StartAfterArchive: parseInt(itemXML.querySelector("StartAfterArchive")?.textContent || "0", 10),
103
108
  StartAfterUpdate: parseInt(itemXML.querySelector("StartAfterUpdate")?.textContent || "0", 10),
104
- StartAfterUpdateMIDs: itemXML.querySelector("StartAfterUpdateMIDs")?.textContent?.split(';').map(Number) || undefined,
109
+ StartAfterUpdateMIDs: startAfterUpdateMIDsArray,
105
110
  StartManual: parseInt(itemXML.querySelector("StartManual")?.textContent || "0", 10),
106
111
  Hist: parseInt(itemXML.querySelector("Hist")?.textContent || "0", 10),
107
112
  EndWFInstance: parseInt(itemXML.querySelector("EndWFInstance")?.textContent || "0", 10),
108
- QD: parsedQD, // Assign the parsed object
113
+ QD: parsedQD,
109
114
  SOD: itemXML.querySelector("SOD")?.textContent || undefined,
110
115
  MetadataValues: parsedMetadataValues,
111
116
  Severity: parseInt(itemXML.querySelector("Severity")?.textContent || "0", 10),
@@ -397,6 +397,7 @@ export declare class SDKUI_Localizator {
397
397
  static get RefersTo(): string;
398
398
  static get RecentDocs_Archived(): "Zuletzt archivierte Dokumente" | "Last archived documents" | "Últimos documentos archivados" | "Derniers documents archivés" | "Últimos documentos arquivados" | "Ultimi documenti archiviati";
399
399
  static get RecentDocs_Visualized(): "Zuletzt visualisierte Dokumente" | "Last seen documents" | "Últimos documentos visualizados" | "Derniers documents visualisés" | "Ultimi documenti visualizzati";
400
+ static get Recipients(): "Empfänger" | "Recipients" | "Destinatarios" | "Destinataires" | "Destinatários" | "Destinatari";
400
401
  static get Reject(): "Ablehnen" | "Reject" | "Rechazar" | "Rejeter" | "Rejeitar" | "Rifiuta";
401
402
  static get Relations(): "Korrelationen" | "Correlations" | "Correlaciones" | "Relations" | "Correlacionados" | "Correlazioni";
402
403
  static get RelationManyToMany(): "Folge viele mit vielen" | "Relation many to many" | "Correlación muchos a muchos" | "Corrélation plusieurs à plusieurs" | "Muitos para muitos relação" | "Correlazione molti a molti";
@@ -457,6 +458,7 @@ export declare class SDKUI_Localizator {
457
458
  static get SetAsFavorite(): "Als Favorit festlegen" | "Set as favorite" | "Establecer como favorito" | "Définir comme favori" | "Definir como favorito" | "Imposta come preferito";
458
459
  static get SetNamedCredentialsAsPreferred(): "Möchten Sie die Anmeldedaten '{{0}}' als bevorzugt festlegen?" | "Do you want to set the '{{0}}' credentials as preferred?" | "¿Quieres configurar las credenciales '{{0}}' como preferidas?" | "Voulez-vous définir les identifiants '{{0}}' comme préférés ?" | "Deseja definir as credenciais '{{0}}' como preferidas?" | "Vuoi impostare le credenziali '{{0}}' come preferite?";
459
460
  static get Settings(): "Einstellungen" | "Settings" | "Ajustes" | "Réglages" | "Definições" | "Impostazioni";
461
+ static get Severity(): "Schweregrad" | "Severity" | "Gravedad" | "Gravité" | "Gravidade" | "Gravità";
460
462
  static get Share(): string;
461
463
  static get ShareNew(): string;
462
464
  static get SharingModes_Private(): "Privat" | "Private" | "Privada" | "Privé" | "Privado" | "Privata";
@@ -3927,6 +3927,16 @@ export class SDKUI_Localizator {
3927
3927
  default: return "Ultimi documenti visualizzati";
3928
3928
  }
3929
3929
  }
3930
+ static get Recipients() {
3931
+ switch (this._cultureID) {
3932
+ case CultureIDs.De_DE: return "Empfänger";
3933
+ case CultureIDs.En_US: return "Recipients";
3934
+ case CultureIDs.Es_ES: return "Destinatarios";
3935
+ case CultureIDs.Fr_FR: return "Destinataires";
3936
+ case CultureIDs.Pt_PT: return "Destinatários";
3937
+ default: return "Destinatari";
3938
+ }
3939
+ }
3930
3940
  static get Reject() {
3931
3941
  switch (this._cultureID) {
3932
3942
  case CultureIDs.De_DE: return "Ablehnen";
@@ -4535,6 +4545,16 @@ export class SDKUI_Localizator {
4535
4545
  default: return "Impostazioni";
4536
4546
  }
4537
4547
  }
4548
+ static get Severity() {
4549
+ switch (this._cultureID) {
4550
+ case CultureIDs.De_DE: return "Schweregrad";
4551
+ case CultureIDs.En_US: return "Severity";
4552
+ case CultureIDs.Es_ES: return "Gravedad";
4553
+ case CultureIDs.Fr_FR: return "Gravité";
4554
+ case CultureIDs.Pt_PT: return "Gravidade";
4555
+ default: return "Gravità";
4556
+ }
4557
+ }
4538
4558
  static get Share() {
4539
4559
  switch (this._cultureID) {
4540
4560
  case CultureIDs.De_DE: return "Teilen";
@@ -116,7 +116,6 @@ export function addWhereClausesForConnect(qd) {
116
116
  case AppModules.OUTLOOK_CONNECTOR:
117
117
  case AppModules.POWERPOINT_CONNECTOR:
118
118
  case AppModules.WORD_CONNECTOR:
119
- case AppModules.SURFER:
120
119
  break; // Continua l'esecuzione per questi moduli
121
120
  default:
122
121
  return; // Esci dalla funzione per tutti gli altri moduli
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.16.44",
3
+ "version": "6.16.46",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -39,7 +39,7 @@
39
39
  "lib"
40
40
  ],
41
41
  "dependencies": {
42
- "@topconsultnpm/sdk-ts-beta": "6.16.8",
42
+ "@topconsultnpm/sdk-ts-beta": "6.16.9",
43
43
  "buffer": "^6.0.3",
44
44
  "devextreme": "25.1.4",
45
45
  "devextreme-react": "25.1.4",