diff options
| author | Luc Donnet | 2015-05-20 09:15:14 +0200 | 
|---|---|---|
| committer | Luc Donnet | 2015-05-20 09:15:14 +0200 | 
| commit | 1582dbc32eec01eee7984b7e9a1d4c0f9c0c02b0 (patch) | |
| tree | 2d2b7cdfc3a76a1753ef9dcfc966a268d8985a7f | |
| parent | c5979f9c2c01804220f4ecbeef2cc3ce175ce14e (diff) | |
| download | chouette-core-1582dbc32eec01eee7984b7e9a1d4c0f9c0c02b0.tar.bz2 | |
Add progress bars to import and export
| -rw-r--r-- | app/assets/stylesheets/application.css.scss.erb | 1 | ||||
| -rw-r--r-- | app/assets/stylesheets/modules/index_item.css.scss | 7 | ||||
| -rw-r--r-- | app/assets/stylesheets/modules/job_status_colors.css.scss | 2 | ||||
| -rw-r--r-- | app/assets/stylesheets/modules/job_status_title.css.scss | 3 | ||||
| -rw-r--r-- | app/assets/stylesheets/modules/progress_bars.css.scss | 27 | ||||
| -rw-r--r-- | app/assets/stylesheets/vendor/bootstrap_changes.css.scss | 2 | ||||
| -rw-r--r-- | app/helpers/job_status_icon_helper.rb | 4 | ||||
| -rw-r--r-- | app/helpers/progress_bar_helper.rb | 43 | ||||
| -rw-r--r-- | app/models/concerns/report_concern.rb | 34 | ||||
| -rw-r--r-- | app/views/exports/show.html.erb | 4 | ||||
| -rw-r--r-- | app/views/imports/show.html.erb | 4 | ||||
| -rw-r--r-- | config/locales/progress_bar.en.yml | 4 | ||||
| -rw-r--r-- | config/locales/progress_bar.fr.yml | 4 | 
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 | 
