From 3cd511733b5b646becfdf72e36062b863dfbcf20 Mon Sep 17 00:00:00 2001 From: Ronald van Zon Date: Thu, 30 Aug 2018 14:17:36 +0000 Subject: Fixing count on Milestones By adding groups to milestones we can now include them in the count of Open and Closed. --- app/controllers/dashboard/application_controller.rb | 4 ++++ app/controllers/dashboard/milestones_controller.rb | 3 ++- app/models/global_milestone.rb | 20 ++++++++++++++++++-- changelogs/unreleased/rz_fix_milestone_count.yml | 5 +++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 changelogs/unreleased/rz_fix_milestone_count.yml diff --git a/app/controllers/dashboard/application_controller.rb b/app/controllers/dashboard/application_controller.rb index cee0753a021..1c9a5917da5 100644 --- a/app/controllers/dashboard/application_controller.rb +++ b/app/controllers/dashboard/application_controller.rb @@ -12,4 +12,8 @@ class Dashboard::ApplicationController < ApplicationController def projects @projects ||= current_user.authorized_projects.sorted_by_activity.non_archived end + + def groups + @groups ||= GroupsFinder.new(current_user, state_all: true).execute + end end diff --git a/app/controllers/dashboard/milestones_controller.rb b/app/controllers/dashboard/milestones_controller.rb index 6e17bc212e4..ddc1a66d11d 100644 --- a/app/controllers/dashboard/milestones_controller.rb +++ b/app/controllers/dashboard/milestones_controller.rb @@ -4,12 +4,13 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController include MilestoneActions before_action :projects + before_action :groups before_action :milestone, only: [:show, :merge_requests, :participants, :labels] def index respond_to do |format| format.html do - @milestone_states = GlobalMilestone.states_count(@projects) + @milestone_states = GlobalMilestone.states_count(@projects, @groups) @milestones = Kaminari.paginate_array(milestones).page(params[:page]) end format.json do diff --git a/app/models/global_milestone.rb b/app/models/global_milestone.rb index a6cebabe089..d07ef43c97e 100644 --- a/app/models/global_milestone.rb +++ b/app/models/global_milestone.rb @@ -34,15 +34,31 @@ class GlobalMilestone new(title, child_milestones) end - def self.states_count(projects, group = nil) + def self.states_count(projects, groups = nil) legacy_group_milestones_count = legacy_group_milestone_states_count(projects) - group_milestones_count = group_milestones_states_count(group) + group_milestones_count = groups_milestone_state_count(groups) legacy_group_milestones_count.merge(group_milestones_count) do |k, legacy_group_milestones_count, group_milestones_count| legacy_group_milestones_count + group_milestones_count end end + def self.groups_milestone_state_count(groups) + return STATE_COUNT_HASH unless groups + return self.group_milestones_states_count(groups) unless groups.respond_to?(:each) + + milestone_states = STATE_COUNT_HASH + + groups.each do |group| + group_milestones_count = self.group_milestones_states_count(group) + milestone_states = milestone_states.merge(group_milestones_count) do |k, milestone_state, group_milestones_count| + milestone_state + group_milestones_count + end + end + + milestone_states + end + def self.group_milestones_states_count(group) return STATE_COUNT_HASH unless group diff --git a/changelogs/unreleased/rz_fix_milestone_count.yml b/changelogs/unreleased/rz_fix_milestone_count.yml new file mode 100644 index 00000000000..f85cfe48b2d --- /dev/null +++ b/changelogs/unreleased/rz_fix_milestone_count.yml @@ -0,0 +1,5 @@ +--- +title: Fixing count on Milestones +merge_request: 21446 +author: eagllus +type: fixed -- cgit v1.2.3 From 43f32c6bf966a85d6d5e1d8933a1cea67ec89ba4 Mon Sep 17 00:00:00 2001 From: Eagllus Date: Wed, 3 Oct 2018 15:19:13 +0200 Subject: Add test for the milestone count --- spec/controllers/dashboard/milestones_controller_spec.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/controllers/dashboard/milestones_controller_spec.rb b/spec/controllers/dashboard/milestones_controller_spec.rb index 56047c0c8d2..278b980b6d8 100644 --- a/spec/controllers/dashboard/milestones_controller_spec.rb +++ b/spec/controllers/dashboard/milestones_controller_spec.rb @@ -45,6 +45,8 @@ describe Dashboard::MilestonesController do end describe "#index" do + render_views + it 'returns group and project milestones to which the user belongs' do get :index, format: :json @@ -53,5 +55,12 @@ describe Dashboard::MilestonesController do expect(json_response.map { |i| i["first_milestone"]["id"] }).to match_array([group_milestone.id, project_milestone.id]) expect(json_response.map { |i| i["group_name"] }.compact).to match_array(group.name) end + + it 'should contain group and project milestones to which the user belongs to' do + get :index + + expect(response.body).to include("Open\n3") + expect(response.body).to include("Closed\n0") + end end end -- cgit v1.2.3 From 074fafe9e09935cd53cf286ad00b9d53240a9413 Mon Sep 17 00:00:00 2001 From: Eagllus Date: Tue, 16 Oct 2018 14:52:08 +0200 Subject: Update code according comment recommendations --- app/controllers/dashboard/application_controller.rb | 4 ---- app/controllers/dashboard/milestones_controller.rb | 8 ++++++-- app/controllers/groups/milestones_controller.rb | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/controllers/dashboard/application_controller.rb b/app/controllers/dashboard/application_controller.rb index 1c9a5917da5..cee0753a021 100644 --- a/app/controllers/dashboard/application_controller.rb +++ b/app/controllers/dashboard/application_controller.rb @@ -12,8 +12,4 @@ class Dashboard::ApplicationController < ApplicationController def projects @projects ||= current_user.authorized_projects.sorted_by_activity.non_archived end - - def groups - @groups ||= GroupsFinder.new(current_user, state_all: true).execute - end end diff --git a/app/controllers/dashboard/milestones_controller.rb b/app/controllers/dashboard/milestones_controller.rb index ddc1a66d11d..8252a0f2511 100644 --- a/app/controllers/dashboard/milestones_controller.rb +++ b/app/controllers/dashboard/milestones_controller.rb @@ -4,13 +4,13 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController include MilestoneActions before_action :projects - before_action :groups + before_action :groups, only: :index before_action :milestone, only: [:show, :merge_requests, :participants, :labels] def index respond_to do |format| format.html do - @milestone_states = GlobalMilestone.states_count(@projects, @groups) + @milestone_states = Milestone.states_count(@projects, @groups) @milestones = Kaminari.paginate_array(milestones).page(params[:page]) end format.json do @@ -43,4 +43,8 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController @milestone = DashboardMilestone.build(@projects, params[:title]) render_404 unless @milestone end + + def groups + @groups ||= GroupsFinder.new(current_user, state_all: true).execute + end end diff --git a/app/controllers/groups/milestones_controller.rb b/app/controllers/groups/milestones_controller.rb index a7cee426cf1..b42116b0f36 100644 --- a/app/controllers/groups/milestones_controller.rb +++ b/app/controllers/groups/milestones_controller.rb @@ -10,7 +10,7 @@ class Groups::MilestonesController < Groups::ApplicationController def index respond_to do |format| format.html do - @milestone_states = GlobalMilestone.states_count(group_projects, group) + @milestone_states = Milestone.states_count(group_projects, [group]) @milestones = Kaminari.paginate_array(milestones).page(params[:page]) end format.json do -- cgit v1.2.3 From d2ee2eabc2a6b9037e98f3feb9d1534ebda79e19 Mon Sep 17 00:00:00 2001 From: Mike Greiling Date: Wed, 10 Oct 2018 01:41:22 -0500 Subject: Prettify app/assets/javascripts/pages --- .../pages/admin/abuse_reports/abuse_reports.js | 2 +- app/assets/javascripts/pages/admin/admin.js | 15 +- .../application_settings/account_and_limits.js | 8 +- .../admin/broadcast_messages/broadcast_message.js | 36 ++-- .../jobs/index/components/stop_jobs_modal.vue | 65 +++--- .../javascripts/pages/admin/projects/index.js | 3 +- .../index/components/delete_project_modal.vue | 139 ++++++------- .../pages/admin/projects/index/index.js | 2 +- .../admin/users/components/delete_user_modal.vue | 187 ++++++++--------- app/assets/javascripts/pages/admin/users/index.js | 6 +- .../javascripts/pages/admin/users/new/index.js | 6 +- .../pages/dashboard/todos/index/todos.js | 15 +- .../shared/components/delete_milestone_modal.vue | 169 +++++++++------- .../shared/delete_milestone_modal_init.js | 16 +- .../shared/promote_milestone_modal_init.js | 16 +- app/assets/javascripts/pages/profiles/index.js | 7 +- .../pages/profiles/two_factor_auths/index.js | 4 +- .../pages/projects/branches/new/index.js | 11 +- .../pages/projects/graphs/charts/index.js | 22 +- .../pages/projects/graphs/show/index.js | 3 +- .../graphs/show/stat_graph_contributors.js | 91 +++++---- .../graphs/show/stat_graph_contributors_graph.js | 221 ++++++++++++++------- .../graphs/show/stat_graph_contributors_util.js | 64 +++--- app/assets/javascripts/pages/projects/init_blob.js | 3 +- app/assets/javascripts/pages/projects/init_form.js | 2 +- .../javascripts/pages/projects/issues/show.js | 2 +- .../labels/components/promote_label_modal.vue | 124 +++++++----- .../pages/projects/labels/index/index.js | 16 +- .../javascripts/pages/projects/network/network.js | 10 +- .../projects/pipeline_schedules/index/index.js | 22 +- .../shared/components/interval_pattern_input.vue | 102 +++++----- .../components/pipeline_schedules_callout.vue | 46 ++--- .../shared/components/target_branch_dropdown.js | 3 +- .../pipeline_schedules/shared/init_form.js | 4 +- .../pages/projects/pipelines/charts/index.js | 59 +++--- .../pages/projects/pipelines/index/index.js | 66 +++--- .../pages/projects/pipelines/init_pipelines.js | 7 +- .../components/project_feature_setting.vue | 114 ++++++----- .../permissions/components/project_setting_row.vue | 36 ++-- .../pages/projects/shared/permissions/constants.js | 6 +- .../pages/projects/shared/project_avatar.js | 5 +- .../javascripts/pages/projects/wikis/index.js | 3 +- app/assets/javascripts/pages/search/show/search.js | 25 ++- .../pages/sessions/new/signin_tabs_memoizer.js | 2 +- .../pages/sessions/new/username_validator.js | 10 +- app/assets/javascripts/pages/users/index.js | 6 +- 46 files changed, 1001 insertions(+), 780 deletions(-) diff --git a/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js b/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js index 15e737fff05..d9cf62db3f7 100644 --- a/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js +++ b/app/assets/javascripts/pages/admin/abuse_reports/abuse_reports.js @@ -31,7 +31,7 @@ export default class AbuseReports { $messageCellElement.text(originalMessage); } else { $messageCellElement.data('messageTruncated', 'true'); - $messageCellElement.text(`${originalMessage.substr(0, (MAX_MESSAGE_LENGTH - 3))}...`); + $messageCellElement.text(`${originalMessage.substr(0, MAX_MESSAGE_LENGTH - 3)}...`); } } } diff --git a/app/assets/javascripts/pages/admin/admin.js b/app/assets/javascripts/pages/admin/admin.js index ff4d6ab15f9..4616a075729 100644 --- a/app/assets/javascripts/pages/admin/admin.js +++ b/app/assets/javascripts/pages/admin/admin.js @@ -23,7 +23,7 @@ export default function adminInit() { } }); - $('body').on('click', '.js-toggle-colors-link', (e) => { + $('body').on('click', '.js-toggle-colors-link', e => { e.preventDefault(); $('.js-toggle-colors-container').toggleClass('hide'); }); @@ -33,12 +33,15 @@ export default function adminInit() { $(this).tab('show'); }); - $('.log-bottom').on('click', (e) => { + $('.log-bottom').on('click', e => { e.preventDefault(); const $visibleLog = $('.file-content:visible'); - $visibleLog.animate({ - scrollTop: $visibleLog.find('ol').height(), - }, 'fast'); + $visibleLog.animate( + { + scrollTop: $visibleLog.find('ol').height(), + }, + 'fast', + ); }); $('.change-owner-link').on('click', function changeOwnerLinkClick(e) { @@ -47,7 +50,7 @@ export default function adminInit() { modal.show(); }); - $('.change-owner-cancel-link').on('click', (e) => { + $('.change-owner-cancel-link').on('click', e => { e.preventDefault(); modal.hide(); $('.change-owner-link').show(); diff --git a/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js b/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js index 7281f907ec7..455c637a6b3 100644 --- a/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js +++ b/app/assets/javascripts/pages/admin/application_settings/account_and_limits.js @@ -1,10 +1,14 @@ import { __ } from '~/locale'; export const PLACEHOLDER_USER_EXTERNAL_DEFAULT_TRUE = __('Regex pattern'); -export const PLACEHOLDER_USER_EXTERNAL_DEFAULT_FALSE = __('To define internal users, first enable new users set to external'); +export const PLACEHOLDER_USER_EXTERNAL_DEFAULT_FALSE = __( + 'To define internal users, first enable new users set to external', +); function setUserInternalRegexPlaceholder(checkbox) { - const userInternalRegex = document.getElementById('application_setting_user_default_internal_regex'); + const userInternalRegex = document.getElementById( + 'application_setting_user_default_internal_regex', + ); if (checkbox && userInternalRegex) { if (checkbox.checked) { userInternalRegex.readOnly = false; diff --git a/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js b/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js index e7ceccb6f47..d5ded3f9a79 100644 --- a/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js +++ b/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js @@ -17,20 +17,24 @@ export default () => { const previewPath = $('textarea#broadcast_message_message').data('previewPath'); - $('textarea#broadcast_message_message').on('input', _.debounce(function onMessageInput() { - const message = $(this).val(); - if (message === '') { - $('.js-broadcast-message-preview').text('Your message here'); - } else { - axios.post(previewPath, { - broadcast_message: { - message, - }, - }) - .then(({ data }) => { - $('.js-broadcast-message-preview').html(data.message); - }) - .catch(() => flash(__('An error occurred while rendering preview broadcast message'))); - } - }, 250)); + $('textarea#broadcast_message_message').on( + 'input', + _.debounce(function onMessageInput() { + const message = $(this).val(); + if (message === '') { + $('.js-broadcast-message-preview').text('Your message here'); + } else { + axios + .post(previewPath, { + broadcast_message: { + message, + }, + }) + .then(({ data }) => { + $('.js-broadcast-message-preview').html(data.message); + }) + .catch(() => flash(__('An error occurred while rendering preview broadcast message'))); + } + }, 250), + ); }; diff --git a/app/assets/javascripts/pages/admin/jobs/index/components/stop_jobs_modal.vue b/app/assets/javascripts/pages/admin/jobs/index/components/stop_jobs_modal.vue index bc84666779e..e2fec3c7172 100644 --- a/app/assets/javascripts/pages/admin/jobs/index/components/stop_jobs_modal.vue +++ b/app/assets/javascripts/pages/admin/jobs/index/components/stop_jobs_modal.vue @@ -1,39 +1,42 @@