diff --git a/app/views/hooks/_sparkline_import.erb b/app/views/hooks/_sparkline_import.erb index bb48e0e78e74bfbbd8ac73f48c4d8968bfffbb9d..a3f16e652216baf267856aba6f3f6a9e37c38ea0 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 0000000000000000000000000000000000000000..71081d748c534bb18aaf26ab339eef8c346a0e64 --- /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 bd1898ec6ecc1df4b3dd12073b68a80f40741641..d559d3879d55a9bbecefc7e295ab50dc83caae3f 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 fb7f854de32e11ee1f48f5b110186e2fb04c6d26..188f102683eba181e5410f3231de7fa760ee18b4 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 34f8cd31e54c3183f25310ab89e02b14ccb85fd6..e22b85b5e8af4289ce0d87d534c7d4791782ac94 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 6e25770cff9f271306eeeaa55d82418221d9b16f..8a7eba311d2f7e4515dc6a11ffcba073890595b1 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