diff options
| -rw-r--r-- | app/controllers/chouette_controller.rb | 13 | ||||
| -rw-r--r-- | app/helpers/application_helper.rb | 2 | ||||
| -rw-r--r-- | app/helpers/newfront_helper.rb | 69 | ||||
| -rw-r--r-- | app/helpers/refobjects_helper.rb | 62 | ||||
| -rw-r--r-- | app/views/referential_networks/_networks.html.slim | 52 |
5 files changed, 108 insertions, 90 deletions
diff --git a/app/controllers/chouette_controller.rb b/app/controllers/chouette_controller.rb index 46691b13e..074fc0515 100644 --- a/app/controllers/chouette_controller.rb +++ b/app/controllers/chouette_controller.rb @@ -2,15 +2,18 @@ class ChouetteController < BreadcrumbController include ApplicationHelper include BreadcrumbHelper - + before_action :switch_referential - + def switch_referential Apartment::Tenant.switch!(referential.slug) - end + end def referential - @referential ||= current_organisation.referentials.find params[:referential_id] - end + @referential ||= current_organisation.referentials.find params[:referential_id] + end + alias_method :current_referential, :referential + helper_method :current_referential + end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 132b7dcaa..49bc67ce7 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,6 +1,6 @@ module ApplicationHelper - include RefobjectsHelper + include NewfrontHelper def font_awesome_classic_tag(name) name = "fa-file-text-o" if name == "fa-file-csv-o" diff --git a/app/helpers/newfront_helper.rb b/app/helpers/newfront_helper.rb new file mode 100644 index 000000000..5bdf674b9 --- /dev/null +++ b/app/helpers/newfront_helper.rb @@ -0,0 +1,69 @@ +module NewfrontHelper + + def table_builder collection, columns, actions, cls = nil + return unless collection.present? + + head = content_tag :thead do + content_tag :tr do + hcont = [] + columns.map do |k, v| + hcont << content_tag(:th, k.to_s.titleize) + end + hcont << content_tag(:th, 'Actions', class: 'text-center') if actions.any? + + hcont.join.html_safe + end + end + + body = content_tag :tbody do + collection.collect do |item| + content_tag :tr do + bcont = [] + columns.map do |k, attribute| + value = + if Proc === attribute + attribute.call(item) + else + item.try(attribute) + end + bcont << content_tag(:td, value) + end + bcont << content_tag(:td, links_builder(item, actions), class: 'text-center') if actions.any? + + bcont.join.html_safe + end + end.join.html_safe + end + + content_tag :table, head + body, class: cls + end + + def links_builder(item, actions) + trigger = content_tag :div, class: 'btn btn-primary dropdown-toggle', data: { toggle: 'dropdown' } do + a = content_tag :span, '', class: 'fa fa-bars' + b = content_tag :span, '', class: 'caret' + a + b + end + + menu = content_tag :ul, class: 'dropdown-menu' do + actions.collect do |action| + polymorph_url = [] + + polymorph_url << action if action != :show + if current_referential + polymorph_url << current_referential + elsif item.respond_to? :referential + polymorph_url << item.referential + end + + polymorph_url << item + + content_tag :li, link_to(action, polymorph_url) + end.join.html_safe + end + + content_tag :div, trigger + menu, class: 'btn-group btn-group-xs' + + end + +end diff --git a/app/helpers/refobjects_helper.rb b/app/helpers/refobjects_helper.rb deleted file mode 100644 index aac40b944..000000000 --- a/app/helpers/refobjects_helper.rb +++ /dev/null @@ -1,62 +0,0 @@ -module RefobjectsHelper - - def table_builder collection, columns, actions = [], cls = nil - return unless collection.present? - - head = content_tag :thead do - content_tag :tr do - attributes_head = columns.collect do |col| - content_tag :th, col.to_s.titleize - end.join.html_safe - links_head = content_tag :th, "Actions" if actions.any? - attributes_head + links_head - end - end - - body = content_tag :tbody do - collection.collect { |item| - content_tag :tr do - attributes = columns.collect { |col| - content_tag(:td, item.try(col)) - }.join.html_safe - - # Build links - links = content_tag :td, autolinks_builder(item, actions, :xs), class: 'text-center' if actions.any? - - attributes + links - end - }.join.html_safe - end - - # content_tag :table, head + body, class: cls - content_tag :table, "pouet" - end - - def autolinks_builder(item, actions, cls) - link = [] - - actions.each do |action| - if action == "show" - showlink = link_to(company_path(item), class: 'btn btn-default') do - content_tag :span, "", class: 'fa fa-eye' - end - link << showlink - elsif action == "edit" - editlink = link_to(edit_company_path(item), class: 'btn btn-default') do - content_tag :span, "", class: 'fa fa-pencil' - end - link << editlink - elsif action == "delete" - deletelink = link_to(company_path(item), method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-default') do - content_tag :span, "", class: 'fa fa-trash-o' - end - link << deletelink - end - end - - content_tag :div, class: "btn-group btn-group-#{cls}" do - link.join().html_safe - end - end - -end diff --git a/app/views/referential_networks/_networks.html.slim b/app/views/referential_networks/_networks.html.slim index 8177be318..d2db33662 100644 --- a/app/views/referential_networks/_networks.html.slim +++ b/app/views/referential_networks/_networks.html.slim @@ -1,4 +1,10 @@ .networks + = table_builder @networks, + { 'Oid' => Proc.new { |n| n.objectid.local_id }, Chouette::Network.human_attribute_name(:name) => 'name' }, + [:show, :edit], + 'table table-bordered' + + table.table.table-bordered.table-hover thead tr @@ -6,26 +12,28 @@ th.text-center = "Actions" tbody - - @networks.each do |network| - tr - td - span.label.label-default style='margin-right:5px' - = network.objectid.local_id - = network.name - - / Actions - td.text-center - .btn-group.btn-group-xs - .btn-primary.btn.dropdown-toggle data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" - span.fa.fa-bars - span.caret - - ul.dropdown-menu - li = link_to 'Voir', referential_network_path(@referential, network) - - if policy(network).update? - li = link_to 'Editer', edit_referential_network_path(@referential, network) - - if policy(network).destroy? - li = link_to 'Supprimer', referential_network_path(@referential, network), method: :delete, data: { confirm: t('networks.actions.destroy_confirm') } + - @networks.each_with_index do |network, i| + - if i < 6 + tr + td + span.label.label-default style='margin-right:5px' + = network.objectid.local_id + = network.name + = network.referential.id + + / Actions + td.text-center + .btn-group.btn-group-xs + .btn-primary.btn.dropdown-toggle data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" + span.fa.fa-bars + span.caret + + ul.dropdown-menu + li = link_to 'Voir', referential_network_path(@referential, network) + - if policy(network).update? + li = link_to 'Editer', edit_referential_network_path(@referential, network) + - if policy(network).destroy? + li = link_to 'Supprimer', referential_network_path(@referential, network), method: :delete, data: { confirm: t('networks.actions.destroy_confirm') } - .text-center - = will_paginate @networks, container: false, renderer: RemoteBootstrapPaginationLinkRenderer + / .text-center + / = will_paginate @networks, container: false, renderer: RemoteBootstrapPaginationLinkRenderer |
