From c19bb4adbf354562715ba019892f464080eba850 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 14 May 2021 09:10:24 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- GITALY_SERVER_VERSION | 2 +- .../issuable_timelogs.fragment.graphql | 10 + .../jobs/components/table/cells/job_cell.vue | 20 +- .../graphql/queries/get_jobs.query.graphql | 1 + .../components/time_tracking/report.vue | 102 ++++++++ .../components/time_tracking/time_tracker.vue | 24 +- app/assets/javascripts/sidebar/constants.js | 11 + .../javascripts/sidebar/mount_sidebar.js | 8 +- app/assets/javascripts/task_list.js | 21 +- .../queries/get_issue_timelogs.query.graphql | 14 ++ .../queries/get_mr_timelogs.query.graphql | 14 ++ app/assets/stylesheets/pages/notes.scss | 2 +- app/graphql/types/timelog_type.rb | 4 + app/helpers/boards_helper.rb | 4 + app/models/deployment.rb | 3 +- app/models/hooks/project_hook.rb | 6 + app/models/hooks/web_hook.rb | 5 + app/services/web_hook_service.rb | 36 ++- app/views/layouts/_loading_hints.html.haml | 21 +- .../271409-time-tracking-reports.yml | 5 + .../unreleased/329207-rate-limit-webhooks.yml | 5 + changelogs/unreleased/bw-table-task-list.yml | 5 + .../d-esterman-master-patch-46157.yml | 5 + ...deployment-finder-environment-in-query.yml | 5 + .../fix-translatey-note-actions.yml | 5 + .../development/cached_loading_hints.yml | 8 + .../development/web_hooks_rate_limit.yml | 8 + danger/changelog/Dangerfile | 134 +---------- ...31747_add_web_hook_calls_to_plan_limits.rb | 7 + db/schema_migrations/20210503131747 | 1 + db/structure.sql | 3 +- doc/administration/instance_limits.md | 43 ++++ doc/ci/pipeline_editor/index.md | 1 + .../img/time_tracking_report_v13_12.png | Bin 0 -> 13073 bytes .../img/time_tracking_sidebar_v13_12.png | Bin 0 -> 5801 bytes .../img/time_tracking_sidebar_v8_16.png | Bin 9068 -> 0 bytes doc/user/project/time_tracking.md | 16 +- lib/gitlab/application_rate_limiter.rb | 1 + .../ci/templates/Jobs/Build.gitlab-ci.yml | 5 +- lib/sidebars/projects/menus/issues_menu.rb | 4 + lib/sidebars/projects/menus/labels_menu.rb | 2 + .../menus/project_information_menu.rb | 14 ++ locale/gitlab.pot | 12 + spec/features/projects/active_tabs_spec.rb | 31 ++- .../projects/features_visibility_spec.rb | 17 +- spec/features/projects/navbar_spec.rb | 111 +++++---- .../table/cells.vue/job_cell_spec.js | 17 ++ spec/frontend/jobs/mock_data.js | 59 +++++ .../components/time_tracking/mock_data.js | 102 ++++++++ .../components/time_tracking/report_spec.js | 97 ++++++++ .../time_tracking/time_tracker_spec.js | 28 +++ spec/frontend/task_list_spec.js | 50 +++- spec/helpers/boards_helper_spec.rb | 39 +++- .../projects/menus/issues_menu_spec.rb | 18 ++ .../projects/menus/labels_menu_spec.rb | 50 ++-- .../menus/project_information_menu_spec.rb | 50 ++-- spec/models/hooks/project_hook_spec.rb | 9 + spec/models/hooks/service_hook_spec.rb | 8 + spec/models/hooks/system_hook_spec.rb | 8 + spec/models/plan_limits_spec.rb | 1 + spec/services/web_hook_service_spec.rb | 115 +++++++-- .../navbar_structure_context.rb | 1 - spec/tooling/danger/changelog_spec.rb | 220 +++++++++++++++++- spec/tooling/danger/project_helper_spec.rb | 4 +- .../nav/sidebar/_project.html.haml_spec.rb | 72 +++++- spec/workers/web_hook_worker_spec.rb | 18 ++ tooling/danger/changelog.rb | 214 ++++++++++++++++- tooling/danger/project_helper.rb | 2 +- 68 files changed, 1635 insertions(+), 303 deletions(-) create mode 100644 app/assets/javascripts/graphql_shared/fragments/issuable_timelogs.fragment.graphql create mode 100644 app/assets/javascripts/sidebar/components/time_tracking/report.vue create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/queries/get_issue_timelogs.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/sidebar/queries/get_mr_timelogs.query.graphql create mode 100644 changelogs/unreleased/271409-time-tracking-reports.yml create mode 100644 changelogs/unreleased/329207-rate-limit-webhooks.yml create mode 100644 changelogs/unreleased/bw-table-task-list.yml create mode 100644 changelogs/unreleased/d-esterman-master-patch-46157.yml create mode 100644 changelogs/unreleased/fix-deployment-finder-environment-in-query.yml create mode 100644 changelogs/unreleased/fix-translatey-note-actions.yml create mode 100644 config/feature_flags/development/cached_loading_hints.yml create mode 100644 config/feature_flags/development/web_hooks_rate_limit.yml create mode 100644 db/migrate/20210503131747_add_web_hook_calls_to_plan_limits.rb create mode 100644 db/schema_migrations/20210503131747 create mode 100644 doc/user/project/img/time_tracking_report_v13_12.png create mode 100644 doc/user/project/img/time_tracking_sidebar_v13_12.png delete mode 100644 doc/user/project/img/time_tracking_sidebar_v8_16.png create mode 100644 spec/frontend/sidebar/components/time_tracking/mock_data.js create mode 100644 spec/frontend/sidebar/components/time_tracking/report_spec.js create mode 100644 spec/workers/web_hook_worker_spec.rb diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 288905fbd39..5797c04c518 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1be74fe6af19847eec28665da39ef03865329acb +0cea2923073bcd867dd8e718a0a7b4f7de5b6094 diff --git a/app/assets/javascripts/graphql_shared/fragments/issuable_timelogs.fragment.graphql b/app/assets/javascripts/graphql_shared/fragments/issuable_timelogs.fragment.graphql new file mode 100644 index 00000000000..6ed3be84cd8 --- /dev/null +++ b/app/assets/javascripts/graphql_shared/fragments/issuable_timelogs.fragment.graphql @@ -0,0 +1,10 @@ +fragment TimelogFragment on Timelog { + timeSpent + user { + name + } + spentAt + note { + body + } +} diff --git a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue index 1797992641d..46108572a88 100644 --- a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue +++ b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue @@ -1,11 +1,18 @@ @@ -73,6 +83,14 @@ export default { {{ jobId }} + +
+import { GlLoadingIcon, GlTable } from '@gitlab/ui'; +import createFlash from '~/flash'; +import { convertToGraphQLId } from '~/graphql_shared/utils'; +import { formatDate, parseSeconds, stringifyTime } from '~/lib/utils/datetime_utility'; +import { __ } from '~/locale'; +import { timelogQueries } from '~/sidebar/constants'; + +const TIME_DATE_FORMAT = 'mmmm d, yyyy, HH:MM ("UTC:" o)'; + +export default { + components: { + GlLoadingIcon, + GlTable, + }, + inject: ['issuableId', 'issuableType'], + data() { + return { report: [], isLoading: true }; + }, + apollo: { + report: { + query() { + return timelogQueries[this.issuableType].query; + }, + variables() { + return { + id: convertToGraphQLId(this.getGraphQLEntityType(), this.issuableId), + }; + }, + update(data) { + this.isLoading = false; + return this.extractTimelogs(data); + }, + error() { + createFlash({ message: __('Something went wrong. Please try again.') }); + }, + }, + }, + methods: { + isIssue() { + return this.issuableType === 'issue'; + }, + getGraphQLEntityType() { + // eslint-disable-next-line @gitlab/require-i18n-strings + return this.isIssue() ? 'Issue' : 'MergeRequest'; + }, + extractTimelogs(data) { + const timelogs = data?.issuable?.timelogs?.nodes || []; + return timelogs.slice().sort((a, b) => new Date(a.spentAt) - new Date(b.spentAt)); + }, + formatDate(date) { + return formatDate(date, TIME_DATE_FORMAT); + }, + getNote(note) { + return note?.body; + }, + getTotalTimeSpent() { + const seconds = this.report.reduce((acc, item) => acc + item.timeSpent, 0); + return this.formatTimeSpent(seconds); + }, + formatTimeSpent(seconds) { + const negative = seconds < 0; + return (negative ? '- ' : '') + stringifyTime(parseSeconds(seconds)); + }, + }, + fields: [ + { key: 'spentAt', label: __('Spent At'), sortable: true }, + { key: 'user', label: __('User'), sortable: true }, + { key: 'timeSpent', label: __('Time Spent'), sortable: true }, + { key: 'note', label: __('Note'), sortable: true }, + ], +}; + + + diff --git a/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue b/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue index 4c095006dd7..ac3d278d840 100644 --- a/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue +++ b/app/assets/javascripts/sidebar/components/time_tracking/time_tracker.vue @@ -1,10 +1,11 @@