aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Donnet2015-05-20 09:15:14 +0200
committerLuc Donnet2015-05-20 09:15:14 +0200
commit1582dbc32eec01eee7984b7e9a1d4c0f9c0c02b0 (patch)
tree2d2b7cdfc3a76a1753ef9dcfc966a268d8985a7f
parentc5979f9c2c01804220f4ecbeef2cc3ce175ce14e (diff)
downloadchouette-core-1582dbc32eec01eee7984b7e9a1d4c0f9c0c02b0.tar.bz2
Add progress bars to import and export
-rw-r--r--app/assets/stylesheets/application.css.scss.erb1
-rw-r--r--app/assets/stylesheets/modules/index_item.css.scss7
-rw-r--r--app/assets/stylesheets/modules/job_status_colors.css.scss2
-rw-r--r--app/assets/stylesheets/modules/job_status_title.css.scss3
-rw-r--r--app/assets/stylesheets/modules/progress_bars.css.scss27
-rw-r--r--app/assets/stylesheets/vendor/bootstrap_changes.css.scss2
-rw-r--r--app/helpers/job_status_icon_helper.rb4
-rw-r--r--app/helpers/progress_bar_helper.rb43
-rw-r--r--app/models/concerns/report_concern.rb34
-rw-r--r--app/views/exports/show.html.erb4
-rw-r--r--app/views/imports/show.html.erb4
-rw-r--r--config/locales/progress_bar.en.yml4
-rw-r--r--config/locales/progress_bar.fr.yml4
13 files changed, 96 insertions, 43 deletions
diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/stylesheets/application.css.scss.erb
index 66217204a..00ca42512 100644
--- a/app/assets/stylesheets/application.css.scss.erb
+++ b/app/assets/stylesheets/application.css.scss.erb
@@ -14,6 +14,7 @@ $body-bg: #eee;
@import "modules/index_item";
@import "modules/icons";
@import "modules/devise";
+@import "modules/progress_bars";
// Partials
@import "partials/header";
diff --git a/app/assets/stylesheets/modules/index_item.css.scss b/app/assets/stylesheets/modules/index_item.css.scss
index 251b96d48..e281854a8 100644
--- a/app/assets/stylesheets/modules/index_item.css.scss
+++ b/app/assets/stylesheets/modules/index_item.css.scss
@@ -42,8 +42,11 @@
p.format{
color: $gray;
- margin: 0px 0px 0px 0px;
- font-size: 10px;
+ margin: 3px 0px 0px 0px;
+
+ .label{
+ font-size: 10px;
+ }
}
@import "job_status_colors"
diff --git a/app/assets/stylesheets/modules/job_status_colors.css.scss b/app/assets/stylesheets/modules/job_status_colors.css.scss
index 833b6ab29..3c9086471 100644
--- a/app/assets/stylesheets/modules/job_status_colors.css.scss
+++ b/app/assets/stylesheets/modules/job_status_colors.css.scss
@@ -1,4 +1,4 @@
.terminated{ color: $brand-success; }
-.processed{ color: $brand-warning; }
+.processed{ color: $brand-info; }
.aborted{ color: $brand-danger; }
diff --git a/app/assets/stylesheets/modules/job_status_title.css.scss b/app/assets/stylesheets/modules/job_status_title.css.scss
index 0c2f74705..65ce53efe 100644
--- a/app/assets/stylesheets/modules/job_status_title.css.scss
+++ b/app/assets/stylesheets/modules/job_status_title.css.scss
@@ -2,7 +2,8 @@ h2{
i{ margin: 0 5px 0 0; }
p.format{
+ margin: 5px 0 0 0;
color: $gray;
- font-size: 12px;
+ font-size: 14px;
}
}
diff --git a/app/assets/stylesheets/modules/progress_bars.css.scss b/app/assets/stylesheets/modules/progress_bars.css.scss
new file mode 100644
index 000000000..690a0f4ac
--- /dev/null
+++ b/app/assets/stylesheets/modules/progress_bars.css.scss
@@ -0,0 +1,27 @@
+.progress_bars{
+ width: 50%;
+
+ margin-bottom: 10px;
+
+ .progress {
+ position: relative;
+ height: 25px;
+
+ .progress-type {
+ position: absolute;
+ left: 0px;
+ font-weight: 800;
+ width: 30%;
+ padding: 3px 30px 2px 10px;
+ color: rgb(255, 255, 255);
+ background-color: rgba(25, 25, 25, 0.2);
+ }
+
+ .progress-completed {
+ position: absolute;
+ right: 0px;
+ font-weight: 800;
+ padding: 3px 10px 2px;
+ }
+ }
+}
diff --git a/app/assets/stylesheets/vendor/bootstrap_changes.css.scss b/app/assets/stylesheets/vendor/bootstrap_changes.css.scss
index 597c9897d..67cf90ae4 100644
--- a/app/assets/stylesheets/vendor/bootstrap_changes.css.scss
+++ b/app/assets/stylesheets/vendor/bootstrap_changes.css.scss
@@ -31,4 +31,4 @@
.validity_regular {
color: $brand-success;
}
-} \ No newline at end of file
+}
diff --git a/app/helpers/job_status_icon_helper.rb b/app/helpers/job_status_icon_helper.rb
index 0e8f05e90..4ac6670ec 100644
--- a/app/helpers/job_status_icon_helper.rb
+++ b/app/helpers/job_status_icon_helper.rb
@@ -8,14 +8,14 @@ module JobStatusIconHelper
title = ""
if %w{ aborted canceled }.include?(status)
title += "<span class='name aborted'><i class='fa fa-times'></i>"
- elsif %w{ created scheduled }.include?(status)
+ elsif %w{ started scheduled }.include?(status)
title += "<span class='name processed'><i class='fa fa-spinner fa-spin'></i>"
elsif %w{ terminated}.include?(status)
title += "<span class='name terminated'><i class='fa fa-check'></i>"
end
title += "#{object_name} #{truncate(name, :length => 20)}</span>"
- title += "<p class='format'>[#{object.format.upcase}]</p>" if object.format.present?
+ title += "<p class='format'><span class='label label-default'>#{t("enumerize.data_format.#{object.format}")}</span></p>" if object.format.present?
title.html_safe
end
diff --git a/app/helpers/progress_bar_helper.rb b/app/helpers/progress_bar_helper.rb
index e4102027a..246cbcfd9 100644
--- a/app/helpers/progress_bar_helper.rb
+++ b/app/helpers/progress_bar_helper.rb
@@ -1,41 +1,34 @@
+# coding: utf-8
module ProgressBarHelper
-
- def percentage_progress(object_model, report)
- if %w{ aborted canceled terminated }.include? object_model.status
- percentage_progress = "100"
- elsif object_model.status == "started" && report.total_steps != 0
- percentage_progress = "#{report.current_step / report.total_steps}"
- else # %w{ scheduled nil }.include? object_model.status
- percentage_progress = "0"
- end
- end
def progress_bar_tag(object_model)
- puts object_model.report
- report = object_model.report
- percentage_progress = percentage_progress(object_model, report)
-
- percentage_info = ""
- if %w{ aborted canceled scheduled terminated }.include? object_model.status
- percentage_info = "#{percentage_progress}% " + I18n.t("#{object_model.class.to_s.downcase.pluralize}.statuses.#{object_model.status}")
- elsif object_model.status == "started"
- percentage_info = "Niv #{report.current_level} : #{report.current_step_name.downcase} #{report.current_step} / #{report.total_steps}"
- end
+ report = object_model.report
if %w{ aborted canceled }.include? object_model.status
div_class = "progress-bar progress-bar-danger"
elsif %w{ started scheduled }.include? object_model.status
- div_class = "progress-bar progress-bar-info"
+ div_class = "progress-bar progress-bar-striped active progress-bar-info"
elsif object_model.status == "terminated"
div_class = "progress-bar progress-bar-success"
else
div_class = "progress-bar"
- end
+ end
+
+ if object_model.status != "terminated"
+ progress = content_tag :div, :class => "progress" do
+ concat(content_tag(:div, :class => div_class, role: "progressbar", :'aria-valuenow' => "#{report.level_progress}", :'aria-valuemin' => "0", :'aria-valuemax' => "100", :style => "width: #{report.level_progress}%;") do
+ end)
+ concat( content_tag(:span, t("progress_bar.level"), :class => "progress-type") )
+ concat( content_tag(:span, "#{report.progression.current_step}/#{report.progression.steps_count}", :class => "progress-completed") )
+ end
- content_tag :div, :class => "progress", :title => percentage_info do
- content_tag :div, :class => div_class, role: "progressbar", :'aria-valuenow' => "#{percentage_progress}", :'aria-valuemin' => "0", :'aria-valuemax' => "100", :style => "width: #{percentage_progress}%;" do
- "#{percentage_progress}%"
+ progress += content_tag :div, :class => "progress" do
+ concat(content_tag( :div, :class => div_class, role: "progressbar", :'aria-valuenow' => "#{report.step_progress}", :'aria-valuemin' => "0", :'aria-valuemax' => "100", :style => "width: 100%;" ) do
+ end)
+ concat( content_tag(:span, t("progress_bar.step"), :class => "progress-type") )
+ concat( content_tag(:span, "#{report.current_step.realized}/#{report.current_step.total}", :class => "progress-completed") )
end
end
+
end
end
diff --git a/app/models/concerns/report_concern.rb b/app/models/concerns/report_concern.rb
index af37e3d03..762c86698 100644
--- a/app/models/concerns/report_concern.rb
+++ b/app/models/concerns/report_concern.rb
@@ -10,25 +10,41 @@ module ReportConcern
module ClassMethods
end
+
+ def progression?
+ datas.progression?
+ end
+
+ def progression
+ datas.progression
+ end
+
+ def percentage(a, b)
+ (a.to_f / b.to_f * 100).round(0)
+ end
- def current_level
- datas.progression.current_step if datas.progression
+ def level_progress
+ percentage( progression.current_step, progression.steps_count) if progression?
end
def last_step
- datas.progression.steps.last if datas.progression
+ datas.progression.steps.last if progression?
end
- def current_step_name
- last_step.step if last_step
+ def current_step
+ datas.progression.steps[progression.current_step]
end
- def current_step
- last_step.realized if last_step
+ def step_progress
+ return 100 if progression.current_step == progression.steps_count
+
+ percentage( current_step.realized, current_step.total )
end
+
+ def step_progress_name
+ return last_step.step if progression.current_step == progression.steps_count
- def total_steps
- last_step.total if last_step
+ current_step.step
end
def zip_file
diff --git a/app/views/exports/show.html.erb b/app/views/exports/show.html.erb
index d79b3f3cf..a44f49362 100644
--- a/app/views/exports/show.html.erb
+++ b/app/views/exports/show.html.erb
@@ -1,7 +1,9 @@
<div class="test">
<%= title_tag job_status_title(@export) %>
</div>
-
+<div class="progress_bars">
+ <%= progress_bar_tag(@export) %>
+</div>
<div class="export_show">
<div class="links">
<%= link_to( font_awesome_classic_tag("fa-file-#{@export.filename_extension}-o") + t("exports.show.exported_file"), exported_file_referential_export_path(@referential, @export.id) ) if @export.file_path %>
diff --git a/app/views/imports/show.html.erb b/app/views/imports/show.html.erb
index 1923d8c53..c31d3d26b 100644
--- a/app/views/imports/show.html.erb
+++ b/app/views/imports/show.html.erb
@@ -1,7 +1,9 @@
<div class="test">
<%= title_tag job_status_title(@import) %>
</div>
-
+<div class="progress_bars">
+ <%= progress_bar_tag(@import) %>
+</div>
<div class="import_show">
<div class="links">
<%= link_to font_awesome_classic_tag("fa-file-#{@import.filename_extension}-o") + t("imports.show.imported_file"), imported_file_referential_import_path(@referential, @import.id) if @import.file_path? %>
diff --git a/config/locales/progress_bar.en.yml b/config/locales/progress_bar.en.yml
new file mode 100644
index 000000000..0675df5e0
--- /dev/null
+++ b/config/locales/progress_bar.en.yml
@@ -0,0 +1,4 @@
+en:
+ progress_bar:
+ level: "Levels"
+ step: "Steps" \ No newline at end of file
diff --git a/config/locales/progress_bar.fr.yml b/config/locales/progress_bar.fr.yml
new file mode 100644
index 000000000..c0d8a614f
--- /dev/null
+++ b/config/locales/progress_bar.fr.yml
@@ -0,0 +1,4 @@
+fr:
+ progress_bar:
+ level: "Etapes"
+ step: "Sous étapes" \ No newline at end of file