@ynput/ayon-frontend-shared 0.2.3 → 0.2.5
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/dist/ContextMenu.cjs.js +1 -0
- package/dist/ContextMenu.cjs.js.map +1 -1
- package/dist/ContextMenu.es.js +1 -0
- package/dist/ContextMenu.es.js.map +1 -1
- package/dist/DetailsPanel.cjs.js +23 -1
- package/dist/DetailsPanel.cjs.js.map +1 -1
- package/dist/DetailsPanel.es.js +23 -1
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +12 -1
- package/dist/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/ProjectTreeTable.es.js +14 -3
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/_virtual/_commonjsHelpers.cjs.js +0 -2
- package/dist/_virtual/_commonjsHelpers.cjs.js.map +1 -1
- package/dist/_virtual/_commonjsHelpers.es.js +0 -2
- package/dist/_virtual/_commonjsHelpers.es.js.map +1 -1
- package/dist/_virtual/index.cjs5.js +3 -5
- package/dist/_virtual/index.cjs5.js.map +1 -1
- package/dist/_virtual/index.cjs6.js +5 -3
- package/dist/_virtual/index.cjs6.js.map +1 -1
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +5 -2
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/api.cjs.js +24 -1
- package/dist/api.cjs.js.map +1 -1
- package/dist/api.es.js +26 -3
- package/dist/api.es.js.map +1 -1
- package/dist/components.cjs.js +12 -0
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +12 -0
- package/dist/components.es.js.map +1 -1
- package/dist/context.cjs.js +3 -0
- package/dist/context.cjs.js.map +1 -1
- package/dist/context.es.js +3 -0
- package/dist/context.es.js.map +1 -1
- package/dist/index.cjs.js +24 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +24 -2
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
- package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/src/api/base/client.cjs.js +3 -0
- package/dist/shared/src/api/base/client.cjs.js.map +1 -1
- package/dist/shared/src/api/base/client.es.js +3 -0
- package/dist/shared/src/api/base/client.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +130 -0
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +130 -0
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +8 -4
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +9 -5
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js +4 -0
- package/dist/shared/src/api/queries/entities/updateEntity.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/updateEntity.es.js +4 -0
- package/dist/shared/src/api/queries/entities/updateEntity.es.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +267 -0
- package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/getLists.es.js +267 -0
- package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js +51 -0
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js +51 -0
- package/dist/shared/src/api/queries/entityLists/getListsAttributes.es.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +169 -0
- package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js +169 -0
- package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/updateListsAttributes.cjs.js +29 -0
- package/dist/shared/src/api/queries/entityLists/updateListsAttributes.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/entityLists/updateListsAttributes.es.js +29 -0
- package/dist/shared/src/api/queries/entityLists/updateListsAttributes.es.js.map +1 -0
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +3 -4
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +3 -4
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +40 -5
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +40 -5
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/review/getReview.cjs.js +1 -1
- package/dist/shared/src/api/queries/review/getReview.es.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +1 -1
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +6 -2
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +7 -3
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +355 -0
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -0
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +355 -0
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -0
- package/dist/shared/src/components/AttributeEditor/components/MinMaxField.cjs.js +93 -0
- package/dist/shared/src/components/AttributeEditor/components/MinMaxField.cjs.js.map +1 -0
- package/dist/shared/src/components/AttributeEditor/components/MinMaxField.es.js +93 -0
- package/dist/shared/src/components/AttributeEditor/components/MinMaxField.es.js.map +1 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +4 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +4 -0
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +6 -2
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +6 -2
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
- package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.cjs.js +4 -2
- package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.cjs.js.map +1 -1
- package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.es.js +4 -2
- package/dist/shared/src/components/EmptyPlaceholder/EmptyPlaceholder.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +3 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +3 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +23 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +23 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js +194 -0
- package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js +195 -0
- package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.cjs.js +128 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.cjs.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.es.js +128 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.es.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.styled.cjs.js +185 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.styled.es.js +185 -0
- package/dist/shared/src/components/EnumEditor/EnumEditor.styled.es.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/hooks/useDraggable.cjs.js +67 -0
- package/dist/shared/src/components/EnumEditor/hooks/useDraggable.cjs.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/hooks/useDraggable.es.js +68 -0
- package/dist/shared/src/components/EnumEditor/hooks/useDraggable.es.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/util/index.cjs.js +19 -0
- package/dist/shared/src/components/EnumEditor/util/index.cjs.js.map +1 -0
- package/dist/shared/src/components/EnumEditor/util/index.es.js +19 -0
- package/dist/shared/src/components/EnumEditor/util/index.es.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js +78 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js +79 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnItem.es.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +352 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +353 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +113 -0
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +113 -0
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js +52 -0
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js +53 -0
- package/dist/shared/src/components/ProjectTableSettings/SortableColumnItem.es.js.map +1 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +4 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +4 -0
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +23 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +23 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +23 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +23 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +23 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +23 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +103 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +103 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +83 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +83 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -0
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -0
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +1 -0
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js +4 -0
- package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.es.js +4 -0
- package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +23 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +23 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +6 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +6 -1
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +2 -2
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +2 -2
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +23 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +23 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenu.css +54 -19
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js +11 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.cjs.js.map +1 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js +11 -1
- package/dist/shared/src/containers/ContextMenu/ContextMenuItem.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +23 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +23 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +25 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +25 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +24 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +24 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +26 -4
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +26 -4
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +5 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +5 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -0
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +1 -0
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/getThumbnails.es.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +6 -2
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +6 -2
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +1 -0
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js +2 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.es.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +2 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +2 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +5 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +5 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +7 -3
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +7 -3
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionVersions.es.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +198 -222
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +201 -225
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +1 -3
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +1 -3
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +361 -0
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +361 -0
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js +41 -20
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js +41 -20
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +29 -35
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +31 -37
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +33 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +34 -5
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +17 -11
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +17 -11
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableQueriesContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +190 -146
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +190 -146
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +10 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +10 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +15 -12
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +15 -12
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js +44 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js +45 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetEntityTypeData.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js +15 -7
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js +15 -7
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js +27 -31
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js +27 -31
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/{useUpdateOverview.cjs.js → useUpdateTableData.cjs.js} +48 -20
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/{useUpdateOverview.es.js → useUpdateTableData.es.js} +48 -20
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +2 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js +25 -20
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js +25 -20
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js +36 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js +36 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +39 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +39 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/loadingUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js +57 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js +58 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/validateUpdateEntities.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +10 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +10 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +2 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +17 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +17 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +53 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +53 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +24 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +6 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +6 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +4 -0
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +4 -0
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/SettingsPanelContext.cjs.js +63 -0
- package/dist/shared/src/context/SettingsPanelContext.cjs.js.map +1 -0
- package/dist/shared/src/context/SettingsPanelContext.es.js +63 -0
- package/dist/shared/src/context/SettingsPanelContext.es.js.map +1 -0
- package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js +1 -0
- package/dist/shared/src/context/ThumbnailUploaderContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ThumbnailUploaderContext.es.js +1 -0
- package/dist/shared/src/context/ThumbnailUploaderContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +5 -0
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +5 -0
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +6 -2
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +6 -2
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/shared/src/util/confirmDelete.cjs.js +3 -3
- package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
- package/dist/shared/src/util/confirmDelete.es.js +3 -3
- package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js +48 -0
- package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -0
- package/dist/shared/src/util/getAttributeIcon.es.js +48 -0
- package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -0
- package/dist/shared/src/util/platform.cjs.js +7 -6
- package/dist/shared/src/util/platform.cjs.js.map +1 -1
- package/dist/shared/src/util/platform.es.js +7 -6
- package/dist/shared/src/util/platform.es.js.map +1 -1
- package/dist/types/SimpleTable/SimpleTable.d.ts +43 -0
- package/dist/types/SimpleTable/SimpleTable.styled.d.ts +10 -0
- package/dist/types/SimpleTable/SimpleTableRowTemplate.d.ts +13 -0
- package/dist/types/SimpleTable/context/SimpleTableContext.d.ts +23 -0
- package/dist/types/SimpleTable/index.d.ts +5 -0
- package/dist/types/api/generated/graphql.d.ts +255 -39
- package/dist/types/api/queries/activities/getActivities.d.ts +16 -0
- package/dist/types/api/queries/activities/updateActivities.d.ts +32 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +16 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +16 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +16 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +3009 -0
- package/dist/types/api/queries/entityLists/getListsAttributes.d.ts +148 -0
- package/dist/types/api/queries/entityLists/index.d.ts +5 -0
- package/dist/types/api/queries/entityLists/types.d.ts +71 -0
- package/dist/types/api/queries/entityLists/updateLists.d.ts +1137 -0
- package/dist/types/api/queries/entityLists/updateListsAttributes.d.ts +176 -0
- package/dist/types/api/queries/index.d.ts +1 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +17 -1
- package/dist/types/api/queries/overview/updateOverview.d.ts +2 -2
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +16 -0
- package/dist/types/api/queries/users/getUsers.d.ts +16 -0
- package/dist/types/components/AttributeEditor/AttributeEditor.d.ts +18 -0
- package/dist/types/components/AttributeEditor/components/MinMaxField.d.ts +14 -0
- package/dist/types/components/AttributeEditor/components/index.d.ts +1 -0
- package/dist/types/components/AttributeEditor/index.d.ts +1 -0
- package/dist/types/components/EnumEditor/DraggableEnumEditorItem.d.ts +10 -0
- package/dist/types/components/EnumEditor/EnumEditor.d.ts +22 -0
- package/dist/types/components/EnumEditor/EnumEditor.styled.d.ts +23 -0
- package/dist/types/components/EnumEditor/hooks/useDraggable.d.ts +17 -0
- package/dist/types/components/EnumEditor/index.d.ts +1 -0
- package/dist/types/components/EnumEditor/util/index.d.ts +1 -0
- package/dist/types/components/ProjectTableSettings/ColumnItem.d.ts +14 -0
- package/dist/types/components/ProjectTableSettings/ColumnsSettings.d.ts +9 -0
- package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +18 -0
- package/dist/types/components/ProjectTableSettings/SortableColumnItem.d.ts +13 -0
- package/dist/types/components/ProjectTableSettings/index.d.ts +1 -0
- package/dist/types/components/SettingsPanel/SettingsPanel.d.ts +16 -0
- package/dist/types/components/SettingsPanel/SettingsPanelItemTemplate.d.ts +20 -0
- package/dist/types/components/SettingsPanel/index.d.ts +2 -0
- package/dist/types/components/index.d.ts +4 -0
- package/dist/types/containers/ContextMenu/ContextMenuItem.d.ts +3 -1
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +20 -7
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +23 -0
- package/dist/types/containers/ProjectTreeTable/context/CellEditingContext.d.ts +3 -3
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +6 -2
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +41 -34
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableQueriesContext.d.ts +3 -2
- package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardTypes.d.ts +4 -1
- package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardUtils.d.ts +2 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +21 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +7 -7
- package/dist/types/containers/ProjectTreeTable/hooks/useGetEntityTypeData.d.ts +6 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useHistory.d.ts +5 -3
- package/dist/types/containers/ProjectTreeTable/hooks/useOverviewTable.d.ts +5 -20
- package/dist/types/containers/ProjectTreeTable/hooks/{useUpdateOverview.d.ts → useUpdateTableData.d.ts} +12 -3
- package/dist/types/containers/ProjectTreeTable/index.d.ts +5 -1
- package/dist/types/containers/ProjectTreeTable/types/index.d.ts +4 -6
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +51 -12
- package/dist/types/containers/ProjectTreeTable/utils/cellUtils.d.ts +2 -3
- package/dist/types/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.d.ts +14 -2
- package/dist/types/containers/ProjectTreeTable/utils/getReadOnlyLists.d.ts +5 -0
- package/dist/types/containers/ProjectTreeTable/utils/getTableFieldOptions.d.ts +14 -0
- package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
- package/dist/types/containers/ProjectTreeTable/utils/validateUpdateEntities.d.ts +4 -0
- package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/TextWidget.d.ts +2 -0
- package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +9 -0
- package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +1 -0
- package/dist/types/context/SettingsPanelContext.d.ts +20 -0
- package/dist/types/context/index.d.ts +1 -0
- package/dist/types/util/getAttributeIcon.d.ts +4 -0
- package/dist/types/util/index.d.ts +1 -0
- package/dist/util.cjs.js +2 -0
- package/dist/util.cjs.js.map +1 -1
- package/dist/util.es.js +2 -0
- package/dist/util.es.js.map +1 -1
- package/package.json +2 -1
- package/dist/_virtual/lodash.cjs.js +0 -6
- package/dist/_virtual/lodash.cjs.js.map +0 -1
- package/dist/_virtual/lodash.cjs2.js +0 -5
- package/dist/_virtual/lodash.cjs2.js.map +0 -1
- package/dist/_virtual/lodash.es.js +0 -6
- package/dist/_virtual/lodash.es.js.map +0 -1
- package/dist/_virtual/lodash.es2.js +0 -5
- package/dist/_virtual/lodash.es2.js.map +0 -1
- package/dist/shared/node_modules/lodash/lodash.cjs.js +0 -5492
- package/dist/shared/node_modules/lodash/lodash.cjs.js.map +0 -1
- package/dist/shared/node_modules/lodash/lodash.es.js +0 -5492
- package/dist/shared/node_modules/lodash/lodash.es.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js +0 -269
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.cjs.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js +0 -270
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTableColumns.es.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateOverview.cjs.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateOverview.es.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.cjs.js +0 -69
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.cjs.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.es.js +0 -70
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useValidateUpdates.es.js.map +0 -1
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTableColumns.d.ts +0 -16
- package/dist/types/containers/ProjectTreeTable/hooks/useValidateUpdates.d.ts +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdateTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useUpdateTableData.ts"],"sourcesContent":["import { CellId } from '../utils/cellUtils'\nimport { CellValue } from '../widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { useProjectTableQueriesContext } from '../context/ProjectTableQueriesContext'\nimport { useCallback } from 'react'\nimport { InheritedDependent } from './useFolderRelationships'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { OperationModel } from '../types/operations'\nimport { PatchOperation } from '../types'\nimport { HistoryEntityUpdate, UseHistoryReturn } from './useHistory'\n\nexport type EntityUpdate = {\n rowId: string\n id: string\n type: string\n field: string\n value: CellValue | CellValue[] | null\n isAttrib?: boolean\n meta?: Record<string, any>\n}\nexport type UpdateTableEntities = (entities: EntityUpdate[], pushHistory?: boolean) => Promise<void>\n\nexport type InheritFromParentEntity = {\n rowId: string\n entityId: string\n entityType: string\n attribs: string[]\n ownAttrib: string[]\n folderId: string\n meta?: Record<string, any>\n}\nexport type InheritFromParent = (\n entities: InheritFromParentEntity[],\n pushHistory?: boolean,\n) => Promise<void>\n\nexport type UpdateTableEntity = (\n cellId: CellId,\n value: string,\n { includeSelection }: { includeSelection: boolean },\n) => Promise<void>\n\nexport type OperationWithRowId = OperationModel & { rowId: string; meta?: Record<string, any> }\n\ninterface UseUpdateTableDataProps {\n pushHistory?: UseHistoryReturn['pushHistory']\n}\n\nconst useUpdateTableData = (props?: UseUpdateTableDataProps) => {\n const { pushHistory } = props || {}\n const {\n getEntityById,\n projectName,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n } = useProjectTableContext()\n const { updateEntities } = useProjectTableQueriesContext()\n\n const handleUpdateEntities = useCallback<UpdateTableEntities>(\n async (entities = [], pushToHistory = true) => {\n if (!entities.length || !projectName) {\n return\n }\n\n // Record history of previous values before applying update\n if (pushHistory && pushToHistory) {\n const inverseEntities: HistoryEntityUpdate[] = entities.map(\n ({ rowId, id, type, field, isAttrib, meta }) => {\n const entityData = getEntityById(id) as Record<string, any>\n const entityId = entityData?.entityId || id\n const oldValue = isAttrib\n ? (entityData.attrib as Record<string, any>)?.[field] ?? null\n : entityData[field] ?? null\n\n // Check if the field was inherited (not in ownAttrib)\n const ownAttrib = entityData?.ownAttrib || []\n const wasInherited = isAttrib && !ownAttrib.includes(field)\n\n return {\n rowId: rowId,\n id: entityId,\n type,\n field,\n value: oldValue,\n isAttrib,\n wasInherited, // Track inheritance status for undo\n ownAttrib: ownAttrib,\n folderId: entityData?.folderId,\n meta,\n }\n },\n )\n const historyEntities: HistoryEntityUpdate[] = entities.flatMap(\n ({ rowId, id, type, field, value, isAttrib, meta }) => {\n const entityData = getEntityById(id)\n const entityId = entityData?.entityId || id\n\n if (!entityData) return []\n\n return {\n rowId: rowId,\n id: entityId,\n type,\n field,\n value,\n isAttrib,\n ownAttrib: entityData?.ownAttrib || [],\n folderId: 'folderId' in entityData ? entityData.folderId : entityData?.parentId,\n meta,\n }\n },\n )\n pushHistory(inverseEntities, historyEntities)\n }\n\n const supportedEntityTypes: OperationModel['entityType'][] = [\n 'task',\n 'folder',\n 'product',\n 'version',\n ]\n // Group operations by entity type for bulk processing\n let operations: OperationWithRowId[] = []\n for (const entity of entities) {\n let { id, type, field, value, isAttrib, meta } = entity\n const entityData = getEntityById(id)\n const entityId = entityData?.entityId || id\n // Skip unsupported entity types\n let entityType = type as OperationModel['entityType']\n if (!supportedEntityTypes.includes(entityType)) {\n continue\n }\n\n // create data object for change, taking into account if it's an attribute change\n const data: Record<string, any> = isAttrib\n ? { attrib: { [field]: value } }\n : { [field]: value }\n\n // if the entity is an attribute get the entity data\n // then update ownAttrib to include the new value\n if (isAttrib) {\n const ownAttrib = [...(entityData?.ownAttrib || [])]\n // add the new value to the ownAttrib if it doesn't already exist\n if (!ownAttrib.includes(field)) {\n ownAttrib.push(field)\n }\n // update the data object with the new ownAttrib\n data.ownAttrib = ownAttrib\n }\n\n const existingOperationIndex = operations.findIndex(\n (op) => op.entityId === entityId && op.entityType === entityType,\n )\n\n if (existingOperationIndex !== -1) {\n // Merge data with existing operation\n const existingOperation = operations[existingOperationIndex]\n let newData = { ...existingOperation.data, ...data }\n\n // @ts-ignore\n if (existingOperation.data?.attrib && data.attrib) {\n // @ts-ignore\n newData = { ...newData, attrib: { ...existingOperation.data.attrib, ...data.attrib } }\n }\n\n operations[existingOperationIndex] = {\n ...existingOperation,\n data: newData,\n }\n } else {\n // Add new operation\n operations.push({\n rowId: entity.rowId,\n entityType: entityType,\n entityId: entityId,\n type: 'update',\n data: data,\n meta: meta,\n })\n }\n }\n\n const folderAttribEntities: InheritedDependent[] = operations\n .filter((op) => !!op.entityId && op.type === 'update' && op.data && 'attrib' in op.data)\n .map((op) => ({\n entityId: op.entityId as string,\n entityType: op.entityType as 'folder' | 'task',\n attrib:\n op.data && 'attrib' in op.data ? (op.data?.attrib as InheritedDependent['attrib']) : {},\n }))\n\n const inheritedDependents = getInheritedDependents(folderAttribEntities)\n\n // convert to operations\n const inheritedDependentsOperations: PatchOperation[] = inheritedDependents.map((op) => ({\n entityId: op.entityId,\n entityType: op.entityType,\n data: {\n attrib: op.attrib,\n },\n }))\n\n // now make api call to update all entities\n try {\n await updateEntities({\n operations,\n patchOperations: inheritedDependentsOperations,\n })\n } catch (error: any) {\n console.error('Error updating entities:', error)\n toast.error('Failed to update entities: ' + error?.error)\n }\n },\n [\n projectName,\n updateEntities, //\n getEntityById,\n getInheritedDependents,\n pushHistory,\n ],\n )\n\n // set the attrib fields to be inherited from the parent\n // (remove the field from the ownAttrib array)\n // invalidate the cache for the folder/task so that it can be re-fetched with inherited values\n const inheritFromParent = useCallback<InheritFromParent>(\n async (entities, pushToHistory = true) => {\n if (!entities.length || !projectName) {\n return\n }\n\n // Record history for the inheritance operation\n if (pushToHistory && pushHistory) {\n // Create undo entities (restore explicit values)\n const undoEntities: HistoryEntityUpdate[] = []\n\n // For each entity and attribute being inherited, record current values\n for (const entity of entities) {\n const entityData = getEntityById(entity.entityId) as Record<string, any>\n\n // For each attribute that will be inherited, record its current value\n for (const attrib of entity.attribs) {\n if (entityData?.attrib && attrib in entityData.attrib) {\n undoEntities.push({\n rowId: entity.rowId,\n id: entity.entityId,\n type: entity.entityType,\n field: attrib,\n value: (entityData.attrib as Record<string, any>)[attrib],\n isAttrib: true,\n wasInherited: false, // Mark as not inherited\n ownAttrib: entityData?.ownAttrib || [],\n folderId: entityData?.folderId,\n meta: entityData.meta,\n })\n }\n }\n }\n\n // Create redo entities (to re-inherit)\n const redoEntities: HistoryEntityUpdate[] = entities.flatMap((entity) =>\n entity.attribs.map((attrib) => ({\n rowId: entity.rowId,\n id: entity.entityId,\n type: entity.entityType,\n field: attrib,\n value: null,\n isAttrib: true,\n wasInherited: true, // Mark as inherited\n ownAttrib: entity.ownAttrib,\n folderId: entity.folderId,\n meta: entity.meta,\n })),\n )\n\n // Push to history if we have changes to record\n if (undoEntities.length > 0) {\n pushHistory(undoEntities, redoEntities)\n }\n }\n\n const supportedEntityTypes: OperationModel['entityType'][] = ['task', 'folder']\n // Group operations by entity type for bulk processing\n const operations: OperationWithRowId[] = [] // operations sent to the server\n const entitiesToPatch: InheritFromParentEntity[] = []\n for (const entity of entities) {\n // Skip unsupported entity types\n let entityType = entity.entityType as OperationModel['entityType']\n if (!supportedEntityTypes.includes(entityType)) {\n continue\n }\n entityType = entityType as 'task' | 'folder'\n\n // Create data object with null values for each attrib to inherit\n const attribData: Record<string, null> = {}\n entity.attribs.forEach((attrib) => {\n attribData[attrib] = null\n })\n\n // Add new operation this is what's sent to the server and is actually updated in the DB\n operations.push({\n rowId: entity.rowId,\n entityType: entityType,\n entityId: entity.entityId,\n type: 'update',\n data: {\n attrib: attribData,\n },\n meta: entity.meta,\n })\n\n // check if this entity has a folderId that is in entities\n // if so we check their intersection attrib names\n const findTopFolder = () => {\n // For each entity, we need to find the top-most folder in the hierarchy\n const folderId = entity.folderId\n\n // Find all ancestor folders that are in our entities list\n const ancestorChain: InheritFromParentEntity[] = []\n let currentFolderId = folderId\n let currentFolder = entities.find((e) => e.entityId === currentFolderId)\n\n // Climb up the folder hierarchy to build the chain of ancestors\n while (currentFolder) {\n ancestorChain.push(currentFolder)\n currentFolderId = currentFolder.folderId\n currentFolder = entities.find((e) => e.entityId === currentFolderId)\n }\n\n // The top folder is the last one in our ancestor chain (if any)\n const topFolder =\n ancestorChain.length > 0 ? ancestorChain[ancestorChain.length - 1] : null\n\n return topFolder\n }\n\n const topFolder = findTopFolder()\n const folderAttribs = topFolder?.attribs || []\n const entityAttribsIntersection = entity.attribs.filter((attrib) =>\n folderAttribs.includes(attrib),\n )\n const entityAttribsRemoved = entity.attribs.filter(\n (attrib) => !folderAttribs.includes(attrib),\n )\n\n // only add to patch operations if there are attribs left\n if (entityAttribsRemoved.length > 0)\n entitiesToPatch.push({\n ...entity,\n attribs: entityAttribsRemoved,\n })\n\n if (topFolder && entityAttribsIntersection.length > 0) {\n entitiesToPatch.push({\n ...entity,\n attribs: entityAttribsIntersection,\n folderId: topFolder.folderId,\n })\n }\n }\n\n const patchOperations: PatchOperation[] = [] // operations only for patching the cache\n for (const entity of entitiesToPatch) {\n const entityType = entity.entityType as 'task' | 'folder'\n // we also need to update ownAttrib to remove the inherited attribs\n const ownAttrib = [...(entity.ownAttrib || [])].filter(\n (attrib) => !entity.attribs.includes(attrib),\n )\n\n // now we must calculate all the entities that need to be updated in the cache\n // first we need to find the the ancestor folder to inherit from\n const ancestorAttrib = findNonInheritedValues(entity.folderId, entity.attribs)\n\n const entityPatch = {\n entityId: entity.entityId,\n entityType: entityType,\n data: {\n attrib: ancestorAttrib,\n ownAttrib: ownAttrib,\n },\n }\n\n // create new patch operation for the entity\n patchOperations.push(entityPatch)\n\n // now find any dependent that also need updating\n const inheritedDependents = getInheritedDependents([\n { entityId: entity.entityId, entityType: entityType, attrib: ancestorAttrib },\n ])\n\n // convert to operations\n const inheritedDependentsOperations: PatchOperation[] = inheritedDependents.map((op) => ({\n entityId: op.entityId,\n entityType: op.entityType,\n data: {\n attrib: op.attrib,\n },\n }))\n\n // try to add to patch operations\n // if it already exists then merge the attribs\n for (const inheritedDependent of inheritedDependentsOperations) {\n const existingOperationIndex = patchOperations.findIndex(\n (op) => op.entityId === inheritedDependent.entityId,\n )\n\n if (existingOperationIndex !== -1) {\n // Merge attribs with existing operation\n const existingOperation = patchOperations[existingOperationIndex]\n let newAttrib = {\n // @ts-ignore\n ...(existingOperation.data?.attrib || {}),\n // @ts-ignore\n ...(inheritedDependent.data?.attrib || {}),\n }\n\n patchOperations[existingOperationIndex] = {\n ...existingOperation,\n data: { attrib: newAttrib },\n }\n } else {\n // Add new operation\n patchOperations.push({\n entityId: inheritedDependent.entityId,\n entityType: inheritedDependent.entityType,\n data: inheritedDependent.data,\n })\n }\n }\n }\n\n // now make api call to update all entities\n try {\n await updateEntities({\n operations,\n patchOperations,\n })\n } catch (error) {\n toast.error('Failed to update entities')\n }\n },\n [\n projectName,\n updateEntities,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n pushHistory,\n ],\n )\n\n return { updateEntities: handleUpdateEntities, inheritFromParent }\n}\n\nexport default useUpdateTableData\n"],"names":["useProjectTableContext","useProjectTableQueriesContext","useCallback","_a","toast","topFolder"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { toast } from "react-toastify";
|
|
|
2
2
|
import { useProjectTableQueriesContext } from "../context/ProjectTableQueriesContext.es.js";
|
|
3
3
|
import { useCallback } from "react";
|
|
4
4
|
import { useProjectTableContext } from "../context/ProjectTableContext.es.js";
|
|
5
|
-
const
|
|
5
|
+
const useUpdateTableData = (props) => {
|
|
6
6
|
const { pushHistory } = props || {};
|
|
7
7
|
const {
|
|
8
8
|
getEntityById,
|
|
@@ -20,14 +20,16 @@ const useUpdateOverview = (props) => {
|
|
|
20
20
|
}
|
|
21
21
|
if (pushHistory && pushToHistory) {
|
|
22
22
|
const inverseEntities = entities.map(
|
|
23
|
-
({ id, type, field, isAttrib }) => {
|
|
23
|
+
({ rowId, id, type, field, isAttrib, meta }) => {
|
|
24
24
|
var _a2;
|
|
25
25
|
const entityData = getEntityById(id);
|
|
26
|
+
const entityId = (entityData == null ? void 0 : entityData.entityId) || id;
|
|
26
27
|
const oldValue = isAttrib ? ((_a2 = entityData.attrib) == null ? void 0 : _a2[field]) ?? null : entityData[field] ?? null;
|
|
27
28
|
const ownAttrib = (entityData == null ? void 0 : entityData.ownAttrib) || [];
|
|
28
29
|
const wasInherited = isAttrib && !ownAttrib.includes(field);
|
|
29
30
|
return {
|
|
30
|
-
|
|
31
|
+
rowId,
|
|
32
|
+
id: entityId,
|
|
31
33
|
type,
|
|
32
34
|
field,
|
|
33
35
|
value: oldValue,
|
|
@@ -35,38 +37,48 @@ const useUpdateOverview = (props) => {
|
|
|
35
37
|
wasInherited,
|
|
36
38
|
// Track inheritance status for undo
|
|
37
39
|
ownAttrib,
|
|
38
|
-
folderId: entityData == null ? void 0 : entityData.folderId
|
|
40
|
+
folderId: entityData == null ? void 0 : entityData.folderId,
|
|
41
|
+
meta
|
|
39
42
|
};
|
|
40
43
|
}
|
|
41
44
|
);
|
|
42
45
|
const historyEntities = entities.flatMap(
|
|
43
|
-
({ id, type, field, value, isAttrib }) => {
|
|
46
|
+
({ rowId, id, type, field, value, isAttrib, meta }) => {
|
|
44
47
|
const entityData = getEntityById(id);
|
|
48
|
+
const entityId = (entityData == null ? void 0 : entityData.entityId) || id;
|
|
45
49
|
if (!entityData) return [];
|
|
46
50
|
return {
|
|
47
|
-
|
|
51
|
+
rowId,
|
|
52
|
+
id: entityId,
|
|
48
53
|
type,
|
|
49
54
|
field,
|
|
50
55
|
value,
|
|
51
56
|
isAttrib,
|
|
52
57
|
ownAttrib: (entityData == null ? void 0 : entityData.ownAttrib) || [],
|
|
53
|
-
folderId: "folderId" in entityData ? entityData.folderId : entityData == null ? void 0 : entityData.parentId
|
|
58
|
+
folderId: "folderId" in entityData ? entityData.folderId : entityData == null ? void 0 : entityData.parentId,
|
|
59
|
+
meta
|
|
54
60
|
};
|
|
55
61
|
}
|
|
56
62
|
);
|
|
57
63
|
pushHistory(inverseEntities, historyEntities);
|
|
58
64
|
}
|
|
59
|
-
const supportedEntityTypes = [
|
|
65
|
+
const supportedEntityTypes = [
|
|
66
|
+
"task",
|
|
67
|
+
"folder",
|
|
68
|
+
"product",
|
|
69
|
+
"version"
|
|
70
|
+
];
|
|
60
71
|
let operations = [];
|
|
61
72
|
for (const entity of entities) {
|
|
62
|
-
let { id, type, field, value, isAttrib } = entity;
|
|
73
|
+
let { id, type, field, value, isAttrib, meta } = entity;
|
|
74
|
+
const entityData = getEntityById(id);
|
|
75
|
+
const entityId = (entityData == null ? void 0 : entityData.entityId) || id;
|
|
63
76
|
let entityType = type;
|
|
64
77
|
if (!supportedEntityTypes.includes(entityType)) {
|
|
65
78
|
continue;
|
|
66
79
|
}
|
|
67
80
|
const data = isAttrib ? { attrib: { [field]: value } } : { [field]: value };
|
|
68
81
|
if (isAttrib) {
|
|
69
|
-
const entityData = getEntityById(id);
|
|
70
82
|
const ownAttrib = [...(entityData == null ? void 0 : entityData.ownAttrib) || []];
|
|
71
83
|
if (!ownAttrib.includes(field)) {
|
|
72
84
|
ownAttrib.push(field);
|
|
@@ -74,7 +86,7 @@ const useUpdateOverview = (props) => {
|
|
|
74
86
|
data.ownAttrib = ownAttrib;
|
|
75
87
|
}
|
|
76
88
|
const existingOperationIndex = operations.findIndex(
|
|
77
|
-
(op) => op.entityId ===
|
|
89
|
+
(op) => op.entityId === entityId && op.entityType === entityType
|
|
78
90
|
);
|
|
79
91
|
if (existingOperationIndex !== -1) {
|
|
80
92
|
const existingOperation = operations[existingOperationIndex];
|
|
@@ -88,10 +100,12 @@ const useUpdateOverview = (props) => {
|
|
|
88
100
|
};
|
|
89
101
|
} else {
|
|
90
102
|
operations.push({
|
|
103
|
+
rowId: entity.rowId,
|
|
91
104
|
entityType,
|
|
92
|
-
entityId
|
|
105
|
+
entityId,
|
|
93
106
|
type: "update",
|
|
94
|
-
data
|
|
107
|
+
data,
|
|
108
|
+
meta
|
|
95
109
|
});
|
|
96
110
|
}
|
|
97
111
|
}
|
|
@@ -117,10 +131,18 @@ const useUpdateOverview = (props) => {
|
|
|
117
131
|
patchOperations: inheritedDependentsOperations
|
|
118
132
|
});
|
|
119
133
|
} catch (error) {
|
|
120
|
-
|
|
134
|
+
console.error("Error updating entities:", error);
|
|
135
|
+
toast.error("Failed to update entities: " + (error == null ? void 0 : error.error));
|
|
121
136
|
}
|
|
122
137
|
},
|
|
123
|
-
[
|
|
138
|
+
[
|
|
139
|
+
projectName,
|
|
140
|
+
updateEntities,
|
|
141
|
+
//
|
|
142
|
+
getEntityById,
|
|
143
|
+
getInheritedDependents,
|
|
144
|
+
pushHistory
|
|
145
|
+
]
|
|
124
146
|
);
|
|
125
147
|
const inheritFromParent = useCallback(
|
|
126
148
|
async (entities, pushToHistory = true) => {
|
|
@@ -135,6 +157,7 @@ const useUpdateOverview = (props) => {
|
|
|
135
157
|
for (const attrib of entity.attribs) {
|
|
136
158
|
if ((entityData == null ? void 0 : entityData.attrib) && attrib in entityData.attrib) {
|
|
137
159
|
undoEntities.push({
|
|
160
|
+
rowId: entity.rowId,
|
|
138
161
|
id: entity.entityId,
|
|
139
162
|
type: entity.entityType,
|
|
140
163
|
field: attrib,
|
|
@@ -143,13 +166,15 @@ const useUpdateOverview = (props) => {
|
|
|
143
166
|
wasInherited: false,
|
|
144
167
|
// Mark as not inherited
|
|
145
168
|
ownAttrib: (entityData == null ? void 0 : entityData.ownAttrib) || [],
|
|
146
|
-
folderId: entityData == null ? void 0 : entityData.folderId
|
|
169
|
+
folderId: entityData == null ? void 0 : entityData.folderId,
|
|
170
|
+
meta: entityData.meta
|
|
147
171
|
});
|
|
148
172
|
}
|
|
149
173
|
}
|
|
150
174
|
}
|
|
151
175
|
const redoEntities = entities.flatMap(
|
|
152
176
|
(entity) => entity.attribs.map((attrib) => ({
|
|
177
|
+
rowId: entity.rowId,
|
|
153
178
|
id: entity.entityId,
|
|
154
179
|
type: entity.entityType,
|
|
155
180
|
field: attrib,
|
|
@@ -158,7 +183,8 @@ const useUpdateOverview = (props) => {
|
|
|
158
183
|
wasInherited: true,
|
|
159
184
|
// Mark as inherited
|
|
160
185
|
ownAttrib: entity.ownAttrib,
|
|
161
|
-
folderId: entity.folderId
|
|
186
|
+
folderId: entity.folderId,
|
|
187
|
+
meta: entity.meta
|
|
162
188
|
}))
|
|
163
189
|
);
|
|
164
190
|
if (undoEntities.length > 0) {
|
|
@@ -179,12 +205,14 @@ const useUpdateOverview = (props) => {
|
|
|
179
205
|
attribData[attrib] = null;
|
|
180
206
|
});
|
|
181
207
|
operations.push({
|
|
208
|
+
rowId: entity.rowId,
|
|
182
209
|
entityType,
|
|
183
210
|
entityId: entity.entityId,
|
|
184
211
|
type: "update",
|
|
185
212
|
data: {
|
|
186
213
|
attrib: attribData
|
|
187
|
-
}
|
|
214
|
+
},
|
|
215
|
+
meta: entity.meta
|
|
188
216
|
});
|
|
189
217
|
const findTopFolder = () => {
|
|
190
218
|
const folderId = entity.folderId;
|
|
@@ -291,6 +319,6 @@ const useUpdateOverview = (props) => {
|
|
|
291
319
|
return { updateEntities: handleUpdateEntities, inheritFromParent };
|
|
292
320
|
};
|
|
293
321
|
export {
|
|
294
|
-
|
|
322
|
+
useUpdateTableData as default
|
|
295
323
|
};
|
|
296
|
-
//# sourceMappingURL=
|
|
324
|
+
//# sourceMappingURL=useUpdateTableData.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdateTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useUpdateTableData.ts"],"sourcesContent":["import { CellId } from '../utils/cellUtils'\nimport { CellValue } from '../widgets/CellWidget'\nimport { toast } from 'react-toastify'\nimport { useProjectTableQueriesContext } from '../context/ProjectTableQueriesContext'\nimport { useCallback } from 'react'\nimport { InheritedDependent } from './useFolderRelationships'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { OperationModel } from '../types/operations'\nimport { PatchOperation } from '../types'\nimport { HistoryEntityUpdate, UseHistoryReturn } from './useHistory'\n\nexport type EntityUpdate = {\n rowId: string\n id: string\n type: string\n field: string\n value: CellValue | CellValue[] | null\n isAttrib?: boolean\n meta?: Record<string, any>\n}\nexport type UpdateTableEntities = (entities: EntityUpdate[], pushHistory?: boolean) => Promise<void>\n\nexport type InheritFromParentEntity = {\n rowId: string\n entityId: string\n entityType: string\n attribs: string[]\n ownAttrib: string[]\n folderId: string\n meta?: Record<string, any>\n}\nexport type InheritFromParent = (\n entities: InheritFromParentEntity[],\n pushHistory?: boolean,\n) => Promise<void>\n\nexport type UpdateTableEntity = (\n cellId: CellId,\n value: string,\n { includeSelection }: { includeSelection: boolean },\n) => Promise<void>\n\nexport type OperationWithRowId = OperationModel & { rowId: string; meta?: Record<string, any> }\n\ninterface UseUpdateTableDataProps {\n pushHistory?: UseHistoryReturn['pushHistory']\n}\n\nconst useUpdateTableData = (props?: UseUpdateTableDataProps) => {\n const { pushHistory } = props || {}\n const {\n getEntityById,\n projectName,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n findNonInheritedValues,\n } = useProjectTableContext()\n const { updateEntities } = useProjectTableQueriesContext()\n\n const handleUpdateEntities = useCallback<UpdateTableEntities>(\n async (entities = [], pushToHistory = true) => {\n if (!entities.length || !projectName) {\n return\n }\n\n // Record history of previous values before applying update\n if (pushHistory && pushToHistory) {\n const inverseEntities: HistoryEntityUpdate[] = entities.map(\n ({ rowId, id, type, field, isAttrib, meta }) => {\n const entityData = getEntityById(id) as Record<string, any>\n const entityId = entityData?.entityId || id\n const oldValue = isAttrib\n ? (entityData.attrib as Record<string, any>)?.[field] ?? null\n : entityData[field] ?? null\n\n // Check if the field was inherited (not in ownAttrib)\n const ownAttrib = entityData?.ownAttrib || []\n const wasInherited = isAttrib && !ownAttrib.includes(field)\n\n return {\n rowId: rowId,\n id: entityId,\n type,\n field,\n value: oldValue,\n isAttrib,\n wasInherited, // Track inheritance status for undo\n ownAttrib: ownAttrib,\n folderId: entityData?.folderId,\n meta,\n }\n },\n )\n const historyEntities: HistoryEntityUpdate[] = entities.flatMap(\n ({ rowId, id, type, field, value, isAttrib, meta }) => {\n const entityData = getEntityById(id)\n const entityId = entityData?.entityId || id\n\n if (!entityData) return []\n\n return {\n rowId: rowId,\n id: entityId,\n type,\n field,\n value,\n isAttrib,\n ownAttrib: entityData?.ownAttrib || [],\n folderId: 'folderId' in entityData ? entityData.folderId : entityData?.parentId,\n meta,\n }\n },\n )\n pushHistory(inverseEntities, historyEntities)\n }\n\n const supportedEntityTypes: OperationModel['entityType'][] = [\n 'task',\n 'folder',\n 'product',\n 'version',\n ]\n // Group operations by entity type for bulk processing\n let operations: OperationWithRowId[] = []\n for (const entity of entities) {\n let { id, type, field, value, isAttrib, meta } = entity\n const entityData = getEntityById(id)\n const entityId = entityData?.entityId || id\n // Skip unsupported entity types\n let entityType = type as OperationModel['entityType']\n if (!supportedEntityTypes.includes(entityType)) {\n continue\n }\n\n // create data object for change, taking into account if it's an attribute change\n const data: Record<string, any> = isAttrib\n ? { attrib: { [field]: value } }\n : { [field]: value }\n\n // if the entity is an attribute get the entity data\n // then update ownAttrib to include the new value\n if (isAttrib) {\n const ownAttrib = [...(entityData?.ownAttrib || [])]\n // add the new value to the ownAttrib if it doesn't already exist\n if (!ownAttrib.includes(field)) {\n ownAttrib.push(field)\n }\n // update the data object with the new ownAttrib\n data.ownAttrib = ownAttrib\n }\n\n const existingOperationIndex = operations.findIndex(\n (op) => op.entityId === entityId && op.entityType === entityType,\n )\n\n if (existingOperationIndex !== -1) {\n // Merge data with existing operation\n const existingOperation = operations[existingOperationIndex]\n let newData = { ...existingOperation.data, ...data }\n\n // @ts-ignore\n if (existingOperation.data?.attrib && data.attrib) {\n // @ts-ignore\n newData = { ...newData, attrib: { ...existingOperation.data.attrib, ...data.attrib } }\n }\n\n operations[existingOperationIndex] = {\n ...existingOperation,\n data: newData,\n }\n } else {\n // Add new operation\n operations.push({\n rowId: entity.rowId,\n entityType: entityType,\n entityId: entityId,\n type: 'update',\n data: data,\n meta: meta,\n })\n }\n }\n\n const folderAttribEntities: InheritedDependent[] = operations\n .filter((op) => !!op.entityId && op.type === 'update' && op.data && 'attrib' in op.data)\n .map((op) => ({\n entityId: op.entityId as string,\n entityType: op.entityType as 'folder' | 'task',\n attrib:\n op.data && 'attrib' in op.data ? (op.data?.attrib as InheritedDependent['attrib']) : {},\n }))\n\n const inheritedDependents = getInheritedDependents(folderAttribEntities)\n\n // convert to operations\n const inheritedDependentsOperations: PatchOperation[] = inheritedDependents.map((op) => ({\n entityId: op.entityId,\n entityType: op.entityType,\n data: {\n attrib: op.attrib,\n },\n }))\n\n // now make api call to update all entities\n try {\n await updateEntities({\n operations,\n patchOperations: inheritedDependentsOperations,\n })\n } catch (error: any) {\n console.error('Error updating entities:', error)\n toast.error('Failed to update entities: ' + error?.error)\n }\n },\n [\n projectName,\n updateEntities, //\n getEntityById,\n getInheritedDependents,\n pushHistory,\n ],\n )\n\n // set the attrib fields to be inherited from the parent\n // (remove the field from the ownAttrib array)\n // invalidate the cache for the folder/task so that it can be re-fetched with inherited values\n const inheritFromParent = useCallback<InheritFromParent>(\n async (entities, pushToHistory = true) => {\n if (!entities.length || !projectName) {\n return\n }\n\n // Record history for the inheritance operation\n if (pushToHistory && pushHistory) {\n // Create undo entities (restore explicit values)\n const undoEntities: HistoryEntityUpdate[] = []\n\n // For each entity and attribute being inherited, record current values\n for (const entity of entities) {\n const entityData = getEntityById(entity.entityId) as Record<string, any>\n\n // For each attribute that will be inherited, record its current value\n for (const attrib of entity.attribs) {\n if (entityData?.attrib && attrib in entityData.attrib) {\n undoEntities.push({\n rowId: entity.rowId,\n id: entity.entityId,\n type: entity.entityType,\n field: attrib,\n value: (entityData.attrib as Record<string, any>)[attrib],\n isAttrib: true,\n wasInherited: false, // Mark as not inherited\n ownAttrib: entityData?.ownAttrib || [],\n folderId: entityData?.folderId,\n meta: entityData.meta,\n })\n }\n }\n }\n\n // Create redo entities (to re-inherit)\n const redoEntities: HistoryEntityUpdate[] = entities.flatMap((entity) =>\n entity.attribs.map((attrib) => ({\n rowId: entity.rowId,\n id: entity.entityId,\n type: entity.entityType,\n field: attrib,\n value: null,\n isAttrib: true,\n wasInherited: true, // Mark as inherited\n ownAttrib: entity.ownAttrib,\n folderId: entity.folderId,\n meta: entity.meta,\n })),\n )\n\n // Push to history if we have changes to record\n if (undoEntities.length > 0) {\n pushHistory(undoEntities, redoEntities)\n }\n }\n\n const supportedEntityTypes: OperationModel['entityType'][] = ['task', 'folder']\n // Group operations by entity type for bulk processing\n const operations: OperationWithRowId[] = [] // operations sent to the server\n const entitiesToPatch: InheritFromParentEntity[] = []\n for (const entity of entities) {\n // Skip unsupported entity types\n let entityType = entity.entityType as OperationModel['entityType']\n if (!supportedEntityTypes.includes(entityType)) {\n continue\n }\n entityType = entityType as 'task' | 'folder'\n\n // Create data object with null values for each attrib to inherit\n const attribData: Record<string, null> = {}\n entity.attribs.forEach((attrib) => {\n attribData[attrib] = null\n })\n\n // Add new operation this is what's sent to the server and is actually updated in the DB\n operations.push({\n rowId: entity.rowId,\n entityType: entityType,\n entityId: entity.entityId,\n type: 'update',\n data: {\n attrib: attribData,\n },\n meta: entity.meta,\n })\n\n // check if this entity has a folderId that is in entities\n // if so we check their intersection attrib names\n const findTopFolder = () => {\n // For each entity, we need to find the top-most folder in the hierarchy\n const folderId = entity.folderId\n\n // Find all ancestor folders that are in our entities list\n const ancestorChain: InheritFromParentEntity[] = []\n let currentFolderId = folderId\n let currentFolder = entities.find((e) => e.entityId === currentFolderId)\n\n // Climb up the folder hierarchy to build the chain of ancestors\n while (currentFolder) {\n ancestorChain.push(currentFolder)\n currentFolderId = currentFolder.folderId\n currentFolder = entities.find((e) => e.entityId === currentFolderId)\n }\n\n // The top folder is the last one in our ancestor chain (if any)\n const topFolder =\n ancestorChain.length > 0 ? ancestorChain[ancestorChain.length - 1] : null\n\n return topFolder\n }\n\n const topFolder = findTopFolder()\n const folderAttribs = topFolder?.attribs || []\n const entityAttribsIntersection = entity.attribs.filter((attrib) =>\n folderAttribs.includes(attrib),\n )\n const entityAttribsRemoved = entity.attribs.filter(\n (attrib) => !folderAttribs.includes(attrib),\n )\n\n // only add to patch operations if there are attribs left\n if (entityAttribsRemoved.length > 0)\n entitiesToPatch.push({\n ...entity,\n attribs: entityAttribsRemoved,\n })\n\n if (topFolder && entityAttribsIntersection.length > 0) {\n entitiesToPatch.push({\n ...entity,\n attribs: entityAttribsIntersection,\n folderId: topFolder.folderId,\n })\n }\n }\n\n const patchOperations: PatchOperation[] = [] // operations only for patching the cache\n for (const entity of entitiesToPatch) {\n const entityType = entity.entityType as 'task' | 'folder'\n // we also need to update ownAttrib to remove the inherited attribs\n const ownAttrib = [...(entity.ownAttrib || [])].filter(\n (attrib) => !entity.attribs.includes(attrib),\n )\n\n // now we must calculate all the entities that need to be updated in the cache\n // first we need to find the the ancestor folder to inherit from\n const ancestorAttrib = findNonInheritedValues(entity.folderId, entity.attribs)\n\n const entityPatch = {\n entityId: entity.entityId,\n entityType: entityType,\n data: {\n attrib: ancestorAttrib,\n ownAttrib: ownAttrib,\n },\n }\n\n // create new patch operation for the entity\n patchOperations.push(entityPatch)\n\n // now find any dependent that also need updating\n const inheritedDependents = getInheritedDependents([\n { entityId: entity.entityId, entityType: entityType, attrib: ancestorAttrib },\n ])\n\n // convert to operations\n const inheritedDependentsOperations: PatchOperation[] = inheritedDependents.map((op) => ({\n entityId: op.entityId,\n entityType: op.entityType,\n data: {\n attrib: op.attrib,\n },\n }))\n\n // try to add to patch operations\n // if it already exists then merge the attribs\n for (const inheritedDependent of inheritedDependentsOperations) {\n const existingOperationIndex = patchOperations.findIndex(\n (op) => op.entityId === inheritedDependent.entityId,\n )\n\n if (existingOperationIndex !== -1) {\n // Merge attribs with existing operation\n const existingOperation = patchOperations[existingOperationIndex]\n let newAttrib = {\n // @ts-ignore\n ...(existingOperation.data?.attrib || {}),\n // @ts-ignore\n ...(inheritedDependent.data?.attrib || {}),\n }\n\n patchOperations[existingOperationIndex] = {\n ...existingOperation,\n data: { attrib: newAttrib },\n }\n } else {\n // Add new operation\n patchOperations.push({\n entityId: inheritedDependent.entityId,\n entityType: inheritedDependent.entityType,\n data: inheritedDependent.data,\n })\n }\n }\n }\n\n // now make api call to update all entities\n try {\n await updateEntities({\n operations,\n patchOperations,\n })\n } catch (error) {\n toast.error('Failed to update entities')\n }\n },\n [\n projectName,\n updateEntities,\n getInheritedDependents,\n findInheritedValueFromAncestors,\n pushHistory,\n ],\n )\n\n return { updateEntities: handleUpdateEntities, inheritFromParent }\n}\n\nexport default useUpdateTableData\n"],"names":["_a","topFolder"],"mappings":"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"}
|
|
@@ -56,10 +56,12 @@ const getBorderClasses = (borders) => {
|
|
|
56
56
|
if (borders & 8) classes.push("shadow-left");
|
|
57
57
|
return classes;
|
|
58
58
|
};
|
|
59
|
+
const getEntityDataById = (id, entitiesMap) => entitiesMap.get(id);
|
|
59
60
|
exports.BorderPosition = BorderPosition;
|
|
60
61
|
exports.getBorderClasses = getBorderClasses;
|
|
61
62
|
exports.getCellBorders = getCellBorders;
|
|
62
63
|
exports.getCellId = getCellId;
|
|
63
64
|
exports.getCellValue = getCellValue;
|
|
65
|
+
exports.getEntityDataById = getEntityDataById;
|
|
64
66
|
exports.parseCellId = parseCellId;
|
|
65
67
|
//# sourceMappingURL=cellUtils.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cellUtils.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/cellUtils.ts"],"sourcesContent":["/**\n * Shared cell utilities for table operations\n */\n\n// Type definitions for cell identifiers\nexport type CellId = string\nexport type RowId = string\nexport type ColId = string\n\n// Cell position in the grid\nexport interface CellPosition {\n rowId: RowId\n colId: ColId\n}\n\n// Cell border position flags - used for determining which borders to show\nexport enum BorderPosition {\n None = 0,\n Top = 1 << 0,\n Right = 1 << 1,\n Bottom = 1 << 2,\n Left = 1 << 3,\n All = Top | Right | Bottom | Left,\n}\n\n/**\n * Create a standardized cell ID from row and column IDs\n */\nexport const getCellId = (rowId: RowId, colId: ColId): CellId => `cell-${rowId}-${colId}`\n\n/**\n * Parse a cell ID to extract row and column IDs\n * @returns CellPosition or null if invalid format\n */\nexport const parseCellId = (cellId: CellId): CellPosition | null => {\n const match = cellId.match(/^cell-(.+)-(.+)$/)\n if (!match) return null\n return { rowId: match[1], colId: match[2] }\n}\n\nexport const getCellValue = (obj: any, path: string): any => {\n if (!obj || !path) return undefined\n\n const parts = path.split('_')\n let current = obj\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part]\n } else {\n return undefined // Return undefined if any part of the path is invalid\n }\n }\n\n return current\n}\n\n/**\n * Determines which borders to display for a selected cell\n * based on its position within the selection grid\n *\n * @param rowIndex Current cell's row index\n * @param colIndex Current cell's column index\n * @param selectedCells 2D array representing selection state (true = selected)\n * @returns BorderPosition flags indicating which borders to display\n */\nexport const getCellBorders = (\n rowIndex: number,\n colIndex: number,\n selectedCells: boolean[][],\n): BorderPosition => {\n if (!selectedCells[rowIndex]?.[colIndex]) {\n return BorderPosition.None\n }\n\n let borders = BorderPosition.None\n\n // Check top border\n if (rowIndex === 0 || !selectedCells[rowIndex - 1]?.[colIndex]) {\n borders |= BorderPosition.Top\n }\n\n // Check right border\n if (!selectedCells[rowIndex]?.[colIndex + 1]) {\n borders |= BorderPosition.Right\n }\n\n // Check bottom border\n if (!selectedCells[rowIndex + 1]?.[colIndex]) {\n borders |= BorderPosition.Bottom\n }\n\n // Check left border\n if (colIndex === 0 || !selectedCells[rowIndex]?.[colIndex - 1]) {\n borders |= BorderPosition.Left\n }\n\n return borders\n}\n\n/**\n * Converts border position flags to CSS classes for shadow styling\n */\nexport const getBorderClasses = (borders: BorderPosition): string[] => {\n const classes: string[] = []\n\n if (borders & BorderPosition.Top) classes.push('shadow-top')\n if (borders & BorderPosition.Right) classes.push('shadow-right')\n if (borders & BorderPosition.Bottom) classes.push('shadow-bottom')\n if (borders & BorderPosition.Left) classes.push('shadow-left')\n\n return classes\n}\n"],"names":["BorderPosition"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"cellUtils.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/cellUtils.ts"],"sourcesContent":["/**\n * Shared cell utilities for table operations\n */\n\nimport { EMapResult, EntitiesMap } from '../types'\n\n// Type definitions for cell identifiers\nexport type CellId = string\nexport type RowId = string\nexport type ColId = string\n\n// Cell position in the grid\nexport interface CellPosition {\n rowId: RowId\n colId: ColId\n}\n\n// Cell border position flags - used for determining which borders to show\nexport enum BorderPosition {\n None = 0,\n Top = 1 << 0,\n Right = 1 << 1,\n Bottom = 1 << 2,\n Left = 1 << 3,\n All = Top | Right | Bottom | Left,\n}\n\n/**\n * Create a standardized cell ID from row and column IDs\n */\nexport const getCellId = (rowId: RowId, colId: ColId): CellId => `cell-${rowId}-${colId}`\n\n/**\n * Parse a cell ID to extract row and column IDs\n * @returns CellPosition or null if invalid format\n */\nexport const parseCellId = (cellId: CellId): CellPosition | null => {\n const match = cellId.match(/^cell-(.+)-(.+)$/)\n if (!match) return null\n return { rowId: match[1], colId: match[2] }\n}\n\nexport const getCellValue = (obj: any, path: string): any => {\n if (!obj || !path) return undefined\n\n const parts = path.split('_')\n let current = obj\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part]\n } else {\n return undefined // Return undefined if any part of the path is invalid\n }\n }\n\n return current\n}\n\n/**\n * Determines which borders to display for a selected cell\n * based on its position within the selection grid\n *\n * @param rowIndex Current cell's row index\n * @param colIndex Current cell's column index\n * @param selectedCells 2D array representing selection state (true = selected)\n * @returns BorderPosition flags indicating which borders to display\n */\nexport const getCellBorders = (\n rowIndex: number,\n colIndex: number,\n selectedCells: boolean[][],\n): BorderPosition => {\n if (!selectedCells[rowIndex]?.[colIndex]) {\n return BorderPosition.None\n }\n\n let borders = BorderPosition.None\n\n // Check top border\n if (rowIndex === 0 || !selectedCells[rowIndex - 1]?.[colIndex]) {\n borders |= BorderPosition.Top\n }\n\n // Check right border\n if (!selectedCells[rowIndex]?.[colIndex + 1]) {\n borders |= BorderPosition.Right\n }\n\n // Check bottom border\n if (!selectedCells[rowIndex + 1]?.[colIndex]) {\n borders |= BorderPosition.Bottom\n }\n\n // Check left border\n if (colIndex === 0 || !selectedCells[rowIndex]?.[colIndex - 1]) {\n borders |= BorderPosition.Left\n }\n\n return borders\n}\n\n/**\n * Converts border position flags to CSS classes for shadow styling\n */\nexport const getBorderClasses = (borders: BorderPosition): string[] => {\n const classes: string[] = []\n\n if (borders & BorderPosition.Top) classes.push('shadow-top')\n if (borders & BorderPosition.Right) classes.push('shadow-right')\n if (borders & BorderPosition.Bottom) classes.push('shadow-bottom')\n if (borders & BorderPosition.Left) classes.push('shadow-left')\n\n return classes\n}\n\n// get a entity from it's id\nexport const getEntityDataById = <T extends 'folder' | 'task' | 'product' | 'version'>(\n id: string,\n entitiesMap: EntitiesMap,\n) => entitiesMap.get(id) as EMapResult<T> | undefined\n"],"names":["BorderPosition"],"mappings":";;AAkBY,IAAA,mCAAAA,oBAAL;AACLA,kBAAAA,gBAAA,UAAO,CAAP,IAAA;AACAA,kBAAAA,gBAAA,SAAM,CAAN,IAAA;AACAA,kBAAAA,gBAAA,WAAQ,CAAR,IAAA;AACAA,kBAAAA,gBAAA,YAAS,CAAT,IAAA;AACAA,kBAAAA,gBAAA,UAAO,CAAP,IAAA;AACAA,kBAAAA,gBAAA,SAAM,EAAN,IAAA;AANUA,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAYL,MAAM,YAAY,CAAC,OAAc,UAAyB,QAAQ,KAAK,IAAI,KAAK;AAM1E,MAAA,cAAc,CAAC,WAAwC;AAC5D,QAAA,QAAQ,OAAO,MAAM,kBAAkB;AACzC,MAAA,CAAC,MAAc,QAAA;AACZ,SAAA,EAAE,OAAO,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,EAAE;AAC5C;AAEa,MAAA,eAAe,CAAC,KAAU,SAAsB;AAC3D,MAAI,CAAC,OAAO,CAAC,KAAa,QAAA;AAEpB,QAAA,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,UAAU;AAEd,aAAW,QAAQ,OAAO;AACxB,QAAI,WAAW,OAAO,YAAY,YAAY,QAAQ,SAAS;AAC7D,gBAAU,QAAQ,IAAI;AAAA,IAAA,OACjB;AACE,aAAA;AAAA,IAAA;AAAA,EACT;AAGK,SAAA;AACT;AAWO,MAAM,iBAAiB,CAC5B,UACA,UACA,kBACmB;;AACnB,MAAI,GAAC,mBAAc,QAAQ,MAAtB,mBAA0B,YAAW;AACjC,WAAA;AAAA,EAAA;AAGT,MAAI,UAAU;AAGV,MAAA,aAAa,KAAK,GAAC,mBAAc,WAAW,CAAC,MAA1B,mBAA8B,YAAW;AACnD,eAAA;AAAA,EAAA;AAIb,MAAI,GAAC,mBAAc,QAAQ,MAAtB,mBAA0B,WAAW,KAAI;AACjC,eAAA;AAAA,EAAA;AAIb,MAAI,GAAC,mBAAc,WAAW,CAAC,MAA1B,mBAA8B,YAAW;AACjC,eAAA;AAAA,EAAA;AAIT,MAAA,aAAa,KAAK,GAAC,mBAAc,QAAQ,MAAtB,mBAA0B,WAAW,KAAI;AACnD,eAAA;AAAA,EAAA;AAGN,SAAA;AACT;AAKa,MAAA,mBAAmB,CAAC,YAAsC;AACrE,QAAM,UAAoB,CAAC;AAE3B,MAAI,UAAU,EAA4B,SAAA,KAAK,YAAY;AAC3D,MAAI,UAAU,EAA8B,SAAA,KAAK,cAAc;AAC/D,MAAI,UAAU,EAA+B,SAAA,KAAK,eAAe;AACjE,MAAI,UAAU,EAA6B,SAAA,KAAK,aAAa;AAEtD,SAAA;AACT;AAGO,MAAM,oBAAoB,CAC/B,IACA,gBACG,YAAY,IAAI,EAAE;;;;;;;;"}
|
|
@@ -54,12 +54,14 @@ const getBorderClasses = (borders) => {
|
|
|
54
54
|
if (borders & 8) classes.push("shadow-left");
|
|
55
55
|
return classes;
|
|
56
56
|
};
|
|
57
|
+
const getEntityDataById = (id, entitiesMap) => entitiesMap.get(id);
|
|
57
58
|
export {
|
|
58
59
|
BorderPosition,
|
|
59
60
|
getBorderClasses,
|
|
60
61
|
getCellBorders,
|
|
61
62
|
getCellId,
|
|
62
63
|
getCellValue,
|
|
64
|
+
getEntityDataById,
|
|
63
65
|
parseCellId
|
|
64
66
|
};
|
|
65
67
|
//# sourceMappingURL=cellUtils.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cellUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/cellUtils.ts"],"sourcesContent":["/**\n * Shared cell utilities for table operations\n */\n\n// Type definitions for cell identifiers\nexport type CellId = string\nexport type RowId = string\nexport type ColId = string\n\n// Cell position in the grid\nexport interface CellPosition {\n rowId: RowId\n colId: ColId\n}\n\n// Cell border position flags - used for determining which borders to show\nexport enum BorderPosition {\n None = 0,\n Top = 1 << 0,\n Right = 1 << 1,\n Bottom = 1 << 2,\n Left = 1 << 3,\n All = Top | Right | Bottom | Left,\n}\n\n/**\n * Create a standardized cell ID from row and column IDs\n */\nexport const getCellId = (rowId: RowId, colId: ColId): CellId => `cell-${rowId}-${colId}`\n\n/**\n * Parse a cell ID to extract row and column IDs\n * @returns CellPosition or null if invalid format\n */\nexport const parseCellId = (cellId: CellId): CellPosition | null => {\n const match = cellId.match(/^cell-(.+)-(.+)$/)\n if (!match) return null\n return { rowId: match[1], colId: match[2] }\n}\n\nexport const getCellValue = (obj: any, path: string): any => {\n if (!obj || !path) return undefined\n\n const parts = path.split('_')\n let current = obj\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part]\n } else {\n return undefined // Return undefined if any part of the path is invalid\n }\n }\n\n return current\n}\n\n/**\n * Determines which borders to display for a selected cell\n * based on its position within the selection grid\n *\n * @param rowIndex Current cell's row index\n * @param colIndex Current cell's column index\n * @param selectedCells 2D array representing selection state (true = selected)\n * @returns BorderPosition flags indicating which borders to display\n */\nexport const getCellBorders = (\n rowIndex: number,\n colIndex: number,\n selectedCells: boolean[][],\n): BorderPosition => {\n if (!selectedCells[rowIndex]?.[colIndex]) {\n return BorderPosition.None\n }\n\n let borders = BorderPosition.None\n\n // Check top border\n if (rowIndex === 0 || !selectedCells[rowIndex - 1]?.[colIndex]) {\n borders |= BorderPosition.Top\n }\n\n // Check right border\n if (!selectedCells[rowIndex]?.[colIndex + 1]) {\n borders |= BorderPosition.Right\n }\n\n // Check bottom border\n if (!selectedCells[rowIndex + 1]?.[colIndex]) {\n borders |= BorderPosition.Bottom\n }\n\n // Check left border\n if (colIndex === 0 || !selectedCells[rowIndex]?.[colIndex - 1]) {\n borders |= BorderPosition.Left\n }\n\n return borders\n}\n\n/**\n * Converts border position flags to CSS classes for shadow styling\n */\nexport const getBorderClasses = (borders: BorderPosition): string[] => {\n const classes: string[] = []\n\n if (borders & BorderPosition.Top) classes.push('shadow-top')\n if (borders & BorderPosition.Right) classes.push('shadow-right')\n if (borders & BorderPosition.Bottom) classes.push('shadow-bottom')\n if (borders & BorderPosition.Left) classes.push('shadow-left')\n\n return classes\n}\n"],"names":["BorderPosition"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cellUtils.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/cellUtils.ts"],"sourcesContent":["/**\n * Shared cell utilities for table operations\n */\n\nimport { EMapResult, EntitiesMap } from '../types'\n\n// Type definitions for cell identifiers\nexport type CellId = string\nexport type RowId = string\nexport type ColId = string\n\n// Cell position in the grid\nexport interface CellPosition {\n rowId: RowId\n colId: ColId\n}\n\n// Cell border position flags - used for determining which borders to show\nexport enum BorderPosition {\n None = 0,\n Top = 1 << 0,\n Right = 1 << 1,\n Bottom = 1 << 2,\n Left = 1 << 3,\n All = Top | Right | Bottom | Left,\n}\n\n/**\n * Create a standardized cell ID from row and column IDs\n */\nexport const getCellId = (rowId: RowId, colId: ColId): CellId => `cell-${rowId}-${colId}`\n\n/**\n * Parse a cell ID to extract row and column IDs\n * @returns CellPosition or null if invalid format\n */\nexport const parseCellId = (cellId: CellId): CellPosition | null => {\n const match = cellId.match(/^cell-(.+)-(.+)$/)\n if (!match) return null\n return { rowId: match[1], colId: match[2] }\n}\n\nexport const getCellValue = (obj: any, path: string): any => {\n if (!obj || !path) return undefined\n\n const parts = path.split('_')\n let current = obj\n\n for (const part of parts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part]\n } else {\n return undefined // Return undefined if any part of the path is invalid\n }\n }\n\n return current\n}\n\n/**\n * Determines which borders to display for a selected cell\n * based on its position within the selection grid\n *\n * @param rowIndex Current cell's row index\n * @param colIndex Current cell's column index\n * @param selectedCells 2D array representing selection state (true = selected)\n * @returns BorderPosition flags indicating which borders to display\n */\nexport const getCellBorders = (\n rowIndex: number,\n colIndex: number,\n selectedCells: boolean[][],\n): BorderPosition => {\n if (!selectedCells[rowIndex]?.[colIndex]) {\n return BorderPosition.None\n }\n\n let borders = BorderPosition.None\n\n // Check top border\n if (rowIndex === 0 || !selectedCells[rowIndex - 1]?.[colIndex]) {\n borders |= BorderPosition.Top\n }\n\n // Check right border\n if (!selectedCells[rowIndex]?.[colIndex + 1]) {\n borders |= BorderPosition.Right\n }\n\n // Check bottom border\n if (!selectedCells[rowIndex + 1]?.[colIndex]) {\n borders |= BorderPosition.Bottom\n }\n\n // Check left border\n if (colIndex === 0 || !selectedCells[rowIndex]?.[colIndex - 1]) {\n borders |= BorderPosition.Left\n }\n\n return borders\n}\n\n/**\n * Converts border position flags to CSS classes for shadow styling\n */\nexport const getBorderClasses = (borders: BorderPosition): string[] => {\n const classes: string[] = []\n\n if (borders & BorderPosition.Top) classes.push('shadow-top')\n if (borders & BorderPosition.Right) classes.push('shadow-right')\n if (borders & BorderPosition.Bottom) classes.push('shadow-bottom')\n if (borders & BorderPosition.Left) classes.push('shadow-left')\n\n return classes\n}\n\n// get a entity from it's id\nexport const getEntityDataById = <T extends 'folder' | 'task' | 'product' | 'version'>(\n id: string,\n entitiesMap: EntitiesMap,\n) => entitiesMap.get(id) as EMapResult<T> | undefined\n"],"names":["BorderPosition"],"mappings":"AAkBY,IAAA,mCAAAA,oBAAL;AACLA,kBAAAA,gBAAA,UAAO,CAAP,IAAA;AACAA,kBAAAA,gBAAA,SAAM,CAAN,IAAA;AACAA,kBAAAA,gBAAA,WAAQ,CAAR,IAAA;AACAA,kBAAAA,gBAAA,YAAS,CAAT,IAAA;AACAA,kBAAAA,gBAAA,UAAO,CAAP,IAAA;AACAA,kBAAAA,gBAAA,SAAM,EAAN,IAAA;AANUA,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAYL,MAAM,YAAY,CAAC,OAAc,UAAyB,QAAQ,KAAK,IAAI,KAAK;AAM1E,MAAA,cAAc,CAAC,WAAwC;AAC5D,QAAA,QAAQ,OAAO,MAAM,kBAAkB;AACzC,MAAA,CAAC,MAAc,QAAA;AACZ,SAAA,EAAE,OAAO,MAAM,CAAC,GAAG,OAAO,MAAM,CAAC,EAAE;AAC5C;AAEa,MAAA,eAAe,CAAC,KAAU,SAAsB;AAC3D,MAAI,CAAC,OAAO,CAAC,KAAa,QAAA;AAEpB,QAAA,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,UAAU;AAEd,aAAW,QAAQ,OAAO;AACxB,QAAI,WAAW,OAAO,YAAY,YAAY,QAAQ,SAAS;AAC7D,gBAAU,QAAQ,IAAI;AAAA,IAAA,OACjB;AACE,aAAA;AAAA,IAAA;AAAA,EACT;AAGK,SAAA;AACT;AAWO,MAAM,iBAAiB,CAC5B,UACA,UACA,kBACmB;AAtDT;AAuDV,MAAI,GAAC,mBAAc,QAAQ,MAAtB,mBAA0B,YAAW;AACjC,WAAA;AAAA,EAAA;AAGT,MAAI,UAAU;AAGV,MAAA,aAAa,KAAK,GAAC,mBAAc,WAAW,CAAC,MAA1B,mBAA8B,YAAW;AACnD,eAAA;AAAA,EAAA;AAIb,MAAI,GAAC,mBAAc,QAAQ,MAAtB,mBAA0B,WAAW,KAAI;AACjC,eAAA;AAAA,EAAA;AAIb,MAAI,GAAC,mBAAc,WAAW,CAAC,MAA1B,mBAA8B,YAAW;AACjC,eAAA;AAAA,EAAA;AAIT,MAAA,aAAa,KAAK,GAAC,mBAAc,QAAQ,MAAtB,mBAA0B,WAAW,KAAI;AACnD,eAAA;AAAA,EAAA;AAGN,SAAA;AACT;AAKa,MAAA,mBAAmB,CAAC,YAAsC;AACrE,QAAM,UAAoB,CAAC;AAE3B,MAAI,UAAU,EAA4B,SAAA,KAAK,YAAY;AAC3D,MAAI,UAAU,EAA8B,SAAA,KAAK,cAAc;AAC/D,MAAI,UAAU,EAA+B,SAAA,KAAK,eAAe;AACjE,MAAI,UAAU,EAA6B,SAAA,KAAK,aAAa;AAEtD,SAAA;AACT;AAGO,MAAM,oBAAoB,CAC/B,IACA,gBACG,YAAY,IAAI,EAAE;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const ayonReactComponents = require("@ynput/ayon-react-components");
|
|
3
4
|
const NO_DATE = "no_date";
|
|
4
5
|
const clientFilterToQueryFilter = (filters) => {
|
|
5
6
|
if (!filters || filters.length === 0) {
|
|
@@ -9,7 +10,6 @@ const clientFilterToQueryFilter = (filters) => {
|
|
|
9
10
|
var _a;
|
|
10
11
|
return !!((_a = f.values) == null ? void 0 : _a.length);
|
|
11
12
|
}).filter((f) => !f.id.includes("text")).filter((f) => f.id !== "hierarchy").flatMap((filter) => convertFilterToCondition(filter));
|
|
12
|
-
console.log(conditions);
|
|
13
13
|
return {
|
|
14
14
|
conditions,
|
|
15
15
|
operator: "and"
|
|
@@ -17,7 +17,7 @@ const clientFilterToQueryFilter = (filters) => {
|
|
|
17
17
|
};
|
|
18
18
|
const convertFilterToCondition = (filter) => {
|
|
19
19
|
var _a, _b, _c;
|
|
20
|
-
const key = filter.id
|
|
20
|
+
const key = ayonReactComponents.getFilterFromId(filter.id);
|
|
21
21
|
let value;
|
|
22
22
|
const hasSomeValue = Array.isArray(filter.values) && ((_a = filter.values.map((v) => v.id)) == null ? void 0 : _a.includes("hasValue"));
|
|
23
23
|
const hasNoValue = Array.isArray(filter.values) && ((_b = filter.values.map((v) => v.id)) == null ? void 0 : _b.includes("noValue"));
|
|
@@ -30,6 +30,7 @@ const convertFilterToCondition = (filter) => {
|
|
|
30
30
|
}
|
|
31
31
|
const isListField = ((_c = filter.type) == null ? void 0 : _c.startsWith("list_of_")) || key.includes("tags") || key.includes("assignees");
|
|
32
32
|
const isDateField = filter.type === "datetime";
|
|
33
|
+
const isBooleanField = filter.type === "boolean";
|
|
33
34
|
let operator = "eq";
|
|
34
35
|
if (value === void 0) {
|
|
35
36
|
operator = filter.inverted ? "notnull" : "isnull";
|
|
@@ -49,25 +50,27 @@ const convertFilterToCondition = (filter) => {
|
|
|
49
50
|
}
|
|
50
51
|
} else if (isDateField) {
|
|
51
52
|
if (filter.values && filter.values.length > 0) {
|
|
52
|
-
const dateConditions = filter.values.flatMap(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
const dateConditions = filter.values.flatMap(
|
|
54
|
+
(filterValue) => {
|
|
55
|
+
const conditions = [];
|
|
56
|
+
const dateValues = filterValue.values;
|
|
57
|
+
if ((dateValues == null ? void 0 : dateValues[0]) !== void 0 && (dateValues == null ? void 0 : dateValues[0].id) !== NO_DATE) {
|
|
58
|
+
conditions.push({
|
|
59
|
+
key,
|
|
60
|
+
operator: filter.inverted ? "lte" : "gte",
|
|
61
|
+
value: dateValues[0].id
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if ((dateValues == null ? void 0 : dateValues[1]) !== void 0 && (dateValues == null ? void 0 : dateValues[1].id) !== NO_DATE) {
|
|
65
|
+
conditions.push({
|
|
66
|
+
key,
|
|
67
|
+
operator: filter.inverted ? "gte" : "lte",
|
|
68
|
+
value: dateValues[1].id
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return conditions;
|
|
61
72
|
}
|
|
62
|
-
|
|
63
|
-
conditions.push({
|
|
64
|
-
key,
|
|
65
|
-
operator: filter.inverted ? "gte" : "lte",
|
|
66
|
-
value: dateValues[1].id
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return conditions;
|
|
70
|
-
});
|
|
73
|
+
);
|
|
71
74
|
if (dateConditions.length > 0) {
|
|
72
75
|
return {
|
|
73
76
|
conditions: dateConditions,
|
|
@@ -76,6 +79,8 @@ const convertFilterToCondition = (filter) => {
|
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
operator = filter.inverted ? "ne" : "eq";
|
|
82
|
+
} else if (isBooleanField) {
|
|
83
|
+
operator = filter.inverted ? "ne" : "eq";
|
|
79
84
|
} else {
|
|
80
85
|
operator = filter.inverted ? "notin" : "in";
|
|
81
86
|
}
|
package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientFilterToQueryFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"clientFilterToQueryFilter.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.ts"],"sourcesContent":["import { FILTER_SEPARATOR, getFilterFromId } from '@ynput/ayon-react-components'\nimport { QueryCondition, QueryFilter } from '../types/operations'\n\n// New type that cherry picks only the needed fields from Filter\nexport type FilterForQuery = {\n id: string\n values?: { id: string; values?: { id: string }[] }[]\n type?: string\n singleSelect?: boolean\n inverted?: boolean\n operator?: string\n}\n\nconst NO_DATE = 'no_date'\nexport const clientFilterToQueryFilter = (filters: FilterForQuery[]): QueryFilter => {\n // If there are no filters, return an empty filter\n if (!filters || filters.length === 0) {\n return {}\n }\n\n // Process each filter as its own condition\n const conditions: (QueryCondition | QueryFilter)[] = filters\n .filter((f) => !!f.values?.length)\n .filter((f) => !f.id.includes('text')) // remove text search filters as they are handled separately\n .filter((f) => f.id !== 'hierarchy') // remove hierarchy filter as it is handled separately\n .flatMap((filter) => convertFilterToCondition(filter))\n\n // Return the QueryFilter with all conditions combined with AND\n return {\n conditions,\n operator: 'and',\n }\n}\n\n// Helper function to convert a single Filter to a QueryCondition\nconst convertFilterToCondition = (filter: FilterForQuery): QueryCondition => {\n // Extract key from filter ID (split by underscore if needed)\n const key = getFilterFromId(filter.id)\n\n // Handle values based on filter type\n let value: QueryCondition['value']\n\n // there is any value\n const hasSomeValue =\n Array.isArray(filter.values) && filter.values.map((v) => v.id)?.includes('hasValue')\n const hasNoValue =\n Array.isArray(filter.values) && filter.values.map((v) => v.id)?.includes('noValue')\n\n if (filter.values && filter.values.length > 0) {\n if (filter.singleSelect) {\n // @ts-expect-error\n value = convertValueByType(filter.values[0].id, filter.type)\n } else {\n // @ts-expect-error\n value = filter.values.map((v) => convertValueByType(v.id, filter.type))\n }\n }\n\n // Determine if this is likely a list field based on filter type\n const isListField =\n filter.type?.startsWith('list_of_') || key.includes('tags') || key.includes('assignees')\n const isDateField = filter.type === 'datetime'\n const isBooleanField = filter.type === 'boolean'\n\n // Determine the appropriate operator based on filter properties and type\n let operator: QueryCondition['operator'] = 'eq'\n\n // Handling NULL values\n if (value === undefined) {\n operator = filter.inverted ? 'notnull' : 'isnull'\n return { key, operator }\n }\n\n // Handle different filter types\n if (hasSomeValue) {\n // we set the value to the empty state and then say it should not be that\n value = isListField ? [] : undefined\n operator = isListField\n ? filter.inverted\n ? 'eq'\n : 'ne'\n : filter.inverted\n ? 'isnull'\n : 'notnull'\n } else if (hasNoValue) {\n // we set the value to the empty state and then say it should be that\n value = isListField ? [] : undefined\n operator = isListField\n ? filter.inverted\n ? 'ne'\n : 'eq'\n : filter.inverted\n ? 'notnull'\n : 'isnull'\n } else if (isListField) {\n if (filter.inverted) {\n operator = filter.operator === 'AND' ? 'excludesall' : 'excludesany'\n } else {\n operator = filter.operator === 'AND' ? 'includesall' : 'includesany'\n }\n } else if (isDateField) {\n // For date filters, we need to return a complete query filter with conditions\n if (filter.values && filter.values.length > 0) {\n // Create a flat list of all date conditions from all filter values\n const dateConditions: QueryCondition[] = filter.values.flatMap(\n (filterValue: FilterForQuery) => {\n const conditions: QueryCondition[] = []\n const dateValues = filterValue.values\n\n // First value is greater than (start date)\n if (dateValues?.[0] !== undefined && dateValues?.[0].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'lte' : 'gte',\n value: dateValues[0].id,\n })\n }\n\n // Second value is less than (end date)\n if (dateValues?.[1] !== undefined && dateValues?.[1].id !== NO_DATE) {\n conditions.push({\n key,\n operator: filter.inverted ? 'gte' : 'lte',\n value: dateValues[1].id,\n })\n }\n\n return conditions\n },\n )\n\n // If we have date conditions, return them as a nested filter instead of continuing\n if (dateConditions.length > 0) {\n // @ts-expect-error\n return {\n conditions: dateConditions,\n operator: filter.inverted ? 'or' : 'and',\n } as QueryFilter\n }\n }\n\n // If no date conditions were created, fall back to a basic equality check\n operator = filter.inverted ? 'ne' : 'eq'\n } else if (isBooleanField) {\n operator = filter.inverted ? 'ne' : 'eq'\n } else {\n // DEFAULT for other scalar fields\n operator = filter.inverted ? 'notin' : 'in'\n }\n\n return { key, value, operator }\n}\n\n// Helper function to convert values based on the filter type\nconst convertValueByType = (value: string, type?: string): string | number | boolean => {\n if (!type) return value\n\n switch (type) {\n case 'integer':\n return parseInt(value, 10)\n case 'float':\n return parseFloat(value)\n case 'boolean':\n return value.toLowerCase() === 'true'\n default:\n return value\n }\n}\n\nexport default clientFilterToQueryFilter\n"],"names":["getFilterFromId"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getFilterFromId } from "@ynput/ayon-react-components";
|
|
1
2
|
const NO_DATE = "no_date";
|
|
2
3
|
const clientFilterToQueryFilter = (filters) => {
|
|
3
4
|
if (!filters || filters.length === 0) {
|
|
@@ -7,7 +8,6 @@ const clientFilterToQueryFilter = (filters) => {
|
|
|
7
8
|
var _a;
|
|
8
9
|
return !!((_a = f.values) == null ? void 0 : _a.length);
|
|
9
10
|
}).filter((f) => !f.id.includes("text")).filter((f) => f.id !== "hierarchy").flatMap((filter) => convertFilterToCondition(filter));
|
|
10
|
-
console.log(conditions);
|
|
11
11
|
return {
|
|
12
12
|
conditions,
|
|
13
13
|
operator: "and"
|
|
@@ -15,7 +15,7 @@ const clientFilterToQueryFilter = (filters) => {
|
|
|
15
15
|
};
|
|
16
16
|
const convertFilterToCondition = (filter) => {
|
|
17
17
|
var _a, _b, _c;
|
|
18
|
-
const key = filter.id
|
|
18
|
+
const key = getFilterFromId(filter.id);
|
|
19
19
|
let value;
|
|
20
20
|
const hasSomeValue = Array.isArray(filter.values) && ((_a = filter.values.map((v) => v.id)) == null ? void 0 : _a.includes("hasValue"));
|
|
21
21
|
const hasNoValue = Array.isArray(filter.values) && ((_b = filter.values.map((v) => v.id)) == null ? void 0 : _b.includes("noValue"));
|
|
@@ -28,6 +28,7 @@ const convertFilterToCondition = (filter) => {
|
|
|
28
28
|
}
|
|
29
29
|
const isListField = ((_c = filter.type) == null ? void 0 : _c.startsWith("list_of_")) || key.includes("tags") || key.includes("assignees");
|
|
30
30
|
const isDateField = filter.type === "datetime";
|
|
31
|
+
const isBooleanField = filter.type === "boolean";
|
|
31
32
|
let operator = "eq";
|
|
32
33
|
if (value === void 0) {
|
|
33
34
|
operator = filter.inverted ? "notnull" : "isnull";
|
|
@@ -47,25 +48,27 @@ const convertFilterToCondition = (filter) => {
|
|
|
47
48
|
}
|
|
48
49
|
} else if (isDateField) {
|
|
49
50
|
if (filter.values && filter.values.length > 0) {
|
|
50
|
-
const dateConditions = filter.values.flatMap(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
const dateConditions = filter.values.flatMap(
|
|
52
|
+
(filterValue) => {
|
|
53
|
+
const conditions = [];
|
|
54
|
+
const dateValues = filterValue.values;
|
|
55
|
+
if ((dateValues == null ? void 0 : dateValues[0]) !== void 0 && (dateValues == null ? void 0 : dateValues[0].id) !== NO_DATE) {
|
|
56
|
+
conditions.push({
|
|
57
|
+
key,
|
|
58
|
+
operator: filter.inverted ? "lte" : "gte",
|
|
59
|
+
value: dateValues[0].id
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if ((dateValues == null ? void 0 : dateValues[1]) !== void 0 && (dateValues == null ? void 0 : dateValues[1].id) !== NO_DATE) {
|
|
63
|
+
conditions.push({
|
|
64
|
+
key,
|
|
65
|
+
operator: filter.inverted ? "gte" : "lte",
|
|
66
|
+
value: dateValues[1].id
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return conditions;
|
|
59
70
|
}
|
|
60
|
-
|
|
61
|
-
conditions.push({
|
|
62
|
-
key,
|
|
63
|
-
operator: filter.inverted ? "gte" : "lte",
|
|
64
|
-
value: dateValues[1].id
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return conditions;
|
|
68
|
-
});
|
|
71
|
+
);
|
|
69
72
|
if (dateConditions.length > 0) {
|
|
70
73
|
return {
|
|
71
74
|
conditions: dateConditions,
|
|
@@ -74,6 +77,8 @@ const convertFilterToCondition = (filter) => {
|
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
operator = filter.inverted ? "ne" : "eq";
|
|
80
|
+
} else if (isBooleanField) {
|
|
81
|
+
operator = filter.inverted ? "ne" : "eq";
|
|
77
82
|
} else {
|
|
78
83
|
operator = filter.inverted ? "notin" : "in";
|
|
79
84
|
}
|