aboutsummaryrefslogtreecommitdiffstats
path: root/app/helpers/breadcrumb_helper.rb
diff options
context:
space:
mode:
authorMichel Etienne2014-09-19 14:56:09 +0200
committerMichel Etienne2014-09-19 14:56:09 +0200
commit4a278cad118f7110cc8304da6288e4e6b6047181 (patch)
tree1fd49d6c6d0ef07da6f2cfd60d7304640761e268 /app/helpers/breadcrumb_helper.rb
parentbf6bea71846d2ab079d592086251c6af426c80d9 (diff)
downloadchouette-core-4a278cad118f7110cc8304da6288e4e6b6047181.tar.bz2
refactor breadcrumbs
Diffstat (limited to 'app/helpers/breadcrumb_helper.rb')
-rw-r--r--app/helpers/breadcrumb_helper.rb188
1 files changed, 188 insertions, 0 deletions
diff --git a/app/helpers/breadcrumb_helper.rb b/app/helpers/breadcrumb_helper.rb
new file mode 100644
index 000000000..718147ce7
--- /dev/null
+++ b/app/helpers/breadcrumb_helper.rb
@@ -0,0 +1,188 @@
+module BreadcrumbHelper
+
+ def build_breadcrumb(action)
+ case resource_class.to_s
+ when "Chouette::Network"
+ network_breadcrumb action
+ when "Chouette::Company"
+ company_breadcrumb action
+ when "Chouette::GroupOfLine"
+ group_of_line_breadcrumb action
+ when "Chouette::Line"
+ line_breadcrumb action
+ when "Chouette::Route"
+ route_breadcrumb action
+ when "Chouette::JourneyPattern"
+ journey_pattern_breadcrumb action
+ when "Chouette::VehicleJourney"
+ vehicle_journey_breadcrumb action
+ when "VehicleJourneyImport"
+ vehicle_journey_import_breadcrumb action
+ when "Chouette::StopArea"
+ stop_area_breadcrumb action
+ when "Chouette::AccessPoint"
+ access_point_breadcrumb action
+ when "Chouette::AccessLink"
+ access_link_breadcrumb action
+ when "Chouette::ConnectionLink"
+ connection_link_breadcrumb action
+ when "Chouette::TimeTable"
+ time_table_breadcrumb action
+ when "ImportTask"
+ import_breadcrumb action
+ when "Export"
+ export_breadcrumb action
+ when "ComplianceCheckTask"
+ compliance_breadcrumb action
+ when "RuleParameterSet"
+ rule_parameter_breadcrumb action
+ else
+ Rails.logger.info "---------"
+ Rails.logger.info ">>>>>>> "+resource_class.to_s+" unmapped"
+ Rails.logger.info "---------"
+ referential_breadcrumb
+ end
+ end
+
+
+ def network_breadcrumb(action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("networks"), referential_networks_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@network), referential_line_path(@referential, @network),:title => breadcrumb_tooltip(@network) if action == :edit
+ end
+
+ def group_of_line_breadcrumb(action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("group_of_lines"), referential_group_of_lines_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@group_of_line), referential_group_of_line_path(@referential, @group_of_line),:title => breadcrumb_tooltip(@group_of_line) if action == :edit
+ end
+
+ def stop_area_breadcrumb(action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("stop_areas"), referential_stop_areas_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@stop_area), referential_stop_area_path(@referential, @stop_area),:title => breadcrumb_tooltip(@stop_area) if action == :edit
+ end
+
+ def access_point_breadcrumb(action)
+ stop_area_breadcrumb :edit
+ add_breadcrumb breadcrumb_label(@access_point), referential_stop_area_access_point_path(@referential, @stop_area,@access_point),:title => breadcrumb_tooltip(@access_point) if action == :edit
+ end
+
+ def access_link_breadcrumb(action)
+ access_point_breadcrumb :edit
+ add_breadcrumb Chouette::AccessLink.model_name.human(:count => 2), access_links_referential_stop_area_path(@referential, @stop_area)
+ add_breadcrumb breadcrumb_label(@access_link), referential_access_point_access_link_path(@referential, @access_point,@access_link),:title => breadcrumb_tooltip(@access_link) if action == :edit
+ end
+
+ def connection_link_breadcrumb(action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("connection_links"), referential_connection_links_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@connection_link), referential_connection_link_path(@referential, @connection_link),:title => breadcrumb_tooltip(@connection_link) if action == :edit
+ end
+
+ def time_table_breadcrumb(action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("time_tables"), referential_time_tables_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@time_table), referential_time_table_path(@referential, @time_table),:title => breadcrumb_tooltip(@time_table) if action == :edit
+ end
+
+ def line_breadcrumb(action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("lines"), referential_lines_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@line), referential_line_path(@referential, @line),:title => breadcrumb_tooltip(@line) if action == :edit
+ end
+
+ def route_breadcrumb(action)
+ line_breadcrumb :edit
+ add_breadcrumb breadcrumb_label(@route), referential_line_route_path(@referential, @line,@route),:title => breadcrumb_tooltip(@route) if action == :edit
+ end
+
+ def journey_pattern_breadcrumb(action)
+ route_breadcrumb :edit
+ add_breadcrumb breadcrumb_label(@journey_pattern), referential_line_route_journey_pattern_path(@referential, @line,@route,@journey_pattern),:title => breadcrumb_tooltip(@journey_pattern) if action == :edit
+ end
+
+ def vehicle_journey_breadcrumb(action)
+ if action == :index
+ route_breadcrumb :edit
+ else
+ @journey_pattern = @vehicle_journey.journey_pattern
+ journey_pattern_breadcrumb :edit
+ add_breadcrumb Referential.human_attribute_name("vehicle_journeys"), referential_line_route_vehicle_journeys_path(@referential, @line,@route)
+ end
+ add_breadcrumb breadcrumb_label(@vehicle_journey), referential_line_route_vehicle_journey_path(@referential, @line,@route,@vehicle_journey),:title => breadcrumb_tooltip(@vehicle_journey) if action == :edit
+ end
+
+ def vehicle_journey_import_breadcrumb (action)
+ route_breadcrumb :edit
+ end
+
+ def company_breadcrumb (action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("companies"), referential_companies_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@company), referential_company_path(@referential, @company),:title => breadcrumb_tooltip(@company) if action == :edit
+ end
+
+ def import_breadcrumb (action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("import_tasks"), referential_import_tasks_path(@referential) unless action == :index
+ end
+
+ def export_breadcrumb (action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("exports"), referential_exports_path(@referential) unless action == :index
+ end
+
+ def compliance_breadcrumb (action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("compliance_check_tasks"), referential_compliance_check_tasks_path(@referential) unless action == :index
+ add_breadcrumb breadcrumb_label(@compliance_check_task), referential_compliance_check_task_path(@referential, @compliance_check_task),:title => breadcrumb_tooltip(@compliance_check_task) if action == :edit
+ end
+
+ def rule_parameter_breadcrumb (action)
+ referential_breadcrumb
+ add_breadcrumb Referential.human_attribute_name("import_tasks"), referential_import_tasks_path(@referential)
+ add_breadcrumb Referential.human_attribute_name("compliance_check_tasks"), referential_compliance_check_tasks_path(@referential)
+ add_breadcrumb Referential.human_attribute_name("rule_parameter_sets"), referential_rule_parameter_sets_path(@referential) unless action == :index
+ end
+
+ def referential_breadcrumb
+ if @referential.present?
+ add_breadcrumb breadcrumb_label(@referential), referential_path(@referential),:title => breadcrumb_tooltip(@referential)
+ end
+ end
+
+ def breadcrumb_label(obj)
+ label = breadcrumb_name(obj)
+ if label.blank?
+ label = obj.id.to_s
+ end
+
+ if label.length > 12
+ label[0..8]+"..."
+ else
+ label
+ end
+ end
+
+ def breadcrumb_tooltip(obj)
+ label = breadcrumb_name(obj)
+ if label.blank?
+ label = obj.class.model_name.human+"("+obj.id.to_s+")"
+ else
+ label = obj.class.model_name.human+" : "+label
+ end
+ label
+ end
+
+ def breadcrumb_name(obj)
+ label = ""
+ if obj.respond_to?('name')
+ label = obj.name
+ elsif obj.respond_to?('comment')
+ label = obj.comment
+ end
+ label
+ end
+
+end