@ynput/ayon-frontend-shared 0.3.36 → 0.3.37
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/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +24 -23
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +222 -215
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/_virtual/index.cjs12.js +1 -1
- package/dist/_virtual/index.cjs13.js +1 -1
- package/dist/_virtual/index.cjs15.js +1 -1
- package/dist/_virtual/index.cjs18.js +1 -1
- package/dist/_virtual/index.cjs19.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs8.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es12.js +2 -5
- package/dist/_virtual/index.es12.js.map +1 -1
- package/dist/_virtual/index.es13.js +2 -5
- package/dist/_virtual/index.es13.js.map +1 -1
- package/dist/_virtual/index.es14.js +2 -2
- package/dist/_virtual/index.es15.js +2 -2
- package/dist/_virtual/index.es16.js +2 -2
- package/dist/_virtual/index.es17.js +2 -2
- package/dist/_virtual/index.es18.js +2 -2
- package/dist/_virtual/index.es19.js +2 -2
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es7.js +2 -2
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/_virtual/index.es9.js +5 -2
- package/dist/_virtual/index.es9.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +77 -73
- package/dist/components.es.js.map +1 -1
- package/dist/context.cjs.js +1 -1
- package/dist/context.es.js +50 -49
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +33 -29
- package/dist/hooks.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +13 -10
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js.map +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/utils.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/utils.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/utils.es.js +1 -1
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +108 -23
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +138 -53
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/getActivities.es.js +42 -42
- package/dist/shared/src/api/queries/activities/getActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js +2 -0
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js +68 -0
- package/dist/shared/src/api/queries/activities/patchTableLatestComments.es.js.map +1 -0
- package/dist/shared/src/api/queries/activities/updateActivities.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/updateActivities.es.js +69 -62
- package/dist/shared/src/api/queries/activities/updateActivities.es.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js +64 -56
- package/dist/shared/src/api/queries/activities/util/activitiesHelpers.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js +57 -53
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js +27 -25
- package/dist/shared/src/api/queries/columnStats/metricTargets.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +1 -1
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js +1 -1
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js +4 -4
- package/dist/shared/src/api/queries/entityLists/listItemsColumnStats.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +212 -187
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +6 -3
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +6 -3
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +6 -3
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +6 -3
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +102 -99
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +95 -87
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +6 -3
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +6 -3
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +6 -3
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -3
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +7 -4
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -3
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js +6 -3
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.cjs.js +6 -0
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.cjs.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.es.js +58 -0
- package/dist/shared/src/components/SearchFilter/CustomDateRangeDialog.es.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +1 -4
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.cjs.js +2 -0
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.cjs.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.es.js +106 -0
- package/dist/shared/src/components/SearchFilter/useDateRangeFilter.es.js.map +1 -0
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +8 -5
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -3
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -3
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +10 -7
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -3
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -3
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -3
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/DetailsPanelMoreMenu.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js +6 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useContextAccess.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js +10 -0
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js +135 -0
- package/dist/shared/src/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.es.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +20 -17
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +41 -44
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +5 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +19 -25
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.cjs.js +2 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.cjs.js.map +1 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.es.js +91 -0
- package/dist/shared/src/containers/DetailsPanel/helpers/subtasksFilterAdapter.es.js.map +1 -0
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +6 -3
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +6 -3
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +6 -3
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +6 -3
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +156 -164
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.cjs.js +25 -3
- package/dist/shared/src/containers/Feed/Feed.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.styled.es.js +30 -8
- package/dist/shared/src/containers/Feed/Feed.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +6 -3
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +6 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +6 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +3 -3
- 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 +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +8 -5
- package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +5 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +10 -7
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js +5 -5
- package/dist/shared/src/containers/Feed/components/CommentInput/modules/index.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +17 -0
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +279 -0
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -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 +5 -2
- 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 +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +62 -50
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js +141 -0
- package/dist/shared/src/containers/Feed/helpers/buildBackendFilter.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js +2 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.cjs.js.map +1 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js +81 -0
- package/dist/shared/src/containers/Feed/helpers/feedFilterAdapter.es.js.map +1 -0
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +20 -18
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTable.es.js +106 -103
- package/dist/shared/src/containers/ListTable/ListTable.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js +7 -4
- package/dist/shared/src/containers/ListTable/ListTableCell.es.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js +6 -3
- package/dist/shared/src/containers/ListTable/ListTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +127 -123
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +158 -130
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +36 -33
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +228 -222
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +103 -100
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js +3 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js +22 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardComments.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +113 -109
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +125 -121
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +36 -33
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +107 -103
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +36 -33
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +36 -33
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +105 -102
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +37 -34
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +48 -45
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js +61 -61
- package/dist/shared/src/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +15 -6
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +108 -101
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js +82 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js +416 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CommentsWidget.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +8 -5
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +37 -34
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +6 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -3
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +6 -3
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +6 -3
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +6 -3
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +6 -3
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +92 -94
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +8 -5
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useGetProductionAddon.cjs.js +2 -0
- package/dist/shared/src/hooks/useGetProductionAddon.cjs.js.map +1 -0
- package/dist/shared/src/hooks/useGetProductionAddon.es.js +124 -0
- package/dist/shared/src/hooks/useGetProductionAddon.es.js.map +1 -0
- package/dist/shared/src/hooks/useLocalStorage.cjs.js +1 -1
- package/dist/shared/src/hooks/useLocalStorage.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLocalStorage.es.js +43 -27
- package/dist/shared/src/hooks/useLocalStorage.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +122 -0
- package/dist/types/api/generated/graphqlLinks.d.ts +10 -0
- package/dist/types/api/queries/activities/getActivities.d.ts +83 -0
- package/dist/types/api/queries/activities/patchTableLatestComments.d.ts +1 -0
- package/dist/types/api/queries/activities/updateActivities.d.ts +16 -0
- package/dist/types/api/queries/activities/util/activitiesHelpers.d.ts +1 -0
- package/dist/types/api/queries/entities/getEntity.d.ts +7 -0
- package/dist/types/api/queries/entities/getEntityPanel.d.ts +7 -0
- package/dist/types/api/queries/entities/updateEntity.d.ts +7 -0
- package/dist/types/api/queries/entityLists/getLists.d.ts +84 -0
- package/dist/types/api/queries/entityLists/types.d.ts +2 -1
- package/dist/types/api/queries/overview/getOverview.d.ts +58 -0
- package/dist/types/api/queries/project/getProject.d.ts +7 -0
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +7 -0
- package/dist/types/api/queries/users/getUsers.d.ts +7 -0
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +30 -0
- package/dist/types/components/SearchFilter/CustomDateRangeDialog.d.ts +13 -0
- package/dist/types/components/SearchFilter/index.d.ts +2 -0
- package/dist/types/components/SearchFilter/useDateRangeFilter.d.ts +36 -0
- package/dist/types/containers/DetailsPanel/components/SubtasksSearchFilter/SubtasksSearchFilter.d.ts +13 -0
- package/dist/types/containers/DetailsPanel/helpers/subtasksFilterAdapter.d.ts +5 -0
- package/dist/types/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +1 -0
- package/dist/types/containers/Feed/components/ActivityReference/ActivityReference.styled.d.ts +2 -2
- package/dist/types/containers/Feed/components/FeedSearchFilter.d.ts +15 -0
- package/dist/types/containers/Feed/context/FeedContext.d.ts +5 -1
- package/dist/types/containers/Feed/helpers/buildBackendFilter.d.ts +3 -0
- package/dist/types/containers/Feed/helpers/feedFilterAdapter.d.ts +5 -0
- package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +5 -1
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardComments.d.ts +6 -0
- package/dist/types/containers/ProjectTreeTable/context/clipboard/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/utils/clientFilterToQueryFilter.d.ts +9 -0
- package/dist/types/containers/ProjectTreeTable/utils/queryFilterToClientFilter.d.ts +5 -0
- package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/widgets/CommentsWidget.d.ts +7 -0
- package/dist/types/context/DetailsPanelContext.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useGetProductionAddon.d.ts +10 -0
- package/dist/types/hooks/useLocalStorage.d.ts +2 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport type FieldStats = {\n columnName: string\n // numeric for number columns, ISO date string for datetime columns\n min?: number | string | null\n max?: number | string | null\n avg?: number | null\n sum?: number | null\n valueFilledCount?: number | null\n percentageFilled?: number | null\n valueNotFilledCount?: number | null\n percentageNotFilled?: number | null\n checkedCount?: number | null\n checkedPercentage?: number | null\n notCheckedCount?: number | null\n notCheckedPercentage?: number | null\n distribution?:\n | { value: string; label?: string | null; color?: string | null; count: number }[]\n | null\n // main/count column: primary/secondary entity totals (folders/tasks, products/versions)\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({ ...s, distribution: normalizeDistribution(s.distribution) }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"columnStats.cjs.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport type FieldStats = {\n columnName: string\n // numeric for number columns, ISO date string for datetime columns\n min?: number | string | null\n max?: number | string | null\n avg?: number | null\n sum?: number | null\n valueFilledCount?: number | null\n percentageFilled?: number | null\n valueNotFilledCount?: number | null\n percentageNotFilled?: number | null\n checkedCount?: number | null\n checkedPercentage?: number | null\n notCheckedCount?: number | null\n notCheckedPercentage?: number | null\n distribution?:\n | { value: string; label?: string | null; color?: string | null; count: number }[]\n | null\n // main/count column: primary/secondary entity totals (folders/tasks, products/versions)\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"gFAyBA,MAAMA,EAAgBC,GAAsBA,EAAE,QAAQ,eAAgB,CAACC,EAAGC,IAAMA,EAAE,aAAa,EAIzFC,EAAyC,CAC7C,UAAW,UACX,YAAa,UACb,aAAc,SAChB,EAKaC,EAAqBC,GAC5BA,KAAQF,EAAuBA,EAAeE,CAAI,EAClDA,EAAK,WAAW,qBAAqB,EAChC,UAAYA,EAAK,MAAM,EAA4B,EAExDA,EAAK,WAAW,uBAAuB,EAClC,UAAYA,EAAK,MAAM,EAA8B,EAE1DA,EAAK,WAAW,SAAS,EAAUA,EAChCN,EAAaM,CAAI,EAGpBC,EAAyBC,GAA6C,CAC1E,GAAIA,GAAO,KAAM,OACjB,IAAIC,EAAQD,EACZ,GAAI,OAAOC,GAAU,SACnB,GAAI,CACFA,EAAQ,KAAK,MAAMA,CAAK,CAC1B,MAAQ,CACN,MACF,CAEF,GAAI,MAAM,QAAQA,CAAK,EAAG,CAExB,MAAMC,MAAc,IACpB,UAAWC,KAAKF,EAAO,CACrB,GAAI,CAACE,GAAKA,EAAE,OAAS,KAAM,SAC3B,MAAMC,EAAO,MAAM,QAAQD,EAAE,KAAK,EAAIA,EAAE,MAAQ,CAACA,EAAE,KAAK,EACxD,UAAWH,KAAOI,EAAM,CACtB,MAAMC,EAAI,OAAOL,CAAG,EACdM,EAAOJ,EAAQ,IAAIG,CAAC,EAC1BH,EAAQ,IAAIG,EAAG,CAAE,GAAGF,EAAG,MAAOE,EAAG,OAAQC,GAAM,OAAS,IAAM,OAAOH,EAAE,KAAK,GAAK,GAAI,CACvF,CACF,CACA,MAAO,CAAC,GAAGD,EAAQ,QAAQ,CAC7B,CACA,GAAI,OAAOD,GAAU,SACnB,OAAO,OAAO,QAAQA,CAAgC,EAAE,IAAI,CAAC,CAACI,EAAGE,CAAK,KAAO,CAC3E,MAAOF,EACP,MAAO,OAAOE,CAAK,GAAK,CAAA,EACxB,CAGN,EAEMC,EAAO,CAACC,EAAmBC,IAC/BD,GAAK,MAAQC,GAAK,KAAO,QAAaD,GAAK,IAAMC,GAAK,GAClDC,EAAS,CAAIF,EAAcC,IAC/BD,GAAK,KAAOC,GAAK,OAAYA,GAAK,MAAWD,EAAIC,EAARD,EAAgBC,EACrDE,EAAU,CAAIH,EAAcC,IAChCD,GAAK,KAAOC,GAAK,OAAYA,GAAK,MAAWD,EAAIC,EAARD,EAAgBC,EACrDG,EAAM,CAACC,EAAeC,IAC1BD,GAAQ,MAAQC,GAAQ,MAAQD,EAAOC,EAAO,EAC1C,KAAK,MAAOD,GAAQA,EAAOC,GAAS,GAAK,EAAI,IAC7C,OAKAC,EAAa,CAACP,EAAeC,IAA8B,CAC/D,MAAMO,EAAST,EAAKC,EAAE,iBAAkBC,EAAE,gBAAgB,EACpDQ,EAAYV,EAAKC,EAAE,oBAAqBC,EAAE,mBAAmB,EAC7DS,EAAUX,EAAKC,EAAE,aAAcC,EAAE,YAAY,EAC7CU,EAAaZ,EAAKC,EAAE,gBAAiBC,EAAE,eAAe,EAE5D,IAAIW,EACJ,GAAIZ,EAAE,KAAO,MAAQC,EAAE,KAAO,KAAM,CAClC,MAAMY,EAAKb,EAAE,iBACPc,EAAKb,EAAE,iBACbW,EACEC,GAAM,MAAQC,GAAM,MAAQD,EAAKC,EAAK,GACjCd,EAAE,IAAMa,EAAKZ,EAAE,IAAMa,IAAOD,EAAKC,IACjCd,EAAE,IAAMC,EAAE,KAAO,EACxBW,EAAM,KAAK,MAAMA,EAAM,GAAG,EAAI,GAChC,MACEA,EAAMZ,EAAE,KAAOC,EAAE,KAAO,OAG1B,IAAIc,EACJ,GAAIf,EAAE,cAAc,QAAUC,EAAE,cAAc,OAAQ,CACpD,MAAMR,MAAc,IACpB,UAAWC,IAAK,CAAC,GAAIM,EAAE,cAAgB,CAAA,EAAK,GAAIC,EAAE,cAAgB,CAAA,CAAG,EAAG,CACtE,MAAMJ,EAAOJ,EAAQ,IAAIC,EAAE,KAAK,EAChCD,EAAQ,IAAIC,EAAE,MAAOG,EAAO,CAAE,GAAGA,EAAM,MAAOA,EAAK,MAAQH,EAAE,KAAA,EAAU,CAAE,GAAGA,EAAG,CACjF,CACAqB,EAAe,CAAC,GAAGtB,EAAQ,QAAQ,CACrC,CAEA,MAAO,CACL,WAAYO,EAAE,WACd,IAAKE,EAAOF,EAAE,IAAKC,EAAE,GAAG,EACxB,IAAKE,EAAQH,EAAE,IAAKC,EAAE,GAAG,EACzB,IAAAW,EACA,IAAKb,EAAKC,EAAE,IAAKC,EAAE,GAAG,EACtB,iBAAkBO,EAClB,oBAAqBC,EACrB,iBAAkBL,EAAII,EAAQC,CAAS,EACvC,oBAAqBL,EAAIK,EAAWD,CAAM,EAC1C,aAAcE,EACd,gBAAiBC,EACjB,kBAAmBP,EAAIM,EAASC,CAAU,EAC1C,qBAAsBP,EAAIO,EAAYD,CAAO,EAC7C,aAAAK,EACA,aAAcf,EAAE,cAAgBC,EAAE,aAClC,eAAgBD,EAAE,gBAAkBC,EAAE,cAAA,CAE1C,EAGae,EAAuBC,GAClCA,EAAM,IAAKjC,IAAO,CAChB,GAAGA,EACH,WAAYI,EAAkBJ,EAAE,UAAU,EAC1C,aAAcM,EAAsBN,EAAE,YAAY,CACpD,EAAE,EAISkC,EAAkB,CAC7BC,EAAwB,GACxBC,EAAqB,CAAA,IACJ,CACjB,MAAMC,MAAW,IACjB,UAAWrC,KAAKoC,EAAMC,EAAK,IAAIjC,EAAkBJ,EAAE,UAAU,EAAG,CAAE,GAAGA,CAAA,CAAG,EACxE,UAAWA,KAAKmC,EAAS,CACvB,MAAMG,EAAKlC,EAAkBJ,EAAE,UAAU,EACnCuC,EAAqB,CAAE,GAAIF,EAAK,IAAIC,CAAE,GAAK,CAAE,WAAYtC,EAAE,WAAW,EAC5E,SAAW,CAACwC,EAAG5B,CAAC,IAAK,OAAO,QAAQZ,CAAC,EAC/BY,GAAM,OAA0B2B,EAAeC,CAAC,EAAI5B,GAE1DyB,EAAK,IAAIC,EAAIC,CAAM,CACrB,CACA,MAAO,CAAC,GAAGF,EAAK,QAAQ,CAC1B,EAIaI,EAAsBR,GACjCA,EAAM,OACJ,CAACS,EAAK1C,IAAM,KAAK,IAAI0C,GAAM1C,EAAE,kBAAoB,IAAMA,EAAE,qBAAuB,EAAE,EAClF,CACF,EAIW2C,EAAoB,CAC/BC,EACAC,EAAsB,KACL,CACjB,MAAMR,MAAW,IACjB,UAAWrC,KAAK4C,EAASP,EAAK,IAAIjC,EAAkBJ,EAAE,UAAU,EAAGA,CAAC,EACpE,MAAM8C,EAAM,IAAI,IAAIT,CAAI,EACxB,UAAWU,KAAKF,EAAO,CACrB,MAAMP,EAAKlC,EAAkB2C,EAAE,UAAU,EACnCC,EAAIX,EAAK,IAAIC,CAAE,EACrBQ,EAAI,IAAIR,EAAIU,EAAIzB,EAAWyB,EAAGD,CAAC,EAAIA,CAAC,CACtC,CACA,MAAO,CAAC,GAAGD,EAAI,QAAQ,CACzB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const C = (t) => t.replace(/_([a-z0-9])/g, (e,
|
|
1
|
+
const C = (t) => t.replace(/_([a-z0-9])/g, (e, n) => n.toUpperCase()), f = {
|
|
2
2
|
task_type: "subType",
|
|
3
3
|
folder_type: "subType",
|
|
4
4
|
product_type: "subType"
|
|
5
|
-
},
|
|
5
|
+
}, d = (t) => t in f ? f[t] : t.startsWith("project_attributes_") ? "attrib_" + t.slice(19) : t.startsWith("inherited_attributes_") ? "attrib_" + t.slice(21) : t.startsWith("attrib_") ? t : C(t), p = (t) => {
|
|
6
6
|
if (t == null) return;
|
|
7
7
|
let e = t;
|
|
8
8
|
if (typeof e == "string")
|
|
@@ -12,85 +12,89 @@ const C = (t) => t.replace(/_([a-z0-9])/g, (e, o) => o.toUpperCase()), f = {
|
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
if (Array.isArray(e)) {
|
|
15
|
-
const
|
|
16
|
-
for (const
|
|
17
|
-
if (!
|
|
18
|
-
const u = Array.isArray(
|
|
19
|
-
for (const
|
|
20
|
-
const l = String(
|
|
21
|
-
|
|
15
|
+
const n = /* @__PURE__ */ new Map();
|
|
16
|
+
for (const o of e) {
|
|
17
|
+
if (!o || o.value == null) continue;
|
|
18
|
+
const u = Array.isArray(o.value) ? o.value : [o.value];
|
|
19
|
+
for (const i of u) {
|
|
20
|
+
const l = String(i), s = n.get(l);
|
|
21
|
+
n.set(l, { ...o, value: l, count: (s?.count ?? 0) + (Number(o.count) || 0) });
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
return [...
|
|
24
|
+
return [...n.values()];
|
|
25
25
|
}
|
|
26
26
|
if (typeof e == "object")
|
|
27
|
-
return Object.entries(e).map(([
|
|
28
|
-
value:
|
|
29
|
-
count: Number(
|
|
27
|
+
return Object.entries(e).map(([n, o]) => ({
|
|
28
|
+
value: n,
|
|
29
|
+
count: Number(o) || 0
|
|
30
30
|
}));
|
|
31
|
-
},
|
|
32
|
-
const o =
|
|
33
|
-
for (const n of e) o.set(v(n.columnName), { ...n });
|
|
34
|
-
for (const n of t) {
|
|
35
|
-
const u = v(n.columnName), c = { ...o.get(u) || { columnName: n.columnName } };
|
|
36
|
-
for (const [l, i] of Object.entries(n))
|
|
37
|
-
i != null && (c[l] = i);
|
|
38
|
-
o.set(u, c);
|
|
39
|
-
}
|
|
40
|
-
return [...o.values()];
|
|
41
|
-
}, a = (t, e) => t == null && e == null ? void 0 : (t ?? 0) + (e ?? 0), g = (t, e) => t == null ? e ?? void 0 : e == null || t < e ? t : e, y = (t, e) => t == null ? e ?? void 0 : e == null || t > e ? t : e, d = (t, e) => t != null && e != null && t + e > 0 ? Math.round(t / (t + e) * 1e4) / 100 : void 0, h = (t, e) => {
|
|
42
|
-
const o = a(t.valueFilledCount, e.valueFilledCount), n = a(t.valueNotFilledCount, e.valueNotFilledCount), u = a(t.checkedCount, e.checkedCount), c = a(t.notCheckedCount, e.notCheckedCount);
|
|
31
|
+
}, a = (t, e) => t == null && e == null ? void 0 : (t ?? 0) + (e ?? 0), g = (t, e) => t == null ? e ?? void 0 : e == null || t < e ? t : e, h = (t, e) => t == null ? e ?? void 0 : e == null || t > e ? t : e, v = (t, e) => t != null && e != null && t + e > 0 ? Math.round(t / (t + e) * 1e4) / 100 : void 0, y = (t, e) => {
|
|
32
|
+
const n = a(t.valueFilledCount, e.valueFilledCount), o = a(t.valueNotFilledCount, e.valueNotFilledCount), u = a(t.checkedCount, e.checkedCount), i = a(t.notCheckedCount, e.notCheckedCount);
|
|
43
33
|
let l;
|
|
44
34
|
if (t.avg != null && e.avg != null) {
|
|
45
|
-
const r = t.valueFilledCount,
|
|
46
|
-
l = r != null &&
|
|
35
|
+
const r = t.valueFilledCount, c = e.valueFilledCount;
|
|
36
|
+
l = r != null && c != null && r + c > 0 ? (t.avg * r + e.avg * c) / (r + c) : (t.avg + e.avg) / 2, l = Math.round(l * 100) / 100;
|
|
47
37
|
} else
|
|
48
38
|
l = t.avg ?? e.avg ?? void 0;
|
|
49
|
-
let
|
|
39
|
+
let s;
|
|
50
40
|
if (t.distribution?.length || e.distribution?.length) {
|
|
51
41
|
const r = /* @__PURE__ */ new Map();
|
|
52
|
-
for (const
|
|
53
|
-
const m = r.get(
|
|
54
|
-
r.set(
|
|
42
|
+
for (const c of [...t.distribution ?? [], ...e.distribution ?? []]) {
|
|
43
|
+
const m = r.get(c.value);
|
|
44
|
+
r.set(c.value, m ? { ...m, count: m.count + c.count } : { ...c });
|
|
55
45
|
}
|
|
56
|
-
|
|
46
|
+
s = [...r.values()];
|
|
57
47
|
}
|
|
58
48
|
return {
|
|
59
49
|
columnName: t.columnName,
|
|
60
50
|
min: g(t.min, e.min),
|
|
61
|
-
max:
|
|
51
|
+
max: h(t.max, e.max),
|
|
62
52
|
avg: l,
|
|
63
53
|
sum: a(t.sum, e.sum),
|
|
64
|
-
valueFilledCount:
|
|
65
|
-
valueNotFilledCount:
|
|
66
|
-
percentageFilled:
|
|
67
|
-
percentageNotFilled:
|
|
54
|
+
valueFilledCount: n,
|
|
55
|
+
valueNotFilledCount: o,
|
|
56
|
+
percentageFilled: v(n, o),
|
|
57
|
+
percentageNotFilled: v(o, n),
|
|
68
58
|
checkedCount: u,
|
|
69
|
-
notCheckedCount:
|
|
70
|
-
checkedPercentage:
|
|
71
|
-
notCheckedPercentage:
|
|
72
|
-
distribution:
|
|
59
|
+
notCheckedCount: i,
|
|
60
|
+
checkedPercentage: v(u, i),
|
|
61
|
+
notCheckedPercentage: v(i, u),
|
|
62
|
+
distribution: s,
|
|
73
63
|
primaryCount: t.primaryCount ?? e.primaryCount,
|
|
74
64
|
secondaryCount: t.secondaryCount ?? e.secondaryCount
|
|
75
65
|
};
|
|
76
|
-
},
|
|
77
|
-
|
|
66
|
+
}, N = (t) => t.map((e) => ({
|
|
67
|
+
...e,
|
|
68
|
+
columnName: d(e.columnName),
|
|
69
|
+
distribution: p(e.distribution)
|
|
70
|
+
})), F = (t = [], e = []) => {
|
|
71
|
+
const n = /* @__PURE__ */ new Map();
|
|
72
|
+
for (const o of e) n.set(d(o.columnName), { ...o });
|
|
73
|
+
for (const o of t) {
|
|
74
|
+
const u = d(o.columnName), i = { ...n.get(u) || { columnName: o.columnName } };
|
|
75
|
+
for (const [l, s] of Object.entries(o))
|
|
76
|
+
s != null && (i[l] = s);
|
|
77
|
+
n.set(u, i);
|
|
78
|
+
}
|
|
79
|
+
return [...n.values()];
|
|
80
|
+
}, _ = (t) => t.reduce(
|
|
81
|
+
(e, n) => Math.max(e, (n.valueFilledCount ?? 0) + (n.valueNotFilledCount ?? 0)),
|
|
78
82
|
0
|
|
79
|
-
),
|
|
80
|
-
const
|
|
81
|
-
for (const u of t)
|
|
82
|
-
const
|
|
83
|
+
), k = (t, e = []) => {
|
|
84
|
+
const n = /* @__PURE__ */ new Map();
|
|
85
|
+
for (const u of t) n.set(d(u.columnName), u);
|
|
86
|
+
const o = new Map(n);
|
|
83
87
|
for (const u of e) {
|
|
84
|
-
const
|
|
85
|
-
|
|
88
|
+
const i = d(u.columnName), l = n.get(i);
|
|
89
|
+
o.set(i, l ? y(l, u) : u);
|
|
86
90
|
}
|
|
87
|
-
return [...
|
|
91
|
+
return [...o.values()];
|
|
88
92
|
};
|
|
89
93
|
export {
|
|
90
|
-
|
|
91
|
-
|
|
94
|
+
d as canonicalColumnId,
|
|
95
|
+
k as combineFieldStats,
|
|
92
96
|
F as mergeFieldStats,
|
|
93
97
|
N as normalizeFieldStats,
|
|
94
|
-
|
|
98
|
+
_ as totalRowsFromStats
|
|
95
99
|
};
|
|
96
100
|
//# sourceMappingURL=columnStats.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnStats.es.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport type FieldStats = {\n columnName: string\n // numeric for number columns, ISO date string for datetime columns\n min?: number | string | null\n max?: number | string | null\n avg?: number | null\n sum?: number | null\n valueFilledCount?: number | null\n percentageFilled?: number | null\n valueNotFilledCount?: number | null\n percentageNotFilled?: number | null\n checkedCount?: number | null\n checkedPercentage?: number | null\n notCheckedCount?: number | null\n notCheckedPercentage?: number | null\n distribution?:\n | { value: string; label?: string | null; color?: string | null; count: number }[]\n | null\n // main/count column: primary/secondary entity totals (folders/tasks, products/versions)\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({ ...s, distribution: normalizeDistribution(s.distribution) }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T,>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"columnStats.es.js","sources":["../../../../../../src/api/queries/columnStats/columnStats.ts"],"sourcesContent":["// Shape of the backend GraphQL `ColumnStats` (connection.fieldStats).\n// `sum` and `distribution` are typed ahead of backend support so wiring them is a no-op.\nexport type FieldStats = {\n columnName: string\n // numeric for number columns, ISO date string for datetime columns\n min?: number | string | null\n max?: number | string | null\n avg?: number | null\n sum?: number | null\n valueFilledCount?: number | null\n percentageFilled?: number | null\n valueNotFilledCount?: number | null\n percentageNotFilled?: number | null\n checkedCount?: number | null\n checkedPercentage?: number | null\n notCheckedCount?: number | null\n notCheckedPercentage?: number | null\n distribution?:\n | { value: string; label?: string | null; color?: string | null; count: number }[]\n | null\n // main/count column: primary/secondary entity totals (folders/tasks, products/versions)\n primaryCount?: number | null\n secondaryCount?: number | null\n}\n\nconst snakeToCamel = (s: string): string => s.replace(/_([a-z0-9])/g, (_, c) => c.toUpperCase())\n\n// Per-entity \"type\" columns all map to the unified `subType` column in the table.\n// (`product_base_type` is a separate column — productBaseType — so not aliased.)\nconst COLUMN_ALIASES: Record<string, string> = {\n task_type: 'subType',\n folder_type: 'subType',\n product_type: 'subType',\n}\n\n// Canonical frontend column id for a backend column name. Attribute columns keep\n// their `attrib_` form; everything else is snake_case on the backend but camelCase\n// in the table (product_base_type → productBaseType, created_at → createdAt).\nexport const canonicalColumnId = (name: string): string => {\n if (name in COLUMN_ALIASES) return COLUMN_ALIASES[name]\n if (name.startsWith('project_attributes_')) {\n return 'attrib_' + name.slice('project_attributes_'.length)\n }\n if (name.startsWith('inherited_attributes_')) {\n return 'attrib_' + name.slice('inherited_attributes_'.length)\n }\n if (name.startsWith('attrib_')) return name\n return snakeToCamel(name)\n}\n\nconst normalizeDistribution = (raw: unknown): FieldStats['distribution'] => {\n if (raw == null) return undefined\n let value = raw\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value)\n } catch {\n return undefined\n }\n }\n if (Array.isArray(value)) {\n // dedupe by value; array buckets (tags/assignees combos) unnest per value\n const byValue = new Map<string, { value: string; count: number }>()\n for (const d of value) {\n if (!d || d.value == null) continue\n const vals = Array.isArray(d.value) ? d.value : [d.value]\n for (const raw of vals) {\n const v = String(raw)\n const prev = byValue.get(v)\n byValue.set(v, { ...d, value: v, count: (prev?.count ?? 0) + (Number(d.count) || 0) })\n }\n }\n return [...byValue.values()]\n }\n if (typeof value === 'object') {\n return Object.entries(value as Record<string, unknown>).map(([v, count]) => ({\n value: v,\n count: Number(count) || 0,\n }))\n }\n return undefined\n}\n\nconst sumN = (a?: number | null, b?: number | null): number | undefined =>\n a == null && b == null ? undefined : (a ?? 0) + (b ?? 0)\nconst lowest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a < b ? a : b\nconst highest = <T>(a?: T | null, b?: T | null): T | undefined =>\n a == null ? b ?? undefined : b == null ? a : a > b ? a : b\nconst pct = (part?: number, rest?: number): number | undefined =>\n part != null && rest != null && part + rest > 0\n ? Math.round((part / (part + rest)) * 10000) / 100\n : undefined\n\n// Additive combine of one column's stats from two entity sets (e.g. folder +\n// task). Counts sum, min/max widen, percentages recompute, avg is weighted by\n// filled counts when available.\nconst combineTwo = (a: FieldStats, b: FieldStats): FieldStats => {\n const filled = sumN(a.valueFilledCount, b.valueFilledCount)\n const notFilled = sumN(a.valueNotFilledCount, b.valueNotFilledCount)\n const checked = sumN(a.checkedCount, b.checkedCount)\n const notChecked = sumN(a.notCheckedCount, b.notCheckedCount)\n\n let avg: number | undefined\n if (a.avg != null && b.avg != null) {\n const wa = a.valueFilledCount\n const wb = b.valueFilledCount\n avg =\n wa != null && wb != null && wa + wb > 0\n ? (a.avg * wa + b.avg * wb) / (wa + wb)\n : (a.avg + b.avg) / 2\n avg = Math.round(avg * 100) / 100\n } else {\n avg = a.avg ?? b.avg ?? undefined\n }\n\n let distribution: FieldStats['distribution']\n if (a.distribution?.length || b.distribution?.length) {\n const byValue = new Map<string, NonNullable<FieldStats['distribution']>[number]>()\n for (const d of [...(a.distribution ?? []), ...(b.distribution ?? [])]) {\n const prev = byValue.get(d.value)\n byValue.set(d.value, prev ? { ...prev, count: prev.count + d.count } : { ...d })\n }\n distribution = [...byValue.values()]\n }\n\n return {\n columnName: a.columnName,\n min: lowest(a.min, b.min),\n max: highest(a.max, b.max),\n avg,\n sum: sumN(a.sum, b.sum),\n valueFilledCount: filled,\n valueNotFilledCount: notFilled,\n percentageFilled: pct(filled, notFilled),\n percentageNotFilled: pct(notFilled, filled),\n checkedCount: checked,\n notCheckedCount: notChecked,\n checkedPercentage: pct(checked, notChecked),\n notCheckedPercentage: pct(notChecked, checked),\n distribution,\n primaryCount: a.primaryCount ?? b.primaryCount,\n secondaryCount: a.secondaryCount ?? b.secondaryCount,\n }\n}\n\n// Normalize a raw fieldStats response (apply in transformResponse).\nexport const normalizeFieldStats = (stats: FieldStats[]): FieldStats[] =>\n stats.map((s) => ({\n ...s,\n columnName: canonicalColumnId(s.columnName),\n distribution: normalizeDistribution(s.distribution),\n }))\n\n// Merge stats lists by canonical column id, field-wise: overlay's non-null values\n// win, base fills the gaps. A single list also dedupes its own repeated columns.\nexport const mergeFieldStats = (\n overlay: FieldStats[] = [],\n base: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of base) byId.set(canonicalColumnId(s.columnName), { ...s })\n for (const s of overlay) {\n const id = canonicalColumnId(s.columnName)\n const merged: FieldStats = { ...(byId.get(id) || { columnName: s.columnName }) }\n for (const [k, v] of Object.entries(s)) {\n if (v !== null && v !== undefined) (merged as any)[k] = v\n }\n byId.set(id, merged)\n }\n return [...byId.values()]\n}\n\n// Total row count for an entity set = max(filled + not-filled) across its\n// stat columns. Feeds the main folders/tasks count cell.\nexport const totalRowsFromStats = (stats: FieldStats[]): number =>\n stats.reduce(\n (max, s) => Math.max(max, (s.valueFilledCount ?? 0) + (s.valueNotFilledCount ?? 0)),\n 0,\n )\n\n// Combine primary-entity stats (tasks/versions) with group-entity stats\n// (folders/products) for the \"include groups & folders\" row scope.\nexport const combineFieldStats = (\n primary: FieldStats[],\n group: FieldStats[] = [],\n): FieldStats[] => {\n const byId = new Map<string, FieldStats>()\n for (const s of primary) byId.set(canonicalColumnId(s.columnName), s)\n const out = new Map(byId)\n for (const g of group) {\n const id = canonicalColumnId(g.columnName)\n const p = byId.get(id)\n out.set(id, p ? combineTwo(p, g) : g)\n }\n return [...out.values()]\n}\n"],"names":["snakeToCamel","s","_","c","COLUMN_ALIASES","canonicalColumnId","name","normalizeDistribution","raw","value","byValue","d","vals","v","prev","count","sumN","a","b","lowest","highest","pct","part","rest","combineTwo","filled","notFilled","checked","notChecked","avg","wa","wb","distribution","normalizeFieldStats","stats","mergeFieldStats","overlay","base","byId","id","merged","k","totalRowsFromStats","max","combineFieldStats","primary","group","out","g","p"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const r=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const d=i=>{const s=i?.targets;return Array.isArray(s)?s:s?[s]:[]},f=(i,s)=>{if(!i)return!1;if(!s)return!0;const o=new Set(d(s).map(u=>u.field));return d(i).some(u=>!o.has(u.field))},p=[r.StatsOperation.Filled,r.StatsOperation.NotFilled],c=[r.StatsOperation.Min,r.StatsOperation.Max,r.StatsOperation.Avg,r.StatsOperation.Sum,r.StatsOperation.Filled,r.StatsOperation.NotFilled],a=[r.StatsOperation.Filled,r.StatsOperation.NotFilled,r.StatsOperation.Distribution],S={folder:"folder_type",task:"task_type",product:"product_type",version:null},h=({entity:i,attribs:s,columnVisibility:o,extraFields:u=[]})=>{const n=e=>o[e]!==!1,t=[];i==="version"?t.push({field:"status",aggregations:a}):(t.push({field:"name",aggregations:p}),n("status")&&t.push({field:"status",aggregations:a})),n("tags")&&t.push({field:"tags",aggregations:a}),i==="task"&&n("assignees")&&t.push({field:"assignees",aggregations:a});const q=S[i];q&&n("subType")&&t.push({field:q,aggregations:a});for(const e of u)t.push({field:e,aggregations:a});for(const e of s){if(e.scope&&!e.scope.includes(i)||!n(`attrib_${e.name}`))continue;let l=`attrib.${e.name}`;["folder","task"].includes(i)&&(l=`inherited_attributes.${e.name}`);const g=e.data?.type;g==="integer"||g==="float"?t.push({field:l,aggregations:c}):g==="string"&&t.push({field:l,aggregations:e.data?.enum?.length?a:p})}return t};exports.buildMetricTargets=h;exports.hasNewTargetFields=f;
|
|
2
2
|
//# sourceMappingURL=metricTargets.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metricTargets.cjs.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n extraFields?: string[] // visible page-specific columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n // TanStack visibility map only stores toggled columns — absent means visible.\n const isVisible = (columnId: string) => columnVisibility[columnId] !== false\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor\n targets.push({ field: 'status', aggregations: ENUM })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isVisible('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isVisible('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isVisible('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isVisible('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isVisible(`attrib_${attrib.name}`)) continue\n\n
|
|
1
|
+
{"version":3,"file":"metricTargets.cjs.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n extraFields?: string[] // visible page-specific columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n // TanStack visibility map only stores toggled columns — absent means visible.\n const isVisible = (columnId: string) => columnVisibility[columnId] !== false\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor\n targets.push({ field: 'status', aggregations: ENUM })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isVisible('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isVisible('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isVisible('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isVisible('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isVisible(`attrib_${attrib.name}`)) continue\n\n let field = `attrib.${attrib.name}`\n if (['folder', 'task'].includes(entity)) {\n field = `inherited_attributes.${attrib.name}`\n }\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","columnVisibility","extraFields","isVisible","columnId","targets","subTypeField","field","attrib","type"],"mappings":"oxDAYA,MAAMA,EAAgBC,GAA0C,CAC9D,MAAMC,EAAID,GAAK,QACf,OAAO,MAAM,QAAQC,CAAC,EAAIA,EAAIA,EAAI,CAACA,CAAC,EAAI,CAAA,CAC1C,EAGaC,EAAqB,CAACC,EAAsBC,IAAmC,CAC1F,GAAI,CAACD,EAAS,MAAO,GACrB,GAAI,CAACC,EAAU,MAAO,GACtB,MAAMC,EAAa,IAAI,IAAIN,EAAaK,CAAQ,EAAE,IAAKH,GAAMA,EAAE,KAAK,CAAC,EACrE,OAAOF,EAAaI,CAAO,EAAE,KAAMF,GAAM,CAACI,EAAW,IAAIJ,EAAE,KAAK,CAAC,CACnE,EAEMK,EAA2B,CAACC,EAAAA,eAAe,OAAQA,EAAAA,eAAe,SAAS,EAE3EC,EAA4B,CAChCD,EAAAA,eAAe,IACfA,EAAAA,eAAe,IACfA,EAAAA,eAAe,IACfA,EAAAA,eAAe,IACfA,EAAAA,eAAe,OACfA,iBAAe,SACjB,EAEME,EAAyB,CAC7BF,EAAAA,eAAe,OACfA,EAAAA,eAAe,UACfA,iBAAe,YACjB,EAIMG,EAAqD,CACzD,OAAQ,cACR,KAAM,YACN,QAAS,eACT,QAAS,IACX,EAsBaC,EAAqB,CAAC,CACjC,OAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,YAAAC,EAAc,CAAA,CAChB,IAA8C,CAE5C,MAAMC,EAAaC,GAAqBH,EAAiBG,CAAQ,IAAM,GAEjEC,EAA0B,CAAA,EAC5BN,IAAW,UAGbM,EAAQ,KAAK,CAAE,MAAO,SAAU,aAAcT,EAAM,GAGpDS,EAAQ,KAAK,CAAE,MAAO,OAAQ,aAAcZ,EAAQ,EAChDU,EAAU,QAAQ,GAAGE,EAAQ,KAAK,CAAE,MAAO,SAAU,aAAcT,EAAM,GAE3EO,EAAU,MAAM,GAAGE,EAAQ,KAAK,CAAE,MAAO,OAAQ,aAAcT,EAAM,EACrEG,IAAW,QAAUI,EAAU,WAAW,GAC5CE,EAAQ,KAAK,CAAE,MAAO,YAAa,aAAcT,EAAM,EAGzD,MAAMU,EAAeT,EAAeE,CAAM,EACtCO,GAAgBH,EAAU,SAAS,GACrCE,EAAQ,KAAK,CAAE,MAAOC,EAAc,aAAcV,EAAM,EAG1D,UAAWW,KAASL,EAClBG,EAAQ,KAAK,CAAE,MAAAE,EAAO,aAAcX,EAAM,EAG5C,UAAWY,KAAUR,EAAS,CAE5B,GADIQ,EAAO,OAAS,CAACA,EAAO,MAAM,SAAST,CAAM,GAC7C,CAACI,EAAU,UAAUK,EAAO,IAAI,EAAE,EAAG,SAEzC,IAAID,EAAQ,UAAUC,EAAO,IAAI,GAC7B,CAAC,SAAU,MAAM,EAAE,SAAST,CAAM,IACpCQ,EAAQ,wBAAwBC,EAAO,IAAI,IAE7C,MAAMC,EAAOD,EAAO,MAAM,KACtBC,IAAS,WAAaA,IAAS,QACjCJ,EAAQ,KAAK,CAAE,MAAAE,EAAO,aAAcZ,EAAS,EACpCc,IAAS,UAClBJ,EAAQ,KAAK,CAAE,MAAAE,EAAO,aAAcC,EAAO,MAAM,MAAM,OAASZ,EAAOH,CAAA,CAAQ,CAEnF,CAEA,OAAOY,CACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../../base/client.es.js";
|
|
2
|
-
import { StatsOperation as
|
|
2
|
+
import { StatsOperation as i } from "../../generated/graphql.es.js";
|
|
3
3
|
import "../../generated/graphqlLinks.es.js";
|
|
4
4
|
import "../../generated/access.es.js";
|
|
5
5
|
import "../../generated/actions.es.js";
|
|
@@ -41,48 +41,50 @@ import "../../generated/views.es.js";
|
|
|
41
41
|
const f = (r) => {
|
|
42
42
|
const e = r?.targets;
|
|
43
43
|
return Array.isArray(e) ? e : e ? [e] : [];
|
|
44
|
-
},
|
|
44
|
+
}, rt = (r, e) => {
|
|
45
45
|
if (!r) return !1;
|
|
46
46
|
if (!e) return !0;
|
|
47
47
|
const m = new Set(f(e).map((p) => p.field));
|
|
48
48
|
return f(r).some((p) => !m.has(p.field));
|
|
49
|
-
}, d = [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
}, d = [i.Filled, i.NotFilled], u = [
|
|
50
|
+
i.Min,
|
|
51
|
+
i.Max,
|
|
52
|
+
i.Avg,
|
|
53
|
+
i.Sum,
|
|
54
|
+
i.Filled,
|
|
55
|
+
i.NotFilled
|
|
56
56
|
], s = [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
i.Filled,
|
|
58
|
+
i.NotFilled,
|
|
59
|
+
i.Distribution
|
|
60
60
|
], c = {
|
|
61
61
|
folder: "folder_type",
|
|
62
62
|
task: "task_type",
|
|
63
63
|
product: "product_type",
|
|
64
64
|
version: null
|
|
65
|
-
},
|
|
65
|
+
}, ot = ({
|
|
66
66
|
entity: r,
|
|
67
67
|
attribs: e,
|
|
68
68
|
columnVisibility: m,
|
|
69
69
|
extraFields: p = []
|
|
70
70
|
}) => {
|
|
71
|
-
const a = (
|
|
72
|
-
r === "version" ?
|
|
71
|
+
const a = (t) => m[t] !== !1, o = [];
|
|
72
|
+
r === "version" ? o.push({ field: "status", aggregations: s }) : (o.push({ field: "name", aggregations: d }), a("status") && o.push({ field: "status", aggregations: s })), a("tags") && o.push({ field: "tags", aggregations: s }), r === "task" && a("assignees") && o.push({ field: "assignees", aggregations: s });
|
|
73
73
|
const g = c[r];
|
|
74
|
-
g && a("subType") &&
|
|
75
|
-
for (const
|
|
76
|
-
|
|
77
|
-
for (const
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
g && a("subType") && o.push({ field: g, aggregations: s });
|
|
75
|
+
for (const t of p)
|
|
76
|
+
o.push({ field: t, aggregations: s });
|
|
77
|
+
for (const t of e) {
|
|
78
|
+
if (t.scope && !t.scope.includes(r) || !a(`attrib_${t.name}`)) continue;
|
|
79
|
+
let n = `attrib.${t.name}`;
|
|
80
|
+
["folder", "task"].includes(r) && (n = `inherited_attributes.${t.name}`);
|
|
81
|
+
const l = t.data?.type;
|
|
82
|
+
l === "integer" || l === "float" ? o.push({ field: n, aggregations: u }) : l === "string" && o.push({ field: n, aggregations: t.data?.enum?.length ? s : d });
|
|
81
83
|
}
|
|
82
|
-
return
|
|
84
|
+
return o;
|
|
83
85
|
};
|
|
84
86
|
export {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
ot as buildMetricTargets,
|
|
88
|
+
rt as hasNewTargetFields
|
|
87
89
|
};
|
|
88
90
|
//# sourceMappingURL=metricTargets.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metricTargets.es.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n extraFields?: string[] // visible page-specific columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n // TanStack visibility map only stores toggled columns — absent means visible.\n const isVisible = (columnId: string) => columnVisibility[columnId] !== false\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor\n targets.push({ field: 'status', aggregations: ENUM })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isVisible('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isVisible('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isVisible('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isVisible('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isVisible(`attrib_${attrib.name}`)) continue\n\n
|
|
1
|
+
{"version":3,"file":"metricTargets.es.js","sources":["../../../../../../src/api/queries/columnStats/metricTargets.ts"],"sourcesContent":["import type { VisibilityState } from '@tanstack/react-table'\nimport { StatsOperation } from '@shared/api/generated'\n\nexport type MetricTarget = {\n field: string // column or dot-path for JSONB, e.g. 'status' / 'attrib.fps'\n aggregations: StatsOperation[]\n}\n\nexport type StatsEntity = 'folder' | 'task' | 'product' | 'version'\n\n// matches both MetricTarget[] and the codegen'd single-or-array variables type\ntype TargetsArg = { targets?: { field: string }[] | { field: string } | null }\nconst targetFields = (arg?: TargetsArg): { field: string }[] => {\n const t = arg?.targets\n return Array.isArray(t) ? t : t ? [t] : []\n}\n\n// refetch only when a target was added — hiding a column needs no query\nexport const hasNewTargetFields = (current?: TargetsArg, previous?: TargetsArg): boolean => {\n if (!current) return false\n if (!previous) return true\n const prevFields = new Set(targetFields(previous).map((t) => t.field))\n return targetFields(current).some((t) => !prevFields.has(t.field))\n}\n\nconst COUNTS: StatsOperation[] = [StatsOperation.Filled, StatsOperation.NotFilled]\n// FILLED rides along so combined-scope averages can be weighted exactly\nconst NUMERIC: StatsOperation[] = [\n StatsOperation.Min,\n StatsOperation.Max,\n StatsOperation.Avg,\n StatsOperation.Sum,\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n]\n// enum columns: counts power the fallback display, distribution the colored bar\nconst ENUM: StatsOperation[] = [\n StatsOperation.Filled,\n StatsOperation.NotFilled,\n StatsOperation.Distribution,\n]\n\n// The table's unified subType column per entity (result columnName maps back\n// to subType via COLUMN_ALIASES in columnStats).\nconst SUB_TYPE_FIELD: Record<StatsEntity, string | null> = {\n folder: 'folder_type',\n task: 'task_type',\n product: 'product_type',\n version: null,\n}\n\n// Structural subset of ProjectTableAttribute — two near-identical versions of\n// that type exist (types/index vs hooks/useAttributesList, data.type optional\n// in the latter); only these fields are needed here so accept both.\ntype AttribFieldLike = {\n name: string\n scope?: string[] | null\n data?: { type?: string; enum?: unknown[] }\n}\n\ntype BuildMetricTargetsArgs = {\n entity: StatsEntity\n attribs: AttribFieldLike[]\n columnVisibility: VisibilityState\n extraFields?: string[] // visible page-specific columns, e.g. 'product_base_type'\n}\n\n// Targets for the footer over the columns the user can actually see.\n// Skipped on purpose (backend SQL can't aggregate them safely yet):\n// datetime (numeric cast fails), boolean attribs (text-vs-bool compare on\n// JSONB), and list-type attribs.\nexport const buildMetricTargets = ({\n entity,\n attribs,\n columnVisibility,\n extraFields = [],\n}: BuildMetricTargetsArgs): MetricTarget[] => {\n // TanStack visibility map only stores toggled columns — absent means visible.\n const isVisible = (columnId: string) => columnVisibility[columnId] !== false\n\n const targets: MetricTarget[] = []\n if (entity === 'version') {\n // versions have no `name` column (display name derives from the version\n // number) — status is non-null and doubles as the row-count anchor\n targets.push({ field: 'status', aggregations: ENUM })\n } else {\n // name counts always — they feed the main folders/tasks count cell\n targets.push({ field: 'name', aggregations: COUNTS })\n if (isVisible('status')) targets.push({ field: 'status', aggregations: ENUM })\n }\n if (isVisible('tags')) targets.push({ field: 'tags', aggregations: ENUM })\n if (entity === 'task' && isVisible('assignees')) {\n targets.push({ field: 'assignees', aggregations: ENUM })\n }\n\n const subTypeField = SUB_TYPE_FIELD[entity]\n if (subTypeField && isVisible('subType')) {\n targets.push({ field: subTypeField, aggregations: ENUM })\n }\n\n for (const field of extraFields) {\n targets.push({ field, aggregations: ENUM })\n }\n\n for (const attrib of attribs) {\n if (attrib.scope && !attrib.scope.includes(entity)) continue\n if (!isVisible(`attrib_${attrib.name}`)) continue\n\n let field = `attrib.${attrib.name}`\n if (['folder', 'task'].includes(entity)) {\n field = `inherited_attributes.${attrib.name}`\n }\n const type = attrib.data?.type\n if (type === 'integer' || type === 'float') {\n targets.push({ field, aggregations: NUMERIC })\n } else if (type === 'string') {\n targets.push({ field, aggregations: attrib.data?.enum?.length ? ENUM : COUNTS })\n }\n }\n\n return targets\n}\n"],"names":["targetFields","arg","t","hasNewTargetFields","current","previous","prevFields","COUNTS","StatsOperation","NUMERIC","ENUM","SUB_TYPE_FIELD","buildMetricTargets","entity","attribs","columnVisibility","extraFields","isVisible","columnId","targets","subTypeField","field","attrib","type"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAMA,IAAe,CAACC,MAA0C;AAC9D,QAAMC,IAAID,GAAK;AACf,SAAO,MAAM,QAAQC,CAAC,IAAIA,IAAIA,IAAI,CAACA,CAAC,IAAI,CAAA;AAC1C,GAGaC,KAAqB,CAACC,GAAsBC,MAAmC;AAC1F,MAAI,CAACD,EAAS,QAAO;AACrB,MAAI,CAACC,EAAU,QAAO;AACtB,QAAMC,IAAa,IAAI,IAAIN,EAAaK,CAAQ,EAAE,IAAI,CAACH,MAAMA,EAAE,KAAK,CAAC;AACrE,SAAOF,EAAaI,CAAO,EAAE,KAAK,CAACF,MAAM,CAACI,EAAW,IAAIJ,EAAE,KAAK,CAAC;AACnE,GAEMK,IAA2B,CAACC,EAAe,QAAQA,EAAe,SAAS,GAE3EC,IAA4B;AAAA,EAChCD,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AACjB,GAEME,IAAyB;AAAA,EAC7BF,EAAe;AAAA,EACfA,EAAe;AAAA,EACfA,EAAe;AACjB,GAIMG,IAAqD;AAAA,EACzD,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AACX,GAsBaC,KAAqB,CAAC;AAAA,EACjC,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAAC,IAAc,CAAA;AAChB,MAA8C;AAE5C,QAAMC,IAAY,CAACC,MAAqBH,EAAiBG,CAAQ,MAAM,IAEjEC,IAA0B,CAAA;AAChC,EAAIN,MAAW,YAGbM,EAAQ,KAAK,EAAE,OAAO,UAAU,cAAcT,GAAM,KAGpDS,EAAQ,KAAK,EAAE,OAAO,QAAQ,cAAcZ,GAAQ,GAChDU,EAAU,QAAQ,KAAGE,EAAQ,KAAK,EAAE,OAAO,UAAU,cAAcT,GAAM,IAE3EO,EAAU,MAAM,KAAGE,EAAQ,KAAK,EAAE,OAAO,QAAQ,cAAcT,GAAM,GACrEG,MAAW,UAAUI,EAAU,WAAW,KAC5CE,EAAQ,KAAK,EAAE,OAAO,aAAa,cAAcT,GAAM;AAGzD,QAAMU,IAAeT,EAAeE,CAAM;AAC1C,EAAIO,KAAgBH,EAAU,SAAS,KACrCE,EAAQ,KAAK,EAAE,OAAOC,GAAc,cAAcV,GAAM;AAG1D,aAAWW,KAASL;AAClB,IAAAG,EAAQ,KAAK,EAAE,OAAAE,GAAO,cAAcX,GAAM;AAG5C,aAAWY,KAAUR,GAAS;AAE5B,QADIQ,EAAO,SAAS,CAACA,EAAO,MAAM,SAAST,CAAM,KAC7C,CAACI,EAAU,UAAUK,EAAO,IAAI,EAAE,EAAG;AAEzC,QAAID,IAAQ,UAAUC,EAAO,IAAI;AACjC,IAAI,CAAC,UAAU,MAAM,EAAE,SAAST,CAAM,MACpCQ,IAAQ,wBAAwBC,EAAO,IAAI;AAE7C,UAAMC,IAAOD,EAAO,MAAM;AAC1B,IAAIC,MAAS,aAAaA,MAAS,UACjCJ,EAAQ,KAAK,EAAE,OAAAE,GAAO,cAAcZ,GAAS,IACpCc,MAAS,YAClBJ,EAAQ,KAAK,EAAE,OAAAE,GAAO,cAAcC,EAAO,MAAM,MAAM,SAASZ,IAAOH,EAAA,CAAQ;AAAA,EAEnF;AAEA,SAAOY;AACT;"}
|
|
@@ -43,7 +43,7 @@ import "react-toastify";
|
|
|
43
43
|
import "uuid";
|
|
44
44
|
import { subscribeToThumbnailUpdates as I } from "../../../util/thumbnailWebsocket.es.js";
|
|
45
45
|
import b from "../../../util/pubsub.es.js";
|
|
46
|
-
import {
|
|
46
|
+
import { transformDetailsPanelQueriesData as u, detailsPanelEntityTypes as G } from "./transformDetailsPanelData.es.js";
|
|
47
47
|
const y = T.enhanceEndpoints({
|
|
48
48
|
endpoints: {
|
|
49
49
|
GetDetailsPanelFolder: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const u=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const i=require("../columnStats/columnStats.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../base/client.cjs.js");const u=require("../../generated/graphql.cjs.js");require("../../generated/graphqlLinks.cjs.js");require("../../generated/access.cjs.js");require("../../generated/actions.cjs.js");require("../../generated/activityFeed.cjs.js");require("../../generated/addons.cjs.js");require("../../generated/anatomy.cjs.js");require("../../generated/attributes.cjs.js");require("../../generated/authentication.cjs.js");require("../../generated/bundles.cjs.js");require("../../generated/configuration.cjs.js");require("../../generated/dataImport.cjs.js");require("../../generated/desktop.cjs.js");require("../../generated/entityLists.cjs.js");require("../../generated/events.cjs.js");require("../../generated/files.cjs.js");require("../../generated/folders.cjs.js");require("../../generated/inbox.cjs.js");require("../../generated/links.cjs.js");require("../../generated/market.cjs.js");require("../../generated/onboarding.cjs.js");require("../../generated/operations.cjs.js");require("../../generated/products.cjs.js");require("../../generated/projectDashboard.cjs.js");require("../../generated/projects.cjs.js");require("../../generated/projectFolders.cjs.js");require("../../generated/reviewables.cjs.js");require("../../generated/services.cjs.js");require("../../generated/system.cjs.js");require("../../generated/tasks.cjs.js");require("../../generated/teams.cjs.js");require("../../generated/thumbnails.cjs.js");require("../../generated/uRIs.cjs.js");require("../../generated/users.cjs.js");require("../../generated/versions.cjs.js");require("../../generated/workfiles.cjs.js");require("../../generated/ynputCloud.cjs.js");require("../../generated/grouping.cjs.js");require("../../generated/views.cjs.js");const i=require("../columnStats/columnStats.cjs.js"),n=require("../columnStats/metricTargets.cjs.js"),a=e=>e.startsWith("attrib.")?`_all_attrib.${e.slice(7)}`:e.startsWith("inherited_attributes.")?`_all_attrib.${e.slice(21)}`:`_entity_${e}`,q=e=>e.startsWith("_all_attrib_")?`attrib_${e.slice(12)}`:e.startsWith("_entity_")?e.slice(8):e,l=e=>e.map(r=>({...r,field:a(r.field)})),o=u.api.enhanceEndpoints({endpoints:{GetListItemsColumnStats:{transformResponse:e=>{const r=e?.project?.entityLists?.edges?.[0]?.node?.items?.fieldStats??[];return i.normalizeFieldStats(r.map(t=>({...t,columnName:q(t.columnName)})))},serializeQueryArgs:({queryArgs:{targets:e,...r}})=>r,merge:(e,r)=>i.mergeFieldStats(r,e),forceRefetch:({currentArg:e,previousArg:r})=>n.hasNewTargetFields(e,r),providesTags:(e,r,{listId:t,projectName:s})=>[{type:"entityListItemsColumnStats",id:t},{type:"entityListItemsColumnStats",id:s}]}}}),{useGetListItemsColumnStatsQuery:c}=o;exports.toListItemsStatsTargets=l;exports.useGetListItemsColumnStatsQuery=c;
|
|
2
2
|
//# sourceMappingURL=listItemsColumnStats.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listItemsColumnStats.cjs.js","sources":["../../../../../../src/api/queries/entityLists/listItemsColumnStats.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type { GetListItemsColumnStatsQuery } from '@shared/api/generated'\nimport {
|
|
1
|
+
{"version":3,"file":"listItemsColumnStats.cjs.js","sources":["../../../../../../src/api/queries/entityLists/listItemsColumnStats.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type { GetListItemsColumnStatsQuery } from '@shared/api/generated'\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport type { FieldStats, MetricTarget } from '../columnStats'\nimport { normalizeFieldStats, mergeFieldStats, hasNewTargetFields } from '../columnStats'\n\n// The list items query aliases entity columns `_entity_{col}` and merges\n// entity+item attribs into `_all_attrib`, so canonical target fields must be\n// translated out and stat column names translated back (ayon-backend#943).\nconst toBackendField = (field: string): string => {\n if (field.startsWith('attrib.')) {\n return `_all_attrib.${field.slice('attrib.'.length)}`\n }\n if (field.startsWith('inherited_attributes.')) {\n return `_all_attrib.${field.slice('inherited_attributes.'.length)}`\n }\n return `_entity_${field}`\n}\n\nconst toCanonicalColumn = (name: string): string => {\n if (name.startsWith('_all_attrib_')) return `attrib_${name.slice('_all_attrib_'.length)}`\n if (name.startsWith('_entity_')) return name.slice('_entity_'.length)\n return name\n}\n\nexport const toListItemsStatsTargets = (targets: MetricTarget[]): MetricTarget[] =>\n targets.map((t) => ({ ...t, field: toBackendField(t.field) }))\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Definitions & {\n GetListItemsColumnStats: OverrideResultType<Definitions['GetListItemsColumnStats'], FieldStats[]>\n}\n\nconst listItemsColumnStatsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // same caching as the other column stats endpoints: `targets` excluded\n // from the cache key, responses merged, only added targets refetch\n GetListItemsColumnStats: {\n transformResponse: (res: GetListItemsColumnStatsQuery) => {\n const stats = res?.project?.entityLists?.edges?.[0]?.node?.items?.fieldStats ?? []\n return normalizeFieldStats(\n stats.map((s) => ({ ...s, columnName: toCanonicalColumn(s.columnName) })),\n )\n },\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { listId, projectName }) => [\n { type: 'entityListItemsColumnStats', id: listId },\n { type: 'entityListItemsColumnStats', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetListItemsColumnStatsQuery } = listItemsColumnStatsApi\n"],"names":["toBackendField","field","toCanonicalColumn","name","toListItemsStatsTargets","targets","t","listItemsColumnStatsApi","gqlApi","res","stats","normalizeFieldStats","s","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","_e","listId","projectName","useGetListItemsColumnStatsQuery"],"mappings":"03DASMA,EAAkBC,GAClBA,EAAM,WAAW,SAAS,EACrB,eAAeA,EAAM,MAAM,CAAgB,CAAC,GAEjDA,EAAM,WAAW,uBAAuB,EACnC,eAAeA,EAAM,MAAM,EAA8B,CAAC,GAE5D,WAAWA,CAAK,GAGnBC,EAAqBC,GACrBA,EAAK,WAAW,cAAc,EAAU,UAAUA,EAAK,MAAM,EAAqB,CAAC,GACnFA,EAAK,WAAW,UAAU,EAAUA,EAAK,MAAM,CAAiB,EAC7DA,EAGIC,EAA2BC,GACtCA,EAAQ,IAAKC,IAAO,CAAE,GAAGA,EAAG,MAAON,EAAeM,EAAE,KAAK,GAAI,EAQzDC,EAA0BC,EAAAA,IAAO,iBAA+C,CACpF,UAAW,CAGT,wBAAyB,CACvB,kBAAoBC,GAAsC,CACxD,MAAMC,EAAQD,GAAK,SAAS,aAAa,QAAQ,CAAC,GAAG,MAAM,OAAO,YAAc,CAAA,EAChF,OAAOE,EAAAA,oBACLD,EAAM,IAAKE,IAAO,CAAE,GAAGA,EAAG,WAAYV,EAAkBU,EAAE,UAAU,GAAI,CAAA,CAE5E,EACA,mBAAoB,CAAC,CAAE,UAAW,CAAE,QAASC,EAAI,GAAGC,CAAA,CAAK,IAAQA,EACjE,MAAO,CAACC,EAAOC,IAAaC,EAAAA,gBAAgBD,EAAUD,CAAK,EAC3D,aAAc,CAAC,CAAE,WAAAG,EAAY,YAAAC,KAAkBC,EAAAA,mBAAmBF,EAAYC,CAAW,EACzF,aAAc,CAACE,EAAIC,EAAI,CAAE,OAAAC,EAAQ,YAAAC,KAAkB,CACjD,CAAE,KAAM,6BAA8B,GAAID,CAAA,EAC1C,CAAE,KAAM,6BAA8B,GAAIC,CAAA,CAAY,CACxD,CACF,CAEJ,CAAC,EAEY,CAAE,gCAAAC,GAAoClB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../../base/client.es.js";
|
|
2
|
-
import { api as
|
|
2
|
+
import { api as e } from "../../generated/graphql.es.js";
|
|
3
3
|
import "../../generated/graphqlLinks.es.js";
|
|
4
4
|
import "../../generated/access.es.js";
|
|
5
5
|
import "../../generated/actions.es.js";
|
|
@@ -38,9 +38,9 @@ import "../../generated/workfiles.es.js";
|
|
|
38
38
|
import "../../generated/ynputCloud.es.js";
|
|
39
39
|
import "../../generated/grouping.es.js";
|
|
40
40
|
import "../../generated/views.es.js";
|
|
41
|
-
import { mergeFieldStats as
|
|
41
|
+
import { mergeFieldStats as m, normalizeFieldStats as s } from "../columnStats/columnStats.es.js";
|
|
42
42
|
import { hasNewTargetFields as p } from "../columnStats/metricTargets.es.js";
|
|
43
|
-
const n = (t) => t.startsWith("attrib.") ? `_all_attrib.${t.slice(7)}` : `_entity_${t}`, a = (t) => t.startsWith("_all_attrib_") ? `attrib_${t.slice(12)}` : t.startsWith("_entity_") ? t.slice(8) : t, Z = (t) => t.map((i) => ({ ...i, field: n(i.field) })), l =
|
|
43
|
+
const n = (t) => t.startsWith("attrib.") ? `_all_attrib.${t.slice(7)}` : t.startsWith("inherited_attributes.") ? `_all_attrib.${t.slice(21)}` : `_entity_${t}`, a = (t) => t.startsWith("_all_attrib_") ? `attrib_${t.slice(12)}` : t.startsWith("_entity_") ? t.slice(8) : t, Z = (t) => t.map((i) => ({ ...i, field: n(i.field) })), l = e.enhanceEndpoints({
|
|
44
44
|
endpoints: {
|
|
45
45
|
// same caching as the other column stats endpoints: `targets` excluded
|
|
46
46
|
// from the cache key, responses merged, only added targets refetch
|
|
@@ -52,7 +52,7 @@ const n = (t) => t.startsWith("attrib.") ? `_all_attrib.${t.slice(7)}` : `_entit
|
|
|
52
52
|
);
|
|
53
53
|
},
|
|
54
54
|
serializeQueryArgs: ({ queryArgs: { targets: t, ...i } }) => i,
|
|
55
|
-
merge: (t, i) =>
|
|
55
|
+
merge: (t, i) => m(i, t),
|
|
56
56
|
forceRefetch: ({ currentArg: t, previousArg: i }) => p(t, i),
|
|
57
57
|
providesTags: (t, i, { listId: r, projectName: o }) => [
|
|
58
58
|
{ type: "entityListItemsColumnStats", id: r },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listItemsColumnStats.es.js","sources":["../../../../../../src/api/queries/entityLists/listItemsColumnStats.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type { GetListItemsColumnStatsQuery } from '@shared/api/generated'\nimport {
|
|
1
|
+
{"version":3,"file":"listItemsColumnStats.es.js","sources":["../../../../../../src/api/queries/entityLists/listItemsColumnStats.ts"],"sourcesContent":["import { gqlApi } from '@shared/api/generated'\nimport type { GetListItemsColumnStatsQuery } from '@shared/api/generated'\nimport { DefinitionsFromApi, OverrideResultType, TagTypesFromApi } from '@reduxjs/toolkit/query'\nimport type { FieldStats, MetricTarget } from '../columnStats'\nimport { normalizeFieldStats, mergeFieldStats, hasNewTargetFields } from '../columnStats'\n\n// The list items query aliases entity columns `_entity_{col}` and merges\n// entity+item attribs into `_all_attrib`, so canonical target fields must be\n// translated out and stat column names translated back (ayon-backend#943).\nconst toBackendField = (field: string): string => {\n if (field.startsWith('attrib.')) {\n return `_all_attrib.${field.slice('attrib.'.length)}`\n }\n if (field.startsWith('inherited_attributes.')) {\n return `_all_attrib.${field.slice('inherited_attributes.'.length)}`\n }\n return `_entity_${field}`\n}\n\nconst toCanonicalColumn = (name: string): string => {\n if (name.startsWith('_all_attrib_')) return `attrib_${name.slice('_all_attrib_'.length)}`\n if (name.startsWith('_entity_')) return name.slice('_entity_'.length)\n return name\n}\n\nexport const toListItemsStatsTargets = (targets: MetricTarget[]): MetricTarget[] =>\n targets.map((t) => ({ ...t, field: toBackendField(t.field) }))\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Definitions & {\n GetListItemsColumnStats: OverrideResultType<Definitions['GetListItemsColumnStats'], FieldStats[]>\n}\n\nconst listItemsColumnStatsApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // same caching as the other column stats endpoints: `targets` excluded\n // from the cache key, responses merged, only added targets refetch\n GetListItemsColumnStats: {\n transformResponse: (res: GetListItemsColumnStatsQuery) => {\n const stats = res?.project?.entityLists?.edges?.[0]?.node?.items?.fieldStats ?? []\n return normalizeFieldStats(\n stats.map((s) => ({ ...s, columnName: toCanonicalColumn(s.columnName) })),\n )\n },\n serializeQueryArgs: ({ queryArgs: { targets: _t, ...rest } }) => rest,\n merge: (cache, incoming) => mergeFieldStats(incoming, cache),\n forceRefetch: ({ currentArg, previousArg }) => hasNewTargetFields(currentArg, previousArg),\n providesTags: (_r, _e, { listId, projectName }) => [\n { type: 'entityListItemsColumnStats', id: listId },\n { type: 'entityListItemsColumnStats', id: projectName },\n ],\n },\n },\n})\n\nexport const { useGetListItemsColumnStatsQuery } = listItemsColumnStatsApi\n"],"names":["toBackendField","field","toCanonicalColumn","name","toListItemsStatsTargets","targets","t","listItemsColumnStatsApi","gqlApi","res","stats","normalizeFieldStats","s","_t","rest","cache","incoming","mergeFieldStats","currentArg","previousArg","hasNewTargetFields","_r","_e","listId","projectName","useGetListItemsColumnStatsQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAMA,IAAiB,CAACC,MAClBA,EAAM,WAAW,SAAS,IACrB,eAAeA,EAAM,MAAM,CAAgB,CAAC,KAEjDA,EAAM,WAAW,uBAAuB,IACnC,eAAeA,EAAM,MAAM,EAA8B,CAAC,KAE5D,WAAWA,CAAK,IAGnBC,IAAoB,CAACC,MACrBA,EAAK,WAAW,cAAc,IAAU,UAAUA,EAAK,MAAM,EAAqB,CAAC,KACnFA,EAAK,WAAW,UAAU,IAAUA,EAAK,MAAM,CAAiB,IAC7DA,GAGIC,IAA0B,CAACC,MACtCA,EAAQ,IAAI,CAACC,OAAO,EAAE,GAAGA,GAAG,OAAON,EAAeM,EAAE,KAAK,IAAI,GAQzDC,IAA0BC,EAAO,iBAA+C;AAAA,EACpF,WAAW;AAAA;AAAA;AAAA,IAGT,yBAAyB;AAAA,MACvB,mBAAmB,CAACC,MAAsC;AACxD,cAAMC,IAAQD,GAAK,SAAS,aAAa,QAAQ,CAAC,GAAG,MAAM,OAAO,cAAc,CAAA;AAChF,eAAOE;AAAA,UACLD,EAAM,IAAI,CAACE,OAAO,EAAE,GAAGA,GAAG,YAAYV,EAAkBU,EAAE,UAAU,IAAI;AAAA,QAAA;AAAA,MAE5E;AAAA,MACA,oBAAoB,CAAC,EAAE,WAAW,EAAE,SAASC,GAAI,GAAGC,EAAA,EAAK,MAAQA;AAAA,MACjE,OAAO,CAACC,GAAOC,MAAaC,EAAgBD,GAAUD,CAAK;AAAA,MAC3D,cAAc,CAAC,EAAE,YAAAG,GAAY,aAAAC,QAAkBC,EAAmBF,GAAYC,CAAW;AAAA,MACzF,cAAc,CAACE,GAAIC,GAAI,EAAE,QAAAC,GAAQ,aAAAC,QAAkB;AAAA,QACjD,EAAE,MAAM,8BAA8B,IAAID,EAAA;AAAA,QAC1C,EAAE,MAAM,8BAA8B,IAAIC,EAAA;AAAA,MAAY;AAAA,IACxD;AAAA,EACF;AAEJ,CAAC,GAEY,EAAE,iCAAAC,OAAoClB;"}
|