diff options
Diffstat (limited to 'app/assets/javascripts/work_items/list')
5 files changed, 65 insertions, 25 deletions
diff --git a/app/assets/javascripts/work_items/list/components/work_items_list_app.vue b/app/assets/javascripts/work_items/list/components/work_items_list_app.vue index fe7cb719bbb..026c48cf017 100644 --- a/app/assets/javascripts/work_items/list/components/work_items_list_app.vue +++ b/app/assets/javascripts/work_items/list/components/work_items_list_app.vue @@ -1,5 +1,7 @@ <script> import * as Sentry from '@sentry/browser'; +import IssueCardStatistics from 'ee_else_ce/issues/list/components/issue_card_statistics.vue'; +import IssueCardTimeInfo from 'ee_else_ce/issues/list/components/issue_card_time_info.vue'; import { STATUS_OPEN } from '~/issues/constants'; import { __, s__ } from '~/locale'; import IssuableList from '~/vue_shared/issuable/list/components/issuable_list_root.vue'; @@ -14,6 +16,8 @@ export default { issuableListTabs, components: { IssuableList, + IssueCardStatistics, + IssueCardTimeInfo, }, inject: ['fullPath'], data() { @@ -57,6 +61,7 @@ export default { :current-tab="state" :error="error" :issuables="workItems" + :issuables-loading="$apollo.queries.workItems.loading" namespace="work-items" recent-searches-storage-key="issues" :search-input-placeholder="$options.i18n.searchPlaceholder" @@ -66,8 +71,16 @@ export default { :tabs="$options.issuableListTabs" @dismiss-alert="error = undefined" > + <template #timeframe="{ issuable = {} }"> + <issue-card-time-info :issue="issuable" /> + </template> + <template #status="{ issuable }"> {{ getStatus(issuable) }} </template> + + <template #statistics="{ issuable = {} }"> + <issue-card-statistics :issue="issuable" /> + </template> </issuable-list> </template> diff --git a/app/assets/javascripts/work_items/list/index.js b/app/assets/javascripts/work_items/list/index.js index 5cd38600779..113a3918e51 100644 --- a/app/assets/javascripts/work_items/list/index.js +++ b/app/assets/javascripts/work_items/list/index.js @@ -1,6 +1,7 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import createDefaultClient from '~/lib/graphql'; +import { parseBoolean } from '~/lib/utils/common_utils'; import WorkItemsListApp from './components/work_items_list_app.vue'; export const mountWorkItemsListApp = () => { @@ -12,6 +13,8 @@ export const mountWorkItemsListApp = () => { Vue.use(VueApollo); + const { fullPath, hasIssuableHealthStatusFeature, hasIssueWeightsFeature } = el.dataset; + return new Vue({ el, name: 'WorkItemsListRoot', @@ -19,7 +22,9 @@ export const mountWorkItemsListApp = () => { defaultClient: createDefaultClient(), }), provide: { - fullPath: el.dataset.fullPath, + fullPath, + hasIssuableHealthStatusFeature: parseBoolean(hasIssuableHealthStatusFeature), + hasIssueWeightsFeature: parseBoolean(hasIssueWeightsFeature), }, render: (createComponent) => createComponent(WorkItemsListApp), }); diff --git a/app/assets/javascripts/work_items/list/queries/base_work_item_widgets.fragment.graphql b/app/assets/javascripts/work_items/list/queries/base_work_item_widgets.fragment.graphql new file mode 100644 index 00000000000..1198973d184 --- /dev/null +++ b/app/assets/javascripts/work_items/list/queries/base_work_item_widgets.fragment.graphql @@ -0,0 +1,38 @@ +#import "~/graphql_shared/fragments/user.fragment.graphql" + +fragment BaseWorkItemWidgets on WorkItemWidget { + ... on WorkItemWidgetAssignees { + type + assignees { + nodes { + ...User + } + } + } + ... on WorkItemWidgetLabels { + type + allowsScopedLabels + labels { + nodes { + id + color + description + title + } + } + } + ... on WorkItemWidgetMilestone { + type + milestone { + id + dueDate + startDate + title + webPath + } + } + ... on WorkItemWidgetStartAndDueDate { + type + dueDate + } +} diff --git a/app/assets/javascripts/work_items/list/queries/get_work_items.query.graphql b/app/assets/javascripts/work_items/list/queries/get_work_items.query.graphql index 7ada2cf12dd..623527302f1 100644 --- a/app/assets/javascripts/work_items/list/queries/get_work_items.query.graphql +++ b/app/assets/javascripts/work_items/list/queries/get_work_items.query.graphql @@ -1,3 +1,5 @@ +#import "ee_else_ce/work_items/list/queries/work_item_widgets.fragment.graphql" + query getWorkItems($fullPath: ID!) { group(fullPath: $fullPath) { id @@ -21,30 +23,7 @@ query getWorkItems($fullPath: ID!) { updatedAt webUrl widgets { - ... on WorkItemWidgetAssignees { - assignees { - nodes { - id - avatarUrl - name - username - webUrl - } - } - type - } - ... on WorkItemWidgetLabels { - allowsScopedLabels - labels { - nodes { - id - color - description - title - } - } - type - } + ...WorkItemWidgets } workItemType { id diff --git a/app/assets/javascripts/work_items/list/queries/work_item_widgets.fragment.graphql b/app/assets/javascripts/work_items/list/queries/work_item_widgets.fragment.graphql new file mode 100644 index 00000000000..6862df5d330 --- /dev/null +++ b/app/assets/javascripts/work_items/list/queries/work_item_widgets.fragment.graphql @@ -0,0 +1,5 @@ +#import "./base_work_item_widgets.fragment.graphql" + +fragment WorkItemWidgets on WorkItemWidget { + ...BaseWorkItemWidgets +} |