diff options
| author | jpl | 2017-08-23 15:36:29 +0200 | 
|---|---|---|
| committer | jpl | 2017-08-23 15:36:39 +0200 | 
| commit | fd168f1aa111f915ba2a58e24617267fcb5cbe0c (patch) | |
| tree | 812e7c8751df060e2ec90b6b5643f8ebd3ef25e9 /app | |
| parent | 6fe3c8ac3f4120fcab85a593062a8c0785b50839 (diff) | |
| download | chouette-core-fd168f1aa111f915ba2a58e24617267fcb5cbe0c.tar.bz2 | |
Refs #4258: adding overhead feature to table_builder, with static samples on imports#show
Diffstat (limited to 'app')
| -rw-r--r-- | app/assets/stylesheets/components/_tables.sass | 62 | ||||
| -rw-r--r-- | app/controllers/imports_controller.rb | 4 | ||||
| -rw-r--r-- | app/helpers/table_builder_helper.rb | 150 | ||||
| -rw-r--r-- | app/views/imports/show.html.slim | 134 | ||||
| -rw-r--r-- | app/views/networks/show.html.slim | 2 | 
5 files changed, 322 insertions, 30 deletions
| diff --git a/app/assets/stylesheets/components/_tables.sass b/app/assets/stylesheets/components/_tables.sass index 3fc92d348..b50721f27 100644 --- a/app/assets/stylesheets/components/_tables.sass +++ b/app/assets/stylesheets/components/_tables.sass @@ -85,6 +85,67 @@      border-top: 2px solid $darkgrey      margin-top: 15px +  // Overhead +  > thead > tr.overhead +    > th +      font-size: 1.4rem +      text-align: center + +      &.overheaded-default +        background-color: rgba($grey, 0.15) +        background-clip: padding-box +        border-left: 2px solid rgba($grey, 0.15) +        border-right: 2px solid rgba($grey, 0.15) + +      &.overheaded-danger +        background-color: $red +        border-left: 2px solid $red +        border-right: 2px solid $red +        color: #fff + +      &.overheaded-warning +        background-color: $orange +        border-left: 2px solid $orange +        border-right: 2px solid $orange +        color: #fff + +      &.overheaded-success +        background-color: $green +        border-left: 2px solid $green +        border-right: 2px solid $green +        color: #fff + +  td, th +    &.overheaded-default +      border-left: 2px solid rgba($grey, 0.15) +      border-right: 2px solid rgba($grey, 0.15) + +    &.overheaded-danger +      border-left: 2px solid $red +      border-right: 2px solid $red + +    &.overheaded-warning +      border-left: 2px solid $orange +      border-right: 2px solid $orange + +    &.overheaded-success +      border-left: 2px solid $green +      border-right: 2px solid $green + +  tr:last-child +    td +      &.overheaded-default +        border-bottom: 2px solid rgba($grey, 0.15) + +      &.overheaded-danger +        border-bottom: 2px solid $red + +      &.overheaded-warning +        border-bottom: 2px solid $orange + +      &.overheaded-success +        border-bottom: 2px solid $green +    // Specific for tables displaying stop points    &.has-stoppoints      tbody @@ -144,7 +205,6 @@            margin-top: -8px -  // select_toolbox  .select_toolbox    padding: 10px diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb index 916e5ac23..979c9bfcf 100644 --- a/app/controllers/imports_controller.rb +++ b/app/controllers/imports_controller.rb @@ -6,6 +6,10 @@ class ImportsController < BreadcrumbController    def show      show! do +      @import = @import.decorate(context: { +        workbench: @workbench +      }) +        build_breadcrumb :show      end    end diff --git a/app/helpers/table_builder_helper.rb b/app/helpers/table_builder_helper.rb index b5497b600..f15019458 100644 --- a/app/helpers/table_builder_helper.rb +++ b/app/helpers/table_builder_helper.rb @@ -42,7 +42,8 @@ require 'table_builder_helper/url'  #       ),  #     ],  #     links: [:show, :edit], -#     cls: 'table has-search' +#     cls: 'table has-search', +#     overhead: [ {title: 'one', width: 1, cls: 'toto'}, {title: 'two <span class="test">Info</span>', width: 2, cls: 'default'} ]  #   )  module TableBuilderHelper    # TODO: rename this after migration from `table_builder` @@ -65,19 +66,36 @@ module TableBuilderHelper      links: [],      # A CSS class to apply to the <table> -    cls: '' +    cls: '', + +    # A set of content, over the th line... +    overhead: []    )      content_tag :table, -      thead(collection, columns, sortable, selectable, links.any?) + -        tbody(collection, columns, selectable, links), +      thead(collection, columns, sortable, selectable, links.any?, overhead) + +        tbody(collection, columns, selectable, links, overhead),        class: cls    end    private -  def thead(collection, columns, sortable, selectable, has_links) +  def thead(collection, columns, sortable, selectable, has_links, overhead)      content_tag :thead do -      content_tag :tr do +      # Inserts overhead content if any specified +      over_head = '' + +      unless overhead.empty? +        over_head = content_tag :tr, class: 'overhead' do +          oh_cont = [] + +          overhead.each do |h| +            oh_cont << content_tag(:th, raw(h[:title]), colspan: h[:width], class: h[:cls]) +          end +          oh_cont.join.html_safe +        end +      end + +      main_head = content_tag :tr do          hcont = []          if selectable @@ -85,14 +103,58 @@ module TableBuilderHelper          end          columns.each do |column| -          hcont << content_tag(:th, build_column_header( -            column, -            sortable, -            collection.model, -            params, -            params[:sort], -            params[:direction] -          )) +          if overhead.empty? +            hcont << content_tag(:th, build_column_header( +              column, +              sortable, +              collection.model, +              params, +              params[:sort], +              params[:direction] +            )) + +          else +            i = columns.index(column) + +            if overhead[i].blank? +              if (i > 0) && (overhead[i - 1][:width] > 1) +                clsArrayH = overhead[i - 1][:cls].split + +                hcont << content_tag(:th, build_column_header( +                  column, +                  sortable, +                  collection.model, +                  params, +                  params[:sort], +                  params[:direction] +                ), class: td_cls(clsArrayH)) + +              else +                hcont << content_tag(:th, build_column_header( +                  column, +                  sortable, +                  collection.model, +                  params, +                  params[:sort], +                  params[:direction] +                )) +              end + +            else +              clsArrayH = overhead[i][:cls].split + +              hcont << content_tag(:th, build_column_header( +                column, +                sortable, +                collection.model, +                params, +                params[:sort], +                params[:direction] +              ), class: td_cls(clsArrayH)) + +            end + +          end          end          # Inserts a blank column for the gear menu @@ -102,10 +164,12 @@ module TableBuilderHelper          hcont.join.html_safe        end + +      (over_head + main_head).html_safe      end    end -  def tbody(collection, columns, selectable, links) +  def tbody(collection, columns, selectable, links, overhead)      content_tag :tbody do        collection.map do |item| @@ -128,9 +192,53 @@ module TableBuilderHelper                  item,                  referential                ) -              bcont << content_tag(:td, link_to(value, polymorph_url), title: 'Voir') + +              if overhead.empty? +                bcont << content_tag(:td, link_to(value, polymorph_url), title: 'Voir') + +              else +                i = columns.index(column) + +                if overhead[i].blank? +                  if (i > 0) && (overhead[i - 1][:width] > 1) +                    clsArrayAlt = overhead[i - 1][:cls].split + +                    bcont << content_tag(:td, link_to(value, polymorph_url), title: 'Voir', class: td_cls(clsArrayAlt)) + +                  else +                    bcont << content_tag(:td, link_to(value, polymorph_url), title: 'Voir') +                  end + +                else +                  clsArray = overhead[columns.index(column)][:cls].split + +                  bcont << content_tag(:td, link_to(value, polymorph_url), title: 'Voir', class: td_cls(clsArray)) +                end +              end +              else -              bcont << content_tag(:td, value) +              if overhead.empty? +                bcont << content_tag(:td, value) + +              else +                i = columns.index(column) + +                if overhead[i].blank? +                  if (i > 0) && (overhead[i - 1][:width] > 1) +                    clsArrayAlt = overhead[i - 1][:cls].split + +                    bcont << content_tag(:td, value, class: td_cls(clsArrayAlt)) + +                  else +                    bcont << content_tag(:td, value) +                  end + +                else +                  clsArray = overhead[i][:cls].split + +                  bcont << content_tag(:td, value, class: td_cls(clsArray)) +                end +              end              end            end @@ -148,6 +256,14 @@ module TableBuilderHelper      end    end +  def td_cls(a) +    if a.include? 'full-border' +      a.slice!(a.index('full-border')) + +      return a.join(' ') +    end +  end +    def build_links(item, links)      trigger = content_tag(        :div, diff --git a/app/views/imports/show.html.slim b/app/views/imports/show.html.slim index b40e11ea4..65e3f33ff 100644 --- a/app/views/imports/show.html.slim +++ b/app/views/imports/show.html.slim @@ -1,14 +1,126 @@ -.title.row -  .col-md-8 -    = title_tag job_status_title(@import) +/ PageHeader += pageheader 'map-marker', +             @import.name, +             '', +             t('last_update', time: l(@import.updated_at, format: :short)) do +              +  / Below is secundary actions & optional contents (filters, ...) +  .row +    .col-lg-12.text-right.mb-sm +      - @import.action_links.each do |link| +        = link_to link.href, +            method: link.method, +            data: link.data, +            class: 'btn btn-primary' do +              = link.content -.import_show -  .links -    = link_to font_awesome_classic_tag("fa-file-#{@import.file.file.extension}-o") + t("imports.show.imported_file"), @import.file.url +/ PageContent +.page_content +  .container-fluid +    .row +      .col-lg-6.col-md-6.col-sm-12.col-xs-12 +        = definition_list t('metadatas'), { 'Récupération des données' => '-', "Nom de l'archive" => @import.try(:file_identifier)} -- content_for :sidebar do -  ul.actions -    li -      = link_to t('imports.actions.destroy'), workbench_import_path(@workbench, @import.id), method: :delete, data: {confirm: t('imports.actions.destroy_confirm')}, class: 'remove' +    / .row +      / .col-lg-12 +      /   = table_builder_2 Import.all, +      /     [ \ +      /       TableBuilderHelper::Column.new( \ +      /         key: :status, \ +      /         attribute: 'status' \ +      /       ), \ +      /       TableBuilderHelper::Column.new( \ +      /         key: :started_at, \ +      /         attribute: 'started_at' \ +      /       ), \ +      /       TableBuilderHelper::Column.new( \ +      /         key: :name, \ +      /         attribute: 'name' \ +      /       ), \ +      /       TableBuilderHelper::Column.new( \ +      /         key: :creator, \ +      /         attribute: 'creator' \ +      /       ) \ +      /     ], +      /     links: [], +      /     cls: 'table', +      /     overhead: [ \ +      /       {}, \ +      /       { \ +      /         title: 'Lorem ipsum dolor sit amet', \ +      /         width: 1, \ +      /         cls: 'overheaded-danger full-border' \ +      /       }, { \ +      /         title: 'Toto <span title="Lorem ipsum..." class="fa fa-lg fa-info-circle text-info"></span>', \ +      /         width: 2, \ +      /         cls: 'overheaded-default' \ +      /       } \ +      /     ] -  = history_tag(@import) +    .row +      .col-lg-12 +        / TMP static table +        table.table +          thead +            tr +              th Nom du jeu de données +              th Conformité Netex +              th Contrôle STIF +              th Contrôle organisation +              th + +          tbody +            tr +              td Nom JDD #1 +              td.text-center +                span.fa.fa-circle.text-success +              td.text-center +                span.fa.fa-circle.text-danger +              td.text-center - +              td.actions +                .btn-group +                  .btn.dropdown-toggle data-toggle='dropdown' +                    span.fa.fa-cog + +                  ul.dropdown-menu +                    li +                      = link_to 'Rapport de contrôle STIF', '#' +                    li +                      = link_to 'Rapport de contrôle Orga.', '#' + +            tr +              td Nom JDD #2 +              td.text-center +                span.fa.fa-circle.text-warning +              td.text-center +                span.fa.fa-circle.text-warning +              td.text-center - +              td.actions +                .btn-group +                  .btn.dropdown-toggle data-toggle='dropdown' +                    span.fa.fa-cog + +                  ul.dropdown-menu +                    li +                      = link_to 'Rapport de contrôle STIF', '#' +                    li +                      = link_to 'Rapport de contrôle Orga.', '#' + +            tr +              td Nom JDD #3 +              td.text-center +                span.fa.fa-circle.text-danger +              td.text-center +                span.fa.fa-circle.text-danger + +              td.text-center - +              td.actions +                .btn-group +                  .btn.dropdown-toggle data-toggle='dropdown' +                    span.fa.fa-cog + +                  ul.dropdown-menu +                    li +                      = link_to 'Rapport de contrôle STIF', '#' +                    li +                      = link_to 'Rapport de contrôle Orga.', '#' diff --git a/app/views/networks/show.html.slim b/app/views/networks/show.html.slim index 09edbad2e..5726daa2b 100644 --- a/app/views/networks/show.html.slim +++ b/app/views/networks/show.html.slim @@ -1,7 +1,7 @@  / PageHeader  = pageheader 'map-marker',               @network.name, -             'Lorem ipsum dolor sit amet', +             '',               t('last_update', time: l(@network.updated_at, format: :short)) do    / Below is secundary actions & optional contents (filters, ...) | 
