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