aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjpl2016-11-22 16:44:45 +0100
committerjpl2016-11-22 17:59:37 +0100
commit540b2b720791875b8a774cd53d9a49c29c610e37 (patch)
tree5d66346eedbc3c5053e950450eb645f98cc770bb
parentf12aad6a79ba71d59f30c1ae977babfa8d0d248f (diff)
downloadchouette-core-540b2b720791875b8a774cd53d9a49c29c610e37.tar.bz2
Refs #2019: Create table helper for views
-rw-r--r--app/controllers/chouette_controller.rb13
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/helpers/newfront_helper.rb69
-rw-r--r--app/helpers/refobjects_helper.rb62
-rw-r--r--app/views/referential_networks/_networks.html.slim52
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