@topconsultnpm/sdkui-react 6.19.0-dev2.5 → 6.19.0-dev2.50
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/TMButton.d.ts +1 -0
- package/lib/components/base/TMButton.js +6 -6
- package/lib/components/base/TMCustomButton.d.ts +1 -1
- package/lib/components/base/TMCustomButton.js +83 -28
- package/lib/components/base/TMDataGridExportForm.d.ts +1 -1
- package/lib/components/base/TMDataGridExportForm.js +9 -3
- package/lib/components/base/TMFileManager.js +12 -3
- package/lib/components/base/TMFileManagerDataGridView.d.ts +2 -0
- package/lib/components/base/TMFileManagerDataGridView.js +12 -3
- package/lib/components/base/TMFileManagerThumbnailItems.d.ts +2 -0
- package/lib/components/base/TMFileManagerThumbnailItems.js +12 -2
- package/lib/components/base/TMFileManagerThumbnailsView.d.ts +2 -0
- package/lib/components/base/TMFileManagerThumbnailsView.js +2 -2
- package/lib/components/base/TMModal.d.ts +2 -0
- package/lib/components/base/TMModal.js +13 -2
- package/lib/components/base/TMTooltip.d.ts +1 -1
- package/lib/components/base/TMTooltip.js +1 -1
- package/lib/components/base/TMWaitPanel.js +8 -2
- package/lib/components/choosers/TMDcmtTypeChooser.js +2 -2
- package/lib/components/choosers/TMMetadataChooser.d.ts +4 -1
- package/lib/components/choosers/TMMetadataChooser.js +31 -8
- package/lib/components/choosers/TMUserChooser.d.ts +4 -0
- package/lib/components/choosers/TMUserChooser.js +21 -5
- package/lib/components/editors/TMDateBox.d.ts +1 -1
- package/lib/components/editors/TMTextArea.d.ts +1 -0
- package/lib/components/editors/TMTextArea.js +43 -9
- package/lib/components/editors/TMTextBox.js +33 -3
- package/lib/components/editors/TMTextExpression.js +36 -28
- package/lib/components/features/assistant/ToppyDraggableHelpCenter.d.ts +28 -0
- package/lib/components/features/assistant/ToppyDraggableHelpCenter.js +324 -0
- package/lib/components/features/assistant/ToppyHelpCenter.js +1 -1
- package/lib/components/features/assistant/ToppySpeechBubble.d.ts +8 -0
- package/lib/components/features/assistant/ToppySpeechBubble.js +53 -0
- package/lib/components/features/blog/TMBlogCommentForm.d.ts +2 -0
- package/lib/components/features/blog/TMBlogCommentForm.js +18 -6
- package/lib/components/features/documents/TMDcmtBlog.js +1 -1
- package/lib/components/features/documents/TMDcmtForm.js +313 -57
- package/lib/components/features/documents/TMDcmtPreview.js +45 -8
- package/lib/components/features/documents/TMRelationViewer.js +56 -23
- package/lib/components/features/search/TMSavedQuerySelector.js +1 -1
- package/lib/components/features/search/TMSearch.js +2 -2
- package/lib/components/features/search/TMSearchQueryEditor.js +1 -1
- package/lib/components/features/search/TMSearchQueryPanel.js +8 -25
- package/lib/components/features/search/TMSearchResult.js +94 -13
- package/lib/components/features/search/TMSearchResultsMenuItems.d.ts +2 -1
- package/lib/components/features/search/TMSearchResultsMenuItems.js +97 -51
- package/lib/components/features/tasks/TMTaskForm.js +11 -5
- package/lib/components/features/tasks/TMTasksAgenda.js +4 -4
- package/lib/components/features/tasks/TMTasksCalendar.js +2 -2
- package/lib/components/features/tasks/TMTasksHeader.js +1 -1
- package/lib/components/features/tasks/TMTasksUtils.d.ts +2 -1
- package/lib/components/features/tasks/TMTasksUtils.js +18 -3
- package/lib/components/features/tasks/TMTasksUtilsView.js +26 -4
- package/lib/components/features/tasks/TMTasksView.js +12 -6
- package/lib/components/features/workflow/TMWorkflowPopup.js +3 -3
- package/lib/components/features/workflow/diagram/DiagramItemForm.js +8 -3
- package/lib/components/forms/TMResultDialog.js +8 -2
- package/lib/components/forms/TMSaveForm.js +2 -2
- package/lib/components/grids/TMBlogsPost.d.ts +8 -3
- package/lib/components/grids/TMBlogsPost.js +73 -11
- package/lib/components/grids/TMBlogsPostUtils.d.ts +1 -0
- package/lib/components/grids/TMBlogsPostUtils.js +15 -3
- package/lib/components/grids/TMRecentsManager.js +1 -1
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +2 -1
- package/lib/components/layout/panelManager/TMPanelManagerContainer.d.ts +1 -0
- package/lib/components/layout/panelManager/TMPanelManagerContainer.js +2 -2
- package/lib/components/layout/panelManager/TMPanelManagerContext.js +0 -1
- package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +2 -1
- package/lib/components/layout/panelManager/types.d.ts +1 -0
- package/lib/components/pages/TMPage.js +1 -1
- package/lib/components/settings/SettingsAppearance.js +5 -5
- package/lib/components/viewers/TMDataListItemViewer.d.ts +1 -1
- package/lib/components/viewers/TMMidViewer.d.ts +1 -1
- package/lib/components/viewers/TMTidViewer.d.ts +1 -1
- package/lib/helper/GlobalStyles.d.ts +2 -0
- package/lib/helper/GlobalStyles.js +10 -0
- package/lib/helper/Globalization.d.ts +1 -0
- package/lib/helper/Globalization.js +30 -0
- package/lib/helper/SDKUI_Localizator.d.ts +39 -2
- package/lib/helper/SDKUI_Localizator.js +392 -22
- package/lib/helper/TMCustomSearchBar.js +1 -1
- package/lib/helper/TMIcons.d.ts +4 -1
- package/lib/helper/TMIcons.js +13 -1
- package/lib/helper/TMUtils.d.ts +1 -4
- package/lib/helper/TMUtils.js +18 -23
- package/lib/helper/dcmtsHelper.d.ts +2 -1
- package/lib/helper/dcmtsHelper.js +56 -17
- package/lib/helper/helpers.js +5 -1
- package/lib/helper/index.d.ts +1 -0
- package/lib/helper/index.js +1 -0
- package/lib/hooks/useRelatedDocuments.js +35 -26
- package/lib/ts/types.d.ts +3 -1
- package/package.json +8 -8
|
@@ -1,11 +1,61 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { AccessLevels, AccessLevelsEx, AppModules, FileFormats, LayoutModes, SDK_Globals, DcmtTypeListCacheService, LicenseModuleStatus } from '@topconsultnpm/sdk-ts';
|
|
3
|
-
import { IconActivity, IconArchiveDoc, IconBatchUpdate, IconCheckFile, IconCheckIn, IconCircleInfo, IconCloseCircle, IconConvertFilePdf, IconDelete, IconDotsVerticalCircleOutline, IconDownload, IconEdit, IconExportTo, IconFileDots, IconHide, IconInfo, IconMenuCAArchive, IconPlatform, IconPreview, IconRelation, IconSearch, IconShow, IconStar, IconSubstFile, IconUndo, IconUserGroupOutline, SDKUI_Localizator, svgToString, searchResultToMetadataValues, IconSignaturePencil, IconArchiveMaster, IconArchiveDetail, IconDetailDcmts, isPdfEditorEnabled, IconPair, IconUnpair, IconSharedDcmt } from '../../../helper';
|
|
2
|
+
import { AccessLevels, AccessLevelsEx, AppModules, FileFormats, LayoutModes, SDK_Globals, DcmtTypeListCacheService, LicenseModuleStatus, CICO_MetadataNames } from '@topconsultnpm/sdk-ts';
|
|
3
|
+
import { IconActivity, IconArchiveDoc, IconBatchUpdate, IconCheckFile, IconCheckIn, IconCircleInfo, IconCloseCircle, IconConvertFilePdf, IconDelete, IconDotsVerticalCircleOutline, IconDownload, IconEdit, IconExportTo, IconFileDots, IconHide, IconInfo, IconMenuCAArchive, IconPlatform, IconPreview, IconRelation, IconSearch, IconShow, IconStar, IconSubstFile, IconUndo, IconUserGroupOutline, SDKUI_Localizator, svgToString, searchResultToMetadataValues, IconSignaturePencil, IconArchiveMaster, IconArchiveDetail, IconDetailDcmts, isPdfEditorEnabled, IconPair, IconUnpair, IconSharedDcmt, IconShare, IconCopy, IconMoveToFolder } from '../../../helper';
|
|
4
4
|
import ShowAlert from '../../base/TMAlert';
|
|
5
5
|
import { TMMessageBoxManager, ButtonNames, TMExceptionBoxManager } from '../../base/TMPopUp';
|
|
6
6
|
import TMSpinner from '../../base/TMSpinner';
|
|
7
7
|
import { DcmtOperationTypes, DownloadTypes, SearchResultContext } from '../../../ts';
|
|
8
8
|
import { isXMLFileExt } from '../../../helper/dcmtsHelper';
|
|
9
|
+
const getCicoInfo = (dtd) => {
|
|
10
|
+
const cico = {
|
|
11
|
+
CICO: 0,
|
|
12
|
+
CanCICO: AccessLevels.No,
|
|
13
|
+
CanDelChronology: AccessLevels.No,
|
|
14
|
+
UserID_MID: 0,
|
|
15
|
+
Date_MID: 0,
|
|
16
|
+
Ver_MID: 0,
|
|
17
|
+
UserID_CanViewOrUpdate: AccessLevels.No,
|
|
18
|
+
Date_CanViewOrUpdate: AccessLevels.No,
|
|
19
|
+
Ver_CanViewOrUpdate: AccessLevels.No,
|
|
20
|
+
};
|
|
21
|
+
if (dtd === undefined)
|
|
22
|
+
return cico;
|
|
23
|
+
cico.CICO = dtd.cico ?? 0;
|
|
24
|
+
cico.CanCICO = dtd.perm?.canCICO ?? AccessLevels.No;
|
|
25
|
+
cico.CanDelChronology = dtd.perm?.canDelChron ?? AccessLevels.No;
|
|
26
|
+
const mdCheckout = dtd.metadata?.find(md => md.name === CICO_MetadataNames.CICO_CheckoutUserID);
|
|
27
|
+
if (mdCheckout) {
|
|
28
|
+
cico.UserID_MID = mdCheckout.fromMID;
|
|
29
|
+
cico.UserID_CanViewOrUpdate = (mdCheckout.perm?.canView == AccessLevels.Yes || mdCheckout.perm?.canUpdate == AccessLevels.Yes) ? AccessLevels.Yes : AccessLevels.No;
|
|
30
|
+
}
|
|
31
|
+
const mdDate = dtd.metadata?.find(md => md.name === CICO_MetadataNames.CICO_CheckoutDate);
|
|
32
|
+
if (mdDate) {
|
|
33
|
+
cico.Date_MID = mdDate.fromMID;
|
|
34
|
+
cico.Date_CanViewOrUpdate = (mdDate.perm?.canView == AccessLevels.Yes || mdDate.perm?.canUpdate == AccessLevels.Yes) ? AccessLevels.Yes : AccessLevels.No;
|
|
35
|
+
}
|
|
36
|
+
const mdVer = dtd.metadata?.find(md => md.name === CICO_MetadataNames.CICO_Version);
|
|
37
|
+
if (mdVer) {
|
|
38
|
+
cico.Ver_MID = mdVer.fromMID;
|
|
39
|
+
cico.Ver_CanViewOrUpdate = (mdVer.perm?.canView == AccessLevels.Yes || mdVer.perm?.canUpdate == AccessLevels.Yes) ? AccessLevels.Yes : AccessLevels.No;
|
|
40
|
+
}
|
|
41
|
+
return cico;
|
|
42
|
+
};
|
|
43
|
+
const cicoIsEnabled = (dcmt, dtd) => {
|
|
44
|
+
const cicoInfo = getCicoInfo(dtd);
|
|
45
|
+
let isCheckout = false;
|
|
46
|
+
const CICO_CheckoutUserID = dtd?.metadata?.find(md => md.name === CICO_MetadataNames.CICO_CheckoutUserID)?.id;
|
|
47
|
+
if (dcmt && CICO_CheckoutUserID) {
|
|
48
|
+
const key = dcmt.TID + "_" + CICO_CheckoutUserID;
|
|
49
|
+
const value = dcmt[key];
|
|
50
|
+
if (value && value > 0) {
|
|
51
|
+
isCheckout = true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
cicoEnabled: cicoInfo.CICO === 1 && cicoInfo.CanCICO === AccessLevels.Yes,
|
|
56
|
+
isCheckout: isCheckout
|
|
57
|
+
};
|
|
58
|
+
};
|
|
9
59
|
const disabledForSingleRow = (selectedItems, focusedItem) => {
|
|
10
60
|
return selectedItems.length > 1 || focusedItem === undefined;
|
|
11
61
|
};
|
|
@@ -24,6 +74,17 @@ export const getSelectedDcmtsOrFocused = (selectedItems, focusedItem, fileFormat
|
|
|
24
74
|
}
|
|
25
75
|
return [];
|
|
26
76
|
};
|
|
77
|
+
export const getAllFieldSelectedDcmtsOrFocused = (selectedItems, focusedItem, fileFormat) => {
|
|
78
|
+
if (selectedItems.length <= 0 && !focusedItem)
|
|
79
|
+
return [];
|
|
80
|
+
if (selectedItems.length > 0) {
|
|
81
|
+
return selectedItems;
|
|
82
|
+
}
|
|
83
|
+
else if (focusedItem !== undefined) {
|
|
84
|
+
return [focusedItem];
|
|
85
|
+
}
|
|
86
|
+
return [];
|
|
87
|
+
};
|
|
27
88
|
export const signatureInformationCallback = async (isMobile, inputDcmts) => {
|
|
28
89
|
try {
|
|
29
90
|
if (!inputDcmts || inputDcmts.length === 0) {
|
|
@@ -75,7 +136,7 @@ export const signatureInformationCallback = async (isMobile, inputDcmts) => {
|
|
|
75
136
|
TMExceptionBoxManager.show({ exception: error });
|
|
76
137
|
}
|
|
77
138
|
};
|
|
78
|
-
export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, onRefreshDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, confirmAttachments, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, hasMasterRelation, hasDetailRelation, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToManyDocuments, hasManyToManyRelation) => {
|
|
139
|
+
export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem, context, showFloatingBar, workingGroupContext, showSearch, setShowFloatingBar, openFormHandler, openSharedArchiveHandler, showSharedDcmtsHandler, downloadDcmtsAsync, runOperationAsync, onRefreshSearchAsync, onRefreshDataRowsAsync, onRefreshAfterAddDcmtToFavs, confirmFormat, confirmAttachments, openTaskFormHandler, openDetailDcmtsFormHandler, openMasterDcmtsFormHandler, openBatchUpdateFormHandler, openExportForm, handleToggleSearch, handleSignApprove, handleCheckOutOperationCallback, openWGsCopyMoveForm, openCommentFormCallback, openEditPdf, openAddDocumentForm, passToArchiveCallback, archiveMasterDocuments, archiveDetailDocuments, hasMasterRelation, hasDetailRelation, canArchiveMasterRelation, canArchiveDetailRelation, pairManyToManyDocuments, hasManyToManyRelation) => {
|
|
79
140
|
const isPdfEditorLicensed = SDK_Globals?.license?.dcmtArchiveLicenses?.[0]?.siX_60007?.status === LicenseModuleStatus.Licensed;
|
|
80
141
|
let pdfEditorAvailable = false;
|
|
81
142
|
if (dtd && dtd.widgets && dtd.widgets.length > 0) {
|
|
@@ -295,49 +356,34 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
295
356
|
]
|
|
296
357
|
};
|
|
297
358
|
};
|
|
298
|
-
|
|
359
|
+
const checkinMenuItem = () => {
|
|
360
|
+
// Get the currently selected or focused documents
|
|
361
|
+
const selectedDocs = getAllFieldSelectedDcmtsOrFocused(selectedItems, focusedItem);
|
|
362
|
+
// Take the first document (used for validation checks)
|
|
363
|
+
const firstDoc = selectedDocs?.[0];
|
|
364
|
+
const { cicoEnabled, isCheckout } = cicoIsEnabled(firstDoc, dtd);
|
|
299
365
|
return {
|
|
300
|
-
icon: svgToString(
|
|
301
|
-
text: "Check in",
|
|
302
|
-
disabled: disabledForSingleRow(selectedItems, focusedItem) && disabledForMultiRow(selectedItems, focusedItem),
|
|
366
|
+
icon: svgToString(_jsx(IconFileDots, {})),
|
|
367
|
+
text: "Check in/Check out",
|
|
368
|
+
disabled: !cicoEnabled || (disabledForSingleRow(selectedItems, focusedItem) && disabledForMultiRow(selectedItems, focusedItem)),
|
|
303
369
|
items: [
|
|
304
370
|
{
|
|
305
|
-
icon:
|
|
306
|
-
|
|
307
|
-
disabled:
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
{
|
|
311
|
-
icon: svgToString(<IconCheckIn />),
|
|
312
|
-
text: "Modifica file",
|
|
313
|
-
operationType: 'singleRow',
|
|
314
|
-
disabled: fromDatagrid ? false : disabledForSingleRow(selectedItems, focusedItem),
|
|
315
|
-
onClick: () => ShowAlert({ message: "TODO Modifica file", mode: 'info', title: `${"TODO"}`, duration: 3000 })
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
icon: svgToString(<IconCheckIn />),
|
|
319
|
-
text: "Annulla check out",
|
|
320
|
-
operationType: 'singleRow',
|
|
321
|
-
disabled: fromDatagrid ? false : disabledForSingleRow(selectedItems, focusedItem),
|
|
322
|
-
onClick: () => ShowAlert({ message: "TODO Annulla check out", mode: 'info', title: `${"TODO"}`, duration: 3000 })
|
|
371
|
+
icon: "edit",
|
|
372
|
+
text: 'Check out',
|
|
373
|
+
disabled: !cicoEnabled || (disabledForSingleRow(selectedItems, focusedItem) && disabledForMultiRow(selectedItems, focusedItem)),
|
|
374
|
+
// disabled: isNotSingleFile || isGroupLocked || isFileCheckedOut,
|
|
375
|
+
onClick: () => handleCheckOutOperationCallback(true),
|
|
323
376
|
},
|
|
324
377
|
{
|
|
325
|
-
icon:
|
|
326
|
-
text:
|
|
327
|
-
|
|
328
|
-
disabled:
|
|
329
|
-
onClick: () =>
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
icon: svgToString(<IconCheckIn />),
|
|
333
|
-
text: "Cronologia",
|
|
334
|
-
operationType: 'singleRow',
|
|
335
|
-
disabled: fromDatagrid ? false : disabledForSingleRow(selectedItems, focusedItem),
|
|
336
|
-
onClick: () => ShowAlert({ message: "TODO Cronologia", mode: 'info', title: `${"TODO"}`, duration: 3000 })
|
|
378
|
+
icon: "remove",
|
|
379
|
+
text: SDKUI_Localizator.CancelCheckOut,
|
|
380
|
+
disabled: !cicoEnabled || (disabledForSingleRow(selectedItems, focusedItem) && disabledForMultiRow(selectedItems, focusedItem)),
|
|
381
|
+
// disabled: isNotSingleFile || isGroupLocked || isFileNotCheckedOut || isNotCheckedOutByCurrentUser,
|
|
382
|
+
onClick: () => handleCheckOutOperationCallback(false),
|
|
337
383
|
},
|
|
338
384
|
]
|
|
339
|
-
}
|
|
340
|
-
}
|
|
385
|
+
};
|
|
386
|
+
};
|
|
341
387
|
const relationsMenuItem = () => {
|
|
342
388
|
return {
|
|
343
389
|
icon: svgToString(_jsx(IconRelation, {})),
|
|
@@ -347,21 +393,21 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
347
393
|
items: [
|
|
348
394
|
{
|
|
349
395
|
icon: svgToString(_jsx(IconPair, {})),
|
|
350
|
-
text:
|
|
396
|
+
text: SDKUI_Localizator.MatchManyDocumentsManyToMany,
|
|
351
397
|
operationType: 'multiRow',
|
|
352
398
|
disabled: !hasManyToManyRelation || disabledForMultiRow(selectedItems, focusedItem),
|
|
353
399
|
onClick: async () => await pairManyToManyDocuments?.(true)
|
|
354
400
|
},
|
|
355
401
|
{
|
|
356
402
|
icon: svgToString(_jsx(IconUnpair, {})),
|
|
357
|
-
text:
|
|
403
|
+
text: SDKUI_Localizator.UnmatchManyDocumentsManyToMany,
|
|
358
404
|
operationType: 'multiRow',
|
|
359
405
|
disabled: !hasManyToManyRelation || disabledForMultiRow(selectedItems, focusedItem),
|
|
360
406
|
onClick: async () => await pairManyToManyDocuments?.(false)
|
|
361
407
|
},
|
|
362
408
|
{
|
|
363
409
|
icon: svgToString(_jsx(IconArchiveMaster, {})),
|
|
364
|
-
text:
|
|
410
|
+
text: SDKUI_Localizator.ArchiveMasterDocument,
|
|
365
411
|
operationType: 'multiRow',
|
|
366
412
|
beginGroup: true,
|
|
367
413
|
disabled: canArchiveMasterRelation !== true,
|
|
@@ -369,7 +415,7 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
369
415
|
},
|
|
370
416
|
{
|
|
371
417
|
icon: svgToString(_jsx(IconArchiveDetail, {})),
|
|
372
|
-
text:
|
|
418
|
+
text: SDKUI_Localizator.ArchiveDetailDocument,
|
|
373
419
|
operationType: 'multiRow',
|
|
374
420
|
disabled: canArchiveDetailRelation !== true,
|
|
375
421
|
onClick: async () => await archiveDetailDocuments?.(focusedItem?.TID)
|
|
@@ -397,22 +443,22 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
397
443
|
const sharedDcmtsMenuItem = () => {
|
|
398
444
|
return {
|
|
399
445
|
icon: svgToString(_jsx(IconSharedDcmt, {})),
|
|
400
|
-
text:
|
|
446
|
+
text: SDKUI_Localizator.SharedDocuments,
|
|
401
447
|
operationType: 'multiRow',
|
|
402
448
|
disabled: disabledForMultiRow(selectedItems, focusedItem),
|
|
403
449
|
items: [
|
|
404
450
|
{
|
|
405
451
|
icon: svgToString(_jsx(IconSharedDcmt, {})),
|
|
406
|
-
text:
|
|
452
|
+
text: SDKUI_Localizator.SharedArchiving,
|
|
407
453
|
operationType: 'singleRow',
|
|
408
454
|
disabled: disabledForSingleRow(selectedItems, focusedItem),
|
|
409
455
|
onClick: async () => { await openSharedArchiveHandler(); }
|
|
410
456
|
},
|
|
411
457
|
{
|
|
412
458
|
icon: svgToString(_jsx(IconSharedDcmt, {})),
|
|
413
|
-
text:
|
|
459
|
+
text: SDKUI_Localizator.ShowSharedDocuments,
|
|
414
460
|
operationType: 'multiRow',
|
|
415
|
-
disabled:
|
|
461
|
+
disabled: disabledForSingleRow(selectedItems, focusedItem),
|
|
416
462
|
onClick: async () => { await showSharedDcmtsHandler(); }
|
|
417
463
|
}
|
|
418
464
|
]
|
|
@@ -555,7 +601,7 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
555
601
|
};
|
|
556
602
|
const shareFromWgMenuItem = () => {
|
|
557
603
|
return {
|
|
558
|
-
icon:
|
|
604
|
+
icon: svgToString(_jsx(IconShare, {})),
|
|
559
605
|
text: SDKUI_Localizator.Share,
|
|
560
606
|
visible: workingGroupContext !== undefined && openAddDocumentForm !== undefined,
|
|
561
607
|
disabled: workingGroupContext === undefined,
|
|
@@ -564,7 +610,7 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
564
610
|
};
|
|
565
611
|
const copyFromWgMenuItem = () => {
|
|
566
612
|
return {
|
|
567
|
-
icon:
|
|
613
|
+
icon: svgToString(_jsx(IconCopy, {})),
|
|
568
614
|
text: SDKUI_Localizator.CopyToDrafts,
|
|
569
615
|
operationType: 'multiRow',
|
|
570
616
|
visible: openWGsCopyMoveForm !== undefined,
|
|
@@ -574,7 +620,7 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
574
620
|
};
|
|
575
621
|
const movetofolderFromWgMenuItem = () => {
|
|
576
622
|
return {
|
|
577
|
-
icon:
|
|
623
|
+
icon: svgToString(_jsx(IconMoveToFolder, {})),
|
|
578
624
|
text: !isMobile ? SDKUI_Localizator.CopyToArchivedDocuments : SDKUI_Localizator.CopyToArchived,
|
|
579
625
|
operationType: 'multiRow',
|
|
580
626
|
visible: openWGsCopyMoveForm !== undefined,
|
|
@@ -649,7 +695,7 @@ export const getCommandsMenuItems = (isMobile, dtd, selectedItems, focusedItem,
|
|
|
649
695
|
]
|
|
650
696
|
},
|
|
651
697
|
signatureMenuItem(),
|
|
652
|
-
// checkinMenuItem()
|
|
698
|
+
// checkinMenuItem(),
|
|
653
699
|
relationsMenuItem(),
|
|
654
700
|
sharedDcmtsMenuItem(),
|
|
655
701
|
// shareMenuItem(),
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { ObjectClasses, TaskDescriptor, Priorities, PdGs, SDK_Globals, UserListCacheService, SDK_Localizator, Task_States } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import { areDifferentIDs, formatDate, getOriginLabel, getPriorityLocalizatorValue, getPriorityLocalizatorValues, getStatusLocalizatorValues, gotoPDGExtendedLabel, taskValidatorAsync } from './TMTasksUtils';
|
|
5
|
-
import ScrollView from 'devextreme-react/
|
|
5
|
+
import ScrollView from 'devextreme-react/scroll-view';
|
|
6
6
|
import TMLayoutContainer from '../../base/TMLayout';
|
|
7
7
|
import { FormModes } from '../../../ts';
|
|
8
8
|
import { useWorkflowApprove } from '../../../hooks/useWorkflowApprove';
|
|
@@ -81,6 +81,11 @@ const TMTaskForm = (props) => {
|
|
|
81
81
|
else if (taskContext?.workingGroup) {
|
|
82
82
|
task.pdG = PdGs.WG;
|
|
83
83
|
task.iD1 = taskContext.workingGroup.id;
|
|
84
|
+
if (currentTask) {
|
|
85
|
+
task.name = currentTask.name;
|
|
86
|
+
task.toID = 0;
|
|
87
|
+
task.startTime = new Date();
|
|
88
|
+
}
|
|
84
89
|
}
|
|
85
90
|
else if (taskContext?.dossier) {
|
|
86
91
|
task.pdG = PdGs.CF;
|
|
@@ -158,7 +163,7 @@ const TMTaskForm = (props) => {
|
|
|
158
163
|
newTaskDescriptor.isNew = 0;
|
|
159
164
|
editTaskCallback(newTaskDescriptor);
|
|
160
165
|
}
|
|
161
|
-
else if (formDataOrig && formMode === FormModes.Create && taskContext?.dossier && currentTask) {
|
|
166
|
+
else if (formDataOrig && formMode === FormModes.Create && taskContext?.dossier && taskContext?.dossier?.origin === 'DossierAction' && currentTask) {
|
|
162
167
|
setFieldsReadOnly({
|
|
163
168
|
name: true,
|
|
164
169
|
description: false,
|
|
@@ -357,6 +362,7 @@ const TMTaskForm = (props) => {
|
|
|
357
362
|
}, children: _jsx(TMTooltip, { content: formData.pdG !== PdGs.None ? gotoPDGExtendedLabel(true, formData.pdG, formData.iD1Name) : '', children: _jsxs("span", { onClick: () => formData.pdG !== PdGs.None ? gotoPDGExtendedLabelClickCallback() : null, style: {
|
|
358
363
|
display: 'inline-flex',
|
|
359
364
|
alignItems: 'center',
|
|
365
|
+
lineHeight: 1,
|
|
360
366
|
padding: '6px 10px',
|
|
361
367
|
borderRadius: 8,
|
|
362
368
|
backgroundColor: formData.pdG !== PdGs.None ? '#f5f5f7' : 'transparent',
|
|
@@ -371,13 +377,13 @@ const TMTaskForm = (props) => {
|
|
|
371
377
|
}, onMouseLeave: e => {
|
|
372
378
|
if (formData.pdG !== PdGs.None)
|
|
373
379
|
e.currentTarget.style.backgroundColor = '#f5f5f7';
|
|
374
|
-
}, children: [getPdgsIconMap().get(formData.pdG), _jsx("span", { children: getOriginLabel(formData.pdG, formData.iD1Name) })] }) }) }) }) })), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 10 }, children: children }), children: _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMTextBox, { label: SDKUI_Localizator.Name, value: formData?.name ?? '', readOnly: fieldsReadOnly.name, autoFocus: true, maxLength: 100, isModifiedWhen: formData?.name !== formDataOrig?.name, onValueChanged: (e) => { setFormData({ ...formData ?? {}, name: e.target.value }); }, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.Name) }) }) }), _jsx("div", { style: { width: '100%' }, children: _jsx(TMTextArea, { label: SDKUI_Localizator.Description, value: formData?.description ?? '', maxLength: 200, readOnly: fieldsReadOnly.description, isModifiedWhen: formData?.description !== formDataOrig?.description, onValueChanged: (e) => { setFormData({ ...formData ?? {}, description: e.target.value }); }, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.Description), resize: false }) }), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 10 }, children: children }), children: (formMode === FormModes.Create || !areDifferentIDs(formDataOrig?.fromID, SDK_Globals.tmSession?.SessionDescr?.userID)) ?
|
|
375
|
-
_jsx("div", { id: "assignedToAnotherUserField", style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMUserChooser, { dataSource: usersList ?? undefined, allowMultipleSelection: false, label: SDKUI_Localizator.
|
|
380
|
+
}, children: [_jsx("span", { style: { display: 'flex', alignItems: 'center' }, children: getPdgsIconMap().get(formData.pdG) }), _jsx("span", { children: getOriginLabel(formData.pdG, formData.iD1Name) })] }) }) }) }) })), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 10 }, children: children }), children: _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMTextBox, { label: SDKUI_Localizator.Name, value: formData?.name ?? '', readOnly: fieldsReadOnly.name, autoFocus: true, maxLength: 100, isModifiedWhen: formData?.name !== formDataOrig?.name, onValueChanged: (e) => { setFormData({ ...formData ?? {}, name: e.target.value }); }, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.Name) }) }) }), _jsx("div", { style: { width: '100%' }, children: _jsx(TMTextArea, { label: SDKUI_Localizator.Description, value: formData?.description ?? '', maxLength: 200, readOnly: fieldsReadOnly.description, isModifiedWhen: formData?.description !== formDataOrig?.description, onValueChanged: (e) => { setFormData({ ...formData ?? {}, description: e.target.value }); }, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.Description), resize: false }) }), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 10 }, children: children }), children: (formMode === FormModes.Create || !areDifferentIDs(formDataOrig?.fromID, SDK_Globals.tmSession?.SessionDescr?.userID)) ?
|
|
381
|
+
_jsx("div", { id: "assignedToAnotherUserField", style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMUserChooser, { dataSource: usersList ?? undefined, allowShowAllUsers: !!taskContext?.dossier, allowMultipleSelection: false, label: SDKUI_Localizator.AssignedTo_Female, readOnly: fieldsReadOnly.assignedTO, values: formData?.toID ? [formData?.toID] : [], isModifiedWhen: formData?.toID !== formDataOrig?.toID, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.AssignedTo_Female), onValueChanged: (newValue) => {
|
|
376
382
|
if (newValue === undefined)
|
|
377
383
|
return;
|
|
378
384
|
setFormData({ ...formData ?? {}, toID: newValue[0] });
|
|
379
385
|
} }) })
|
|
380
|
-
: formMode === FormModes.Update && _jsxs(_Fragment, { children: [areDifferentIDs(formDataOrig?.fromID, SDK_Globals.tmSession?.SessionDescr?.userID) && _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMTextBox, { label: SDKUI_Localizator.AssignedBy, value: formData?.fromName ?? '', readOnly: true }) }), areDifferentIDs(formDataOrig?.toID, SDK_Globals.tmSession?.SessionDescr?.userID) && _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMTextBox, { label: SDKUI_Localizator.
|
|
386
|
+
: formMode === FormModes.Update && _jsxs(_Fragment, { children: [areDifferentIDs(formDataOrig?.fromID, SDK_Globals.tmSession?.SessionDescr?.userID) && _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMTextBox, { label: SDKUI_Localizator.AssignedBy, value: formData?.fromName ?? '', readOnly: true }) }), areDifferentIDs(formDataOrig?.toID, SDK_Globals.tmSession?.SessionDescr?.userID) && _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMTextBox, { label: SDKUI_Localizator.AssignedTo_Female, value: formData?.toName ?? '', readOnly: true }) })] }) }), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 10 }, children: children }), children: _jsxs(_Fragment, { children: [_jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: _jsx(TMDropDown, { label: SDKUI_Localizator.Status, value: formData?.state, dataSource: getStatusLocalizatorValues(), isModifiedWhen: formData?.state !== formDataOrig?.state, onValueChanged: onStatusValueChange, readOnly: fieldsReadOnly.status }) }), _jsx("div", { style: { width: isMobile ? '100%' : '50%' }, children: !fieldsReadOnly.priority ? _jsx(TMDropDown, { label: SDKUI_Localizator.Priority, value: formData?.priority, dataSource: getPriorityLocalizatorValues(), isModifiedWhen: formData?.priority !== formDataOrig?.priority, onValueChanged: onPriorityValueChange })
|
|
381
387
|
: _jsx(TMTextBox, { label: SDKUI_Localizator.Priority, value: getPriorityLocalizatorValue(formData?.priority ?? Priorities.Low), readOnly: true }) })] }) }), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 10 }, children: children }), children: _jsxs(_Fragment, { children: [_jsx("div", { style: { width: isMobile ? '100%' : '50%', marginTop: 10 }, children: !fieldsReadOnly.startDate ? _jsx(TMDateBox, { id: "start-date", resetTimeToZeroOnKeyPress: false, label: SDKUI_Localizator.StartDate, dateDisplayType: DateDisplayTypes.DateTime, value: formData?.startTime, isModifiedWhen: formData?.startTime !== formDataOrig?.startTime, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.ErrorStartEndDate), onContentReady: handleStartTimeContentReady, onValueChange: (value) => { setFormData({ ...formData ?? {}, startTime: value }); }, showClearButton: true }) : _jsx(TMTextBox, { label: SDKUI_Localizator.StartDate, value: formData?.startTime ? formatDate(formData?.startTime) : '', readOnly: true }) }), _jsx("div", { style: { width: isMobile ? '100%' : '50%', marginTop: 10 }, children: !fieldsReadOnly.startDate ? _jsx(TMDateBox, { id: "end-date", resetTimeToZeroOnKeyPress: false, label: SDKUI_Localizator.Expiration, dateDisplayType: DateDisplayTypes.DateTime, value: formData?.endTime, isModifiedWhen: formData?.endTime !== formDataOrig?.endTime, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.ErrorStartEndDate || o.PropertyName === SDKUI_Localizator.ErrorEndRemDate), onContentReady: handleEndTimeContentReady, onValueChange: (value) => { setFormData({ ...formData ?? {}, endTime: value }); }, showClearButton: true, readOnly: fieldsReadOnly.endDate }) : _jsx(TMTextBox, { label: SDKUI_Localizator.Expiration, value: formData?.endTime ? formatDate(formData?.endTime) : '', readOnly: true }) })] }) }), _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 3 }, children: children }), children: _jsx("div", { style: { width: isMobile ? '100%' : '50%', marginTop: 10 }, children: _jsx(TMDateBox, { id: "alert-time", resetTimeToZeroOnKeyPress: false, label: SDKUI_Localizator.Reminder, dateDisplayType: DateDisplayTypes.DateTime, value: formData?.remTime ?? undefined, isModifiedWhen: formData?.remTime !== formDataOrig?.remTime, validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.ErrorEndRemDate), onValueChange: (value) => { setFormData({ ...formData ?? {}, remTime: value }); }, showClearButton: true, readOnly: fieldsReadOnly.remTime }) }) }), (formData?.state && [Task_States.Completed, Task_States.Waiting, Task_States.Deferred].includes(formData?.state) ||
|
|
382
388
|
(formData?.response ?? "") !== "") && _jsx(TMConditionalWrapper, { condition: !isMobile, wrapper: children => _jsx("div", { style: { display: 'flex', flexDirection: 'row', width: '100%', gap: 3 }, children: children }), children: _jsx("div", { style: { width: isMobile ? '100%' : '50%', marginTop: 10 }, children: _jsxs(ResponseCommentWrapper, { children: [_jsx(ResponseCommentTextArea, { id: "responseId", name: "response", "$isValid": true, value: formData?.response ?? '', onChange: onAnswerChange, "$isModifiedWhen": formData?.response !== formDataOrig?.response, disabled: (formData?.response ?? "") !== "" &&
|
|
383
389
|
(formData?.state && ![Task_States.Completed, Task_States.Waiting, Task_States.Deferred].includes(formData?.state)) }), _jsxs(ResponseCommentLabel, { htmlFor: "responseId", children: [SDKUI_Localizator.Answer, _jsxs(TMTooltip, { content: SDKUI_Localizator.AnswerTooltip, children: [" ", _jsx("i", { className: 'dx-icon-info' }), " "] })] }), _jsx(ResponseCommentCharacterCounter, { children: `${500 - (formData?.response ?? '').length} ${SDKUI_Localizator.CharactersRemaining}` })] }) }) })] }) }) }), (showDcmtForm && formData?.iD1 && formData?.iD2) &&
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import React, { useCallback, useEffect, useState } from "react";
|
|
3
3
|
import ArrayStore from "devextreme/data/array_store";
|
|
4
|
-
import Scheduler from "devextreme-react/
|
|
4
|
+
import Scheduler from "devextreme-react/scheduler";
|
|
5
5
|
import { calculateNumberOfDays, highlightTaskText, priorityLegend, renderTaskIcons } from "./TMTasksUtilsView";
|
|
6
6
|
import { Priorities, Task_States } from "@topconsultnpm/sdk-ts";
|
|
7
7
|
import { checkIfNew, convertToSchedulerAppointments, findTasksBySearch, formatDate, getPriorityColor, getStatusLocalizatorValue } from "./TMTasksUtils";
|
|
8
|
-
import ScrollView from "devextreme-react/
|
|
9
|
-
import LoadIndicator from "devextreme-react/
|
|
8
|
+
import ScrollView from "devextreme-react/scroll-view";
|
|
9
|
+
import LoadIndicator from "devextreme-react/load-indicator";
|
|
10
10
|
import { FormModes } from "../../../ts";
|
|
11
11
|
import { SDKUI_Localizator } from "../../../helper";
|
|
12
12
|
import TMCustomSearchBar from "../../../helper/TMCustomSearchBar";
|
|
@@ -55,7 +55,7 @@ const TMTasksAgenda = React.memo((props) => {
|
|
|
55
55
|
let bgColor = 'transparent';
|
|
56
56
|
if (priority)
|
|
57
57
|
bgColor = getPriorityColor(priority);
|
|
58
|
-
return _jsx("div", { style: { width: "100%", height: "100%", display: 'flex', flexDirection: 'column', justifyContent: 'flex-start', alignItems: 'flex-end', backgroundColor: bgColor }, children: _jsx(ScrollView, { width: "100%", height: "100%", direction: "both", useNative: true, children: _jsxs("div", { style: { display: 'flex', justifyContent: 'space-between', width: '100%', fontWeight: isNew ? 'bold' : 'normal' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'flex-start' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center' }, children: [showId && _jsxs("span", { children: [highlightTaskText(currentTask.id.toString(), searchText, currentTask.id), " - "] }), renderTaskIcons({ stateLabel, stateTooltipLabel, pdg, ID1Name, endTime, remTime, isNew, numberOfDays }), "\u00A0", _jsx("span", { style: { fontWeight: "bold" }, children: highlightTaskText(currentTask.name ?? '', searchText, currentTask.id) })] }), _jsxs("div", { children: [startTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.StartDate, ": ", formatDate(startTime), " - \u00A0"] })), endTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.Expiration, ": ", formatDate(endTime)] }))] })] }), fromCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.AssignedBy, ":"] }), "\u00A0", _jsxs("div", { children: [highlightTaskText(currentTask.fromName ?? '', searchText, currentTask.id), (showId && currentTask.fromID) && _jsxs("span", { children: ["(", currentTask.fromID, ")"] })] })] }), toCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.
|
|
58
|
+
return _jsx("div", { style: { width: "100%", height: "100%", display: 'flex', flexDirection: 'column', justifyContent: 'flex-start', alignItems: 'flex-end', backgroundColor: bgColor }, children: _jsx(ScrollView, { width: "100%", height: "100%", direction: "both", useNative: true, children: _jsxs("div", { style: { display: 'flex', justifyContent: 'space-between', width: '100%', fontWeight: isNew ? 'bold' : 'normal' }, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'flex-start' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center' }, children: [showId && _jsxs("span", { children: [highlightTaskText(currentTask.id.toString(), searchText, currentTask.id), " - "] }), renderTaskIcons({ stateLabel, stateTooltipLabel, pdg, ID1Name, endTime, remTime, isNew, numberOfDays }), "\u00A0", _jsx("span", { style: { fontWeight: "bold" }, children: highlightTaskText(currentTask.name ?? '', searchText, currentTask.id) })] }), _jsxs("div", { children: [startTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.StartDate, ": ", formatDate(startTime), " - \u00A0"] })), endTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.Expiration, ": ", formatDate(endTime)] }))] })] }), fromCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.AssignedBy, ":"] }), "\u00A0", _jsxs("div", { children: [highlightTaskText(currentTask.fromName ?? '', searchText, currentTask.id), (showId && currentTask.fromID) && _jsxs("span", { children: ["(", currentTask.fromID, ")"] })] })] }), toCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.AssignedTo_Female, ":"] }), "\u00A0", _jsxs("div", { children: [highlightTaskText(currentTask.toName ?? '', searchText, currentTask.id), (showId && currentTask.toID) && _jsxs("span", { children: ["(", currentTask.toID, ")"] })] })] })] }) }) });
|
|
59
59
|
}, [visualizedTasks, searchText]);
|
|
60
60
|
// handle appointment click handler
|
|
61
61
|
const handleAppointmentClick = useCallback((e) => {
|
|
@@ -5,7 +5,7 @@ import { Priorities, Task_States } from "@topconsultnpm/sdk-ts";
|
|
|
5
5
|
import Scheduler, { Resource } from 'devextreme-react/scheduler';
|
|
6
6
|
import { calculateNumberOfDays, highlightTaskText, priorityLegend, renderTaskIcons, taskStateIconMap, TMActionCalendar } from './TMTasksUtilsView';
|
|
7
7
|
import { checkIfNew, convertToSchedulerAppointments, findTasksBySearch, formatDate, getPriorityColor, getPriorityLocalizatorValue, getStatusLocalizatorValue, prioritiesResourceData } from './TMTasksUtils';
|
|
8
|
-
import LoadIndicator from 'devextreme-react/
|
|
8
|
+
import LoadIndicator from 'devextreme-react/load-indicator';
|
|
9
9
|
import { FormModes } from '../../../ts';
|
|
10
10
|
import { SDKUI_Localizator } from '../../../helper';
|
|
11
11
|
import TMTooltip from '../../base/TMTooltip';
|
|
@@ -144,7 +144,7 @@ const TMTasksCalendar = (props) => {
|
|
|
144
144
|
const ID1Name = currentTask.iD1Name || '';
|
|
145
145
|
const isNew = checkIfNew(currentTask.fromID, currentTask.isNew);
|
|
146
146
|
const numberOfDays = calculateNumberOfDays(startTime, endTime);
|
|
147
|
-
return _jsxs("div", { className: "dx-tooltip-appointment-item", onClick: (e) => { e.preventDefault(); e.stopPropagation(); }, style: { backgroundColor: getPriorityColor(currentTask.priority ?? Priorities.None) }, children: [_jsxs("div", { className: "dx-tooltip-appointment-item-content", style: { width: '70%', cursor: 'auto' }, children: [_jsx("div", { style: { display: "flex" }, children: renderTaskIcons({ stateLabel, stateTooltipLabel, pdg, ID1Name, endTime, remTime, isNew, numberOfDays }) }), _jsxs("div", { className: "dx-tooltip-appointment-item-content-subject", children: [" ", showId && _jsxs("span", { children: [highlightTaskText(appointmentData.id.toString(), searchText, appointmentData.id), " - "] }), " ", highlightTaskText(appointmentData.text ?? '', searchText, currentTask.id)] }), _jsx("div", { className: "dx-tooltip-appointment-item-content-date", children: startTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.StartDate, ": ", formatDate(startTime)] })) }), _jsx("div", { className: "dx-tooltip-appointment-item-content-date", children: endTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.Expiration, ": ", formatDate(endTime)] })) }), _jsxs("div", { className: "dx-tooltip-appointment-item-content-subject", children: [SDKUI_Localizator.Priority, ": ", highlightTaskText(priority, searchText, currentTask.id)] }), _jsxs("div", { className: "dx-tooltip-appointment-item-content-subject", children: [fromCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.AssignedBy, ":"] }), "\u00A0", _jsxs("div", { children: [highlightTaskText(currentTask.fromName ?? '', searchText, currentTask.id), (showId && currentTask.fromID) && _jsxs("span", { children: ["(", currentTask.fromID, ")"] })] })] }), toCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.
|
|
147
|
+
return _jsxs("div", { className: "dx-tooltip-appointment-item", onClick: (e) => { e.preventDefault(); e.stopPropagation(); }, style: { backgroundColor: getPriorityColor(currentTask.priority ?? Priorities.None) }, children: [_jsxs("div", { className: "dx-tooltip-appointment-item-content", style: { width: '70%', cursor: 'auto' }, children: [_jsx("div", { style: { display: "flex" }, children: renderTaskIcons({ stateLabel, stateTooltipLabel, pdg, ID1Name, endTime, remTime, isNew, numberOfDays }) }), _jsxs("div", { className: "dx-tooltip-appointment-item-content-subject", children: [" ", showId && _jsxs("span", { children: [highlightTaskText(appointmentData.id.toString(), searchText, appointmentData.id), " - "] }), " ", highlightTaskText(appointmentData.text ?? '', searchText, currentTask.id)] }), _jsx("div", { className: "dx-tooltip-appointment-item-content-date", children: startTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.StartDate, ": ", formatDate(startTime)] })) }), _jsx("div", { className: "dx-tooltip-appointment-item-content-date", children: endTime !== undefined && (_jsxs("span", { children: [SDKUI_Localizator.Expiration, ": ", formatDate(endTime)] })) }), _jsxs("div", { className: "dx-tooltip-appointment-item-content-subject", children: [SDKUI_Localizator.Priority, ": ", highlightTaskText(priority, searchText, currentTask.id)] }), _jsxs("div", { className: "dx-tooltip-appointment-item-content-subject", children: [fromCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.AssignedBy, ":"] }), "\u00A0", _jsxs("div", { children: [highlightTaskText(currentTask.fromName ?? '', searchText, currentTask.id), (showId && currentTask.fromID) && _jsxs("span", { children: ["(", currentTask.fromID, ")"] })] })] }), toCell && _jsxs("div", { style: { display: 'flex', alignItems: 'center', alignSelf: 'flex-end' }, children: [_jsxs("span", { children: [SDKUI_Localizator.AssignedTo_Female, ":"] }), "\u00A0", _jsxs("div", { children: [highlightTaskText(currentTask.toName ?? '', searchText, currentTask.id), (showId && currentTask.toID) && _jsxs("span", { children: ["(", currentTask.toID, ")"] })] })] })] })] }), _jsx(TMActionCalendar, { currentTask: currentTask, openTaskForm: openTaskForm, onDeleteCallback: onDeleteCallback })] });
|
|
148
148
|
};
|
|
149
149
|
const onCurrentCalendarDateChange = (value) => {
|
|
150
150
|
// Exit early if it's not a valid Date
|
|
@@ -3,7 +3,7 @@ import styled from 'styled-components';
|
|
|
3
3
|
import { treeFilterDataSource } from './TMTasksUtilsView';
|
|
4
4
|
import { FilterCategoryId, TaskView } from './TMTasksUtils';
|
|
5
5
|
import { useEffect, useRef, useState } from 'react';
|
|
6
|
-
import ScrollView from 'devextreme-react/
|
|
6
|
+
import ScrollView from 'devextreme-react/scroll-view';
|
|
7
7
|
import TMTooltip from '../../base/TMTooltip';
|
|
8
8
|
import { SDKUI_Localizator } from '../../../helper';
|
|
9
9
|
import TMDropDown from '../../editors/TMDropDown';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Appointment } from 'devextreme/ui/scheduler';
|
|
2
|
-
import { ContextMenuTypes } from 'devextreme-react/
|
|
2
|
+
import { ContextMenuTypes } from 'devextreme-react/context-menu';
|
|
3
3
|
import { TaskDescriptor, Task_States, PdGs, Priorities, ValidationItem } from '@topconsultnpm/sdk-ts';
|
|
4
4
|
import { FormModes, TaskContext } from '../../../ts';
|
|
5
5
|
import { TMDataGridContextMenuItem } from '../../base/TMDataGrid';
|
|
@@ -61,6 +61,7 @@ export declare const getTaskAssignedToMe: (tasks: Array<TaskDescriptor>) => Arra
|
|
|
61
61
|
export declare const getTaskNotPersonalAssignedToMe: (tasks: Array<TaskDescriptor>) => Array<TaskDescriptor>;
|
|
62
62
|
export declare const getTaskPersonalAssignedToMe: (tasks: Array<TaskDescriptor>) => Array<TaskDescriptor>;
|
|
63
63
|
export declare const getTaskAssignedByMe: (tasks: Array<TaskDescriptor>) => Array<TaskDescriptor>;
|
|
64
|
+
export declare const getTaskNotCompletedAssignedByMe: (tasks: Array<TaskDescriptor>) => Array<TaskDescriptor>;
|
|
64
65
|
export declare const getHeaderStatusFilterConfig: () => {
|
|
65
66
|
enabled: boolean;
|
|
66
67
|
dataSource: {
|
|
@@ -210,6 +210,21 @@ export const getTaskAssignedByMe = (tasks) => {
|
|
|
210
210
|
const userID = SDK_Globals.tmSession?.SessionDescr?.userID;
|
|
211
211
|
return tasks.filter((task) => task.toID !== undefined && task.toID !== userID);
|
|
212
212
|
};
|
|
213
|
+
export const getTaskNotCompletedAssignedByMe = (tasks) => {
|
|
214
|
+
const userID = SDK_Globals.tmSession?.SessionDescr?.userID;
|
|
215
|
+
return tasks
|
|
216
|
+
.filter((task) => task.toID !== undefined &&
|
|
217
|
+
task.toID !== userID &&
|
|
218
|
+
task.state !== Task_States.Completed).sort((a, b) => {
|
|
219
|
+
if (!a.endTime && !b.endTime)
|
|
220
|
+
return 0;
|
|
221
|
+
if (!a.endTime)
|
|
222
|
+
return 1;
|
|
223
|
+
if (!b.endTime)
|
|
224
|
+
return -1;
|
|
225
|
+
return a.endTime.getTime() - b.endTime.getTime();
|
|
226
|
+
});
|
|
227
|
+
};
|
|
213
228
|
export const getHeaderStatusFilterConfig = () => ({
|
|
214
229
|
enabled: true,
|
|
215
230
|
dataSource: getStatusLocalizatorValues().map(item => ({
|
|
@@ -298,7 +313,7 @@ export const taskValidatorAsync = async (taskDescriptor) => {
|
|
|
298
313
|
}
|
|
299
314
|
// Validate toID
|
|
300
315
|
if (!taskDescriptor.toID || taskDescriptor.toID <= 0)
|
|
301
|
-
vil.push(new ValidationItem(ResultTypes.ERROR, SDKUI_Localizator.
|
|
316
|
+
vil.push(new ValidationItem(ResultTypes.ERROR, SDKUI_Localizator.AssignedTo_Female, `${SDK_Localizator.RequiredField}`));
|
|
302
317
|
// Validate that startTime is less than or equal to endTime
|
|
303
318
|
if (taskDescriptor.startTime && taskDescriptor.endTime) {
|
|
304
319
|
if (taskDescriptor.startTime > taskDescriptor.endTime) {
|
|
@@ -318,7 +333,7 @@ const getPDGExtended = (pdg) => {
|
|
|
318
333
|
case PdGs.WG:
|
|
319
334
|
return SDKUI_Localizator.WorkGroup;
|
|
320
335
|
case PdGs.CF:
|
|
321
|
-
return SDKUI_Localizator.
|
|
336
|
+
return SDKUI_Localizator.Dossier;
|
|
322
337
|
case PdGs.DT:
|
|
323
338
|
return SDKUI_Localizator.Document;
|
|
324
339
|
case PdGs.WF:
|
|
@@ -426,7 +441,7 @@ export const createTasksMenuItems = (taskDescriptor, showId, setShowId, showSear
|
|
|
426
441
|
operationType: 'multiRow',
|
|
427
442
|
disabled: fromDatagrid ? false : !isTaskDescriptorDefined,
|
|
428
443
|
items: [
|
|
429
|
-
{ icon: '
|
|
444
|
+
{ icon: 'product', text: SDKUI_Localizator.NewFemale, operationType: 'multiRow', onClick: (rowIds) => markAsStatus(rowIds, Task_States.NotStarted) },
|
|
430
445
|
{ icon: 'refresh', text: SDKUI_Localizator.InProgress, operationType: 'multiRow', onClick: (rowIds) => markAsStatus(rowIds, Task_States.InProgress) },
|
|
431
446
|
{ icon: 'check', text: SDKUI_Localizator.Completed, operationType: 'multiRow', onClick: (rowIds) => markAsStatus(rowIds, Task_States.Completed) },
|
|
432
447
|
{ icon: 'taskstop', text: SDKUI_Localizator.Pending, operationType: 'multiRow', onClick: (rowIds) => markAsStatus(rowIds, Task_States.Waiting) },
|
|
@@ -7,8 +7,8 @@ import { FormModes } from "../../../ts";
|
|
|
7
7
|
import TMTooltip from "../../base/TMTooltip";
|
|
8
8
|
const taskStateIconClassMap = () => {
|
|
9
9
|
return new Map([
|
|
10
|
-
[Task_States.None, "dx-icon-
|
|
11
|
-
[Task_States.NotStarted, "dx-icon-
|
|
10
|
+
[Task_States.None, "dx-icon-product"],
|
|
11
|
+
[Task_States.NotStarted, "dx-icon-product"],
|
|
12
12
|
[Task_States.InProgress, "dx-icon-refresh"],
|
|
13
13
|
[Task_States.Completed, "dx-icon-check"],
|
|
14
14
|
[Task_States.Waiting, "dx-icon-taskstop"],
|
|
@@ -35,7 +35,28 @@ export const calculateNumberOfDays = (startTime, endTime) => {
|
|
|
35
35
|
};
|
|
36
36
|
export const renderTaskIcons = (taskData) => {
|
|
37
37
|
const { stateLabel, stateTooltipLabel, pdg, ID1Name, endTime, remTime, isNew, numberOfDays } = taskData;
|
|
38
|
-
return (_jsxs(
|
|
38
|
+
return (_jsxs("div", { style: { display: "flex", alignItems: "center", gap: "4px" }, children: [_jsx(TMTooltip, { content: stateTooltipLabel, children: _jsx("div", { className: "task-icon", children: taskStateIconMap().get(stateLabel) }) }), (stateLabel !== Task_States.Completed && endTime && taskIsExpiringSoon(endTime, remTime)) &&
|
|
39
|
+
_jsx(TMTooltip, { content: SDKUI_Localizator.Expiring, children: _jsx("i", { className: "dx-icon-warning task-icon" }) }), _jsx(TMTooltip, { content: gotoPDGExtendedLabel(false, pdg ?? PdGs.None, ID1Name), children: _jsx("div", { className: "task-icon", style: {
|
|
40
|
+
marginLeft: pdg === PdGs.CF || pdg === PdGs.WG ? "-4px" : undefined,
|
|
41
|
+
marginRight: pdg === PdGs.CF || pdg === PdGs.WG ? "-4px" : undefined,
|
|
42
|
+
}, children: getPdgsIconMap().get(pdg) }) }), numberOfDays > 1 &&
|
|
43
|
+
_jsx(TMTooltip, { content: SDKUI_Localizator.ActivityOverMultipleDays.replaceParams(numberOfDays), children: _jsx("div", { className: "task-icon", style: {
|
|
44
|
+
display: "inline-flex",
|
|
45
|
+
alignItems: "center",
|
|
46
|
+
justifyContent: "center",
|
|
47
|
+
minWidth: "20px",
|
|
48
|
+
height: "20px",
|
|
49
|
+
padding: "0 4px",
|
|
50
|
+
borderRadius: "12px",
|
|
51
|
+
border: "1px solid #0078d4",
|
|
52
|
+
backgroundColor: "rgba(0, 120, 212, 0.08)",
|
|
53
|
+
color: "#0078d4",
|
|
54
|
+
fontSize: "11px",
|
|
55
|
+
fontWeight: 600,
|
|
56
|
+
lineHeight: 1,
|
|
57
|
+
boxSizing: "border-box"
|
|
58
|
+
}, children: numberOfDays > 99 ? "99+" : numberOfDays }) }), isNew &&
|
|
59
|
+
_jsx(TMTooltip, { content: SDKUI_Localizator.NewAssignedActivity, children: _jsx("i", { className: "dx-icon-bell task-icon" }) })] }));
|
|
39
60
|
};
|
|
40
61
|
export const TMActionCalendar = (props) => {
|
|
41
62
|
const { currentTask, openTaskForm, onDeleteCallback } = props;
|
|
@@ -72,7 +93,8 @@ export const priorityLegend = () => _jsx("div", { style: { display: 'flex', alig
|
|
|
72
93
|
export const highlightTaskText = (text, search, taskId) => {
|
|
73
94
|
if (!search)
|
|
74
95
|
return text;
|
|
75
|
-
const
|
|
96
|
+
const escapedSearchText = search.trim().replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
97
|
+
const regex = new RegExp(`(${escapedSearchText})`, 'gi');
|
|
76
98
|
const parts = text.split(regex);
|
|
77
99
|
return parts.map((part, index) => part.toLowerCase() === search.toLowerCase() ? (_jsx("span", { style: { color: "#fff", backgroundColor: '#0f6cbd' }, children: part }, taskId + "-" + index)) : (part));
|
|
78
100
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
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 { AssignedTab, checkIfNew, createTasksMenuItems, getHeaderPriorityFilterConfig, getHeaderStatusFilterConfig, getMondayOfCurrentWeek, getNewTaskCount, getStatusLocalizatorValue, isTaskAssignedToAnotherUser, TaskView, TEXT_NOT_SELECTED_COLOR } from "./TMTasksUtils";
|
|
3
|
+
import { AssignedTab, checkIfNew, createTasksMenuItems, getHeaderPriorityFilterConfig, getHeaderStatusFilterConfig, getMondayOfCurrentWeek, getNewTaskCount, getStatusLocalizatorValue, isTaskAssignedToAnotherUser, LIGTH_CYAN, LIGTH_RED_ORGANGE, TaskView, TEXT_NOT_SELECTED_COLOR } from "./TMTasksUtils";
|
|
4
4
|
import { TabPanel, Item } from 'devextreme-react/tab-panel';
|
|
5
5
|
import { Priorities, ResultTypes, SDK_Globals, Task_States } from "@topconsultnpm/sdk-ts";
|
|
6
6
|
import { calculateNumberOfDays, renderTaskIcons } from "./TMTasksUtilsView";
|
|
7
7
|
import { getPriorityLocalizatorValue } from "../tasks/TMTasksUtils";
|
|
8
|
-
import ContextMenu from 'devextreme-react/
|
|
8
|
+
import ContextMenu from 'devextreme-react/context-menu';
|
|
9
9
|
import { calcResponsiveSizes, getExceptionMessage, SDKUI_Localizator, StyledTabItem, TMCountBadge } from "../../../helper";
|
|
10
10
|
import { useDeviceType } from "../../base/TMDeviceProvider";
|
|
11
11
|
import { FormModes } from "../../../ts";
|
|
@@ -362,11 +362,17 @@ const TMTasksView = (props) => {
|
|
|
362
362
|
const isCompleted = state === Task_States.Completed;
|
|
363
363
|
const isExpired = endTime && endTime < new Date();
|
|
364
364
|
const isNewTask = checkIfNew(fromID, isNew);
|
|
365
|
-
|
|
365
|
+
const priorityColor = cellData.value === Priorities.High ? LIGTH_RED_ORGANGE : LIGTH_CYAN;
|
|
366
|
+
return (_jsx("div", { style: {
|
|
367
|
+
display: 'flex',
|
|
368
|
+
alignItems: 'center',
|
|
369
|
+
borderLeft: `4px solid ${priorityColor}`,
|
|
370
|
+
paddingLeft: '8px',
|
|
366
371
|
color: isCompleted ? '#000' : (isExpired ? 'red' : '#000'),
|
|
367
372
|
textDecoration: isCompleted ? 'line-through' : 'none',
|
|
368
|
-
fontWeight: isNewTask ? 'bold' : 'normal'
|
|
369
|
-
|
|
373
|
+
fontWeight: isNewTask ? 'bold' : 'normal',
|
|
374
|
+
height: '100%'
|
|
375
|
+
}, children: priorityLabel }));
|
|
370
376
|
}, []);
|
|
371
377
|
const cellDatetimeRender = useCallback((cellData) => {
|
|
372
378
|
const data = cellData.data;
|
|
@@ -503,7 +509,7 @@ const TMTasksView = (props) => {
|
|
|
503
509
|
},
|
|
504
510
|
{
|
|
505
511
|
dataField: "toName",
|
|
506
|
-
caption: SDKUI_Localizator.
|
|
512
|
+
caption: SDKUI_Localizator.AssignedTo_Female,
|
|
507
513
|
dataType: 'string',
|
|
508
514
|
cellRender: cellToRender,
|
|
509
515
|
headerCellRender: (e) => _jsx(RenderCustomHeader, { data: e }),
|
|
@@ -80,7 +80,7 @@ export const WorkFlowOperationButtons = (props) => {
|
|
|
80
80
|
setIsSignWorkflow(false);
|
|
81
81
|
}
|
|
82
82
|
}, [dtd]);
|
|
83
|
-
return (_jsx(StyledWorkFlowOperationButtonsContainer, { "$isMobile": isMobile, children: isSignWorkflow ? (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconSignaturePencil, {}), caption: SDKUI_Localizator.SignatureAndApprove, width: "160px", disabled: signApproveDisable, onClick: () => !signApproveDisable && onSignApprove?.(),
|
|
83
|
+
return (_jsx(StyledWorkFlowOperationButtonsContainer, { "$isMobile": isMobile, children: isSignWorkflow ? (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconSignaturePencil, {}), caption: SDKUI_Localizator.SignatureAndApprove, width: "160px", disabled: signApproveDisable, onClick: () => !signApproveDisable && onSignApprove?.(), onMouseDown: e => e.stopPropagation(), advancedColor: "#1a9a49", color: "success" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconCloseOutline, {}), caption: SDKUI_Localizator.Reject, disabled: rejectDisable, onClick: () => !rejectDisable && onReject?.(), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.error, color: "error" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconInfo, { fontSize: 16 }), caption: SDKUI_Localizator.MoreInformation, width: "180px", disabled: infoDisable, onClick: () => !infoDisable && onMoreInfo?.(), onMouseDown: e => e.stopPropagation(), advancedColor: TMColors.info, color: "info" })] })) : (_jsxs(_Fragment, { children: [_jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconApply, {}), caption: SDKUI_Localizator.Approve, disabled: approveDisable, onClick: () => !approveDisable && onApprove?.(), advancedColor: "#1a9a49", color: "success" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconCloseOutline, {}), caption: SDKUI_Localizator.Reject, disabled: rejectDisable, onClick: () => !rejectDisable && onReject?.(), advancedColor: TMColors.error, color: "error" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconUser, { fontSize: 16 }), caption: SDKUI_Localizator.Reassign, disabled: reassignDisable, onClick: () => !reassignDisable && onReAssign?.(), advancedColor: TMColors.tertiary, color: "tertiary" }), _jsx(TMButton, { btnStyle: isMobile ? 'toolbar' : 'advanced', showTooltip: isMobile, icon: _jsx(IconInfo, { fontSize: 16 }), caption: SDKUI_Localizator.MoreInformation, width: "180px", disabled: infoDisable, onClick: () => !infoDisable && onMoreInfo?.(), advancedColor: TMColors.info, color: "info" })] })) }));
|
|
84
84
|
};
|
|
85
85
|
export const WorkFlowApproveRejectPopUp = ({ TID = 0, DID = 0, deviceType = DeviceType.DESKTOP, isReject, selectedItems = [], onClose, onCompleted }) => {
|
|
86
86
|
const [commentValue, setCommentValue] = useState('');
|
|
@@ -198,7 +198,7 @@ export const WorkFlowMoreInfoPopUp = ({ DID = 0, TID = 0, deviceType = DeviceTyp
|
|
|
198
198
|
}
|
|
199
199
|
// Validate toID
|
|
200
200
|
if (!taskDescriptor.toID || taskDescriptor.toID <= 0)
|
|
201
|
-
vil.push(new ValidationItem(ResultTypes.ERROR, SDKUI_Localizator.
|
|
201
|
+
vil.push(new ValidationItem(ResultTypes.ERROR, SDKUI_Localizator.AssignedTo_Female, `${SDK_Localizator.RequiredField}`));
|
|
202
202
|
return vil;
|
|
203
203
|
};
|
|
204
204
|
const requestMoreInfoAsync = async () => {
|
|
@@ -271,7 +271,7 @@ export const WorkFlowMoreInfoPopUp = ({ DID = 0, TID = 0, deviceType = DeviceTyp
|
|
|
271
271
|
}
|
|
272
272
|
});
|
|
273
273
|
};
|
|
274
|
-
return (_jsx(TMModal, { title: SDKUI_Localizator.MoreInformation, onClose: onClose, width: deviceType === DeviceType.MOBILE ? '95%' : '640px', height: deviceType === DeviceType.MOBILE ? '60%' : '440px', isModal: true, children: _jsxs(StyledModalBodyWrapper, { children: [_jsxs(StyledModalContentContainer, { children: [_jsx(TMUserChooser, { width: "250px", label: SDKUI_Localizator.RequestTo, dataSource: users, values: task?.toID ? [task.toID] : [], validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.
|
|
274
|
+
return (_jsx(TMModal, { title: SDKUI_Localizator.MoreInformation, onClose: onClose, width: deviceType === DeviceType.MOBILE ? '95%' : '640px', height: deviceType === DeviceType.MOBILE ? '60%' : '440px', isModal: true, children: _jsxs(StyledModalBodyWrapper, { children: [_jsxs(StyledModalContentContainer, { children: [_jsx(TMUserChooser, { width: "250px", label: SDKUI_Localizator.RequestTo, dataSource: users, values: task?.toID ? [task.toID] : [], validationItems: validationItems?.filter(o => o.PropertyName === SDKUI_Localizator.AssignedTo_Female), onValueChanged: (IDs) => {
|
|
275
275
|
if (IDs === undefined)
|
|
276
276
|
return;
|
|
277
277
|
setTask({ ...task ?? {}, toID: IDs?.[0] });
|