From d515706134796a73cbebcd34b3dd25809c9b2544 Mon Sep 17 00:00:00 2001 From: Milan Brabec <milan.brabec@sperling.cz> Date: Thu, 8 Apr 2021 20:13:22 +0200 Subject: [PATCH] =?UTF-8?q?oprava=20zobrazen=C3=AD=20v=20projektech=20bez?= =?UTF-8?q?=20sparkline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/hooks/_sparkline_import.erb | 2 ++ assets/stylesheets/sparkline.css | 19 +++++++++++++++++++ init.rb | 11 ++++++----- lib/issue_sparkline.rb | 2 +- lib/patches/projects_helper_patch.rb | 4 +++- lib/patches/settings_controller_patch.rb | 5 ++++- 6 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 assets/stylesheets/sparkline.css diff --git a/app/views/hooks/_sparkline_import.erb b/app/views/hooks/_sparkline_import.erb index bb48e0e..a3f16e6 100644 --- a/app/views/hooks/_sparkline_import.erb +++ b/app/views/hooks/_sparkline_import.erb @@ -1,7 +1,9 @@ +<% if @issues.any? { |issue| issue.project.enabled_module(:sparkline) } %> <% content_for :header_tags do %> <%= javascript_include_tag 'jquery.sparkline', plugin: 'sparkline' %> <%= javascript_include_tag 'sparkline', plugin: 'sparkline' %> <%= stylesheet_link_tag 'sparkline', plugin: 'sparkline' %> + <% end %> <% end %> diff --git a/assets/stylesheets/sparkline.css b/assets/stylesheets/sparkline.css new file mode 100644 index 0000000..71081d7 --- /dev/null +++ b/assets/stylesheets/sparkline.css @@ -0,0 +1,19 @@ +:root { + --sparkline-edge: hsl(0deg 0% 90%); +} + +table.progress + .percent { + float: left; + /*margin-right: 5px;*/ +} + +.done_ratio_sparkline_container { + padding-right: 2px; +} + +.done_ratio_sparkline > canvas { + width: 150px; + margin: 0 5px; + border-inline: 1px solid var(--sparkline-edge); + padding-inline: 1px; +} diff --git a/init.rb b/init.rb index bd1898e..d559d38 100644 --- a/init.rb +++ b/init.rb @@ -3,8 +3,8 @@ Redmine::Plugin.register :sparkline do author 'Sperling' description 'Sparkline plugin for done ratio of issues' version '1.0.0' - url '' - author_url 'https://www.sperling.cz/' + url 'https://www.sperling.cz/redmine' + author_url 'https://www.sperling.cz/redmine' require_dependency 'sparkline_hook_listener' @@ -16,8 +16,9 @@ Redmine::Plugin.register :sparkline do line_color: "blue", fill_color: "skyblue", }, partial: 'settings/sparkline/sparkline' - permission :sparkline, { - settings: [ :plugin ] - } + permission :sparkline, { + # settings: [ :plugin ] + } end + end diff --git a/lib/issue_sparkline.rb b/lib/issue_sparkline.rb index fb7f854..188f102 100644 --- a/lib/issue_sparkline.rb +++ b/lib/issue_sparkline.rb @@ -56,7 +56,7 @@ class IssueSparkline @values.sort.to_h.each {|key, value| string_values.append "#{key.to_time.to_i}:#{value}" } content_tag(tag, "", - values: string_values.join(","), + values: @issue.project.enabled_module(:sparkline) ? string_values.join(",") : "", class: 'done_ratio_sparkline', issueId: @issue.id, sparkType: 'line', diff --git a/lib/patches/projects_helper_patch.rb b/lib/patches/projects_helper_patch.rb index 34f8cd3..e22b85b 100644 --- a/lib/patches/projects_helper_patch.rb +++ b/lib/patches/projects_helper_patch.rb @@ -39,7 +39,9 @@ module ProjectsHelperPatch module InstanceMethods def project_settings_tabs_with_sparkline tabs = project_settings_tabs_without_sparkline - tabs.push ( {:name => 'sparkline', :action => :sparkline, :partial => 'settings/plugin_sparkline', :label => :sparkline}) + if @project.enabled_module(:sparkline) + tabs.push ( {:name => 'sparkline', :action => :sparkline, :partial => 'settings/plugin_sparkline', :label => :sparkline}) + end tabs end end diff --git a/lib/patches/settings_controller_patch.rb b/lib/patches/settings_controller_patch.rb index 6e25770..8a7eba3 100644 --- a/lib/patches/settings_controller_patch.rb +++ b/lib/patches/settings_controller_patch.rb @@ -8,7 +8,8 @@ module SettingsControllerPatch base.class_eval do unloadable # Send unloadable so it will not be unloaded in development , :authorize - before_action :find_project, :authorize, :only => [:plugin], unless: -> { params[:project_id].blank? } + # before_action :find_project, :authorize, :only => [:plugin], unless: -> { params[:project_id].blank? } + before_action :find_project, :only => [:plugin], unless: -> { params[:project_id].blank? } alias_method :old_plugin, :plugin alias_method :plugin, :new_plugin @@ -20,6 +21,7 @@ module SettingsControllerPatch module InstanceMethods def new_plugin + # unless unless params[:id] == :sparkline return old_plugin end @@ -52,6 +54,7 @@ module SettingsControllerPatch def find_project # @project variable must be set before calling the authorize filter @project = Project.find(params[:project_id]) unless params[:project_id].blank? + params[:id] = :sparkline end end end -- GitLab