aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/referential.rb10
-rw-r--r--app/views/help/dataspaces.textile1
-rw-r--r--app/views/help/index.textile11
-rw-r--r--app/views/help/journeypatterns.textile35
-rw-r--r--app/views/help/routes.textile2
-rw-r--r--app/views/help/toc.textile4
-rw-r--r--app/views/help/vehiclejourneys.textile37
-rw-r--r--app/views/referentials/_form.erb12
-rw-r--r--app/views/referentials/show.html.erb15
-rw-r--r--config/locales/referentials.yml16
-rw-r--r--db/migrate/20120523123806_add_fields_to_referentials.rb7
-rw-r--r--db/schema.rb3
-rw-r--r--spec/factories.rb2
-rw-r--r--spec/models/referential_spec.rb2
14 files changed, 151 insertions, 6 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb
index d7c5bba7e..2d6d5b8d5 100644
--- a/app/models/referential.rb
+++ b/app/models/referential.rb
@@ -1,9 +1,19 @@
class Referential < ActiveRecord::Base
validates_presence_of :name
validates_presence_of :slug
+ validates_presence_of :prefix
+ validates_presence_of :time_zone
+ validates_uniqueness_of :slug
+ validates_uniqueness_of :name
+ validates_format_of :slug, :with => %r{\A[0-9a-z_]+\Z}
+ validates_format_of :prefix, :with => %r{\A[0-9a-zA-Z_]+\Z}
has_many :imports, :dependent => :destroy
+ def human_attribute_name(*args)
+ self.class.human_attribute_name(*args)
+ end
+
def lines
Chouette::Line.scoped
end
diff --git a/app/views/help/dataspaces.textile b/app/views/help/dataspaces.textile
index 68e88173b..51c32e59d 100644
--- a/app/views/help/dataspaces.textile
+++ b/app/views/help/dataspaces.textile
@@ -13,6 +13,7 @@ h3. Attributs
- Code := code de l'espace de donn&eacute;es
- Pr&eacute;fixe Neptune := pr&eacute;fixe utilis&eacute; par d&eacute;faut pour la g&eacute;n&eacute;ration des identifiants Neptune
- Projection g&eacute;ographique := r&eacute;f&eacute;rentiel de projection des coordonn&eacute;es cartographiques en compl&eacute;ment du WGS84
+- Fuseau horaire := fuseau horaire applicable pour les horaires des courses. (cf "Tz_database":http://fr.wikipedia.org/wiki/Tz_database)
h3. Impl&eacute;mentation
diff --git a/app/views/help/index.textile b/app/views/help/index.textile
index d776a8d8d..bea9502ec 100644
--- a/app/views/help/index.textile
+++ b/app/views/help/index.textile
@@ -3,7 +3,7 @@ layout: default
title: Présentation
---
-Chouette v2 : it&eacute;ration 6 du 22/05/2012
+Chouette v2 : it&eacute;ration 7 du 04/06/2012
Cette it&eacute;ration pr&eacute;sente les formulaires de :
@@ -11,6 +11,7 @@ Cette it&eacute;ration pr&eacute;sente les formulaires de :
* transporteurs
* lignes
** s&eacute;quences d'arr&ecirc;ts
+** missions
* arr&ecirc;ts
* calendriers d'application
* correspondances
@@ -20,12 +21,16 @@ l'avancement actuel permet de :
* cr&eacute;er, modifier et supprimer les objets
* consulter les cartes
+** les noms des arr&ecirc;ts sont affich&eacute; sous forme de bulle d'aide sur les cartes du r&eacute;seau, des lignes et des correspondances
* d&eacute;placer un arr&ecirc;t depuis la carte (voir mode op&eacute;ratoire dans l'aide des arr&ecirc;ts)
* associer les arr&ecirc;ts &agrave; leurs parents
* ajouter des fils &agrave; un arr&ecirc;t
* importer des lignes au format Neptune (fichier ZIP uniquement)
* &eacute;diter des s&eacute;quences d'arr&ecirc;ts :
** ajouter, d&eacute;placer et retirer des arr&ecirc;ts dans la s&eacute;quence
+** ajouter, modifier les missions de la s&eacute;quence
+* pr&eacute;ciser des param&egrave;tres g&eacute;n&eacute;raux de l'espace de donn&eacute;es
+
les actions suivantes ne sont pas encore disponible :
@@ -33,5 +38,7 @@ les actions suivantes ne sont pas encore disponible :
* associer une ITL &agrave; une ligne
* imports &agrave; d'autres formats que Neptune
* exports de donn&eacute;es
-* consulter les missions et les horaires des lignes
+* d&eacute;finir l'emprise g&eacute;n&eacute;rale du r&eacute;seau
+* g&eacute;rer le second r&eacute;f&eacute;rentiel de projection
+* consulter/cr&eacute;er/&eacute;diter les courses et les horaires
diff --git a/app/views/help/journeypatterns.textile b/app/views/help/journeypatterns.textile
new file mode 100644
index 000000000..727e3772b
--- /dev/null
+++ b/app/views/help/journeypatterns.textile
@@ -0,0 +1,35 @@
+---
+layout: default
+title: Missions
+---
+
+h3. D&eacute;finition
+
+Si on consid&egrave;re la suite ordonn&eacute;e des arr&ecirc;ts d'une s&eacute;quence d'arr&ecirc;ts, la mission se d&eacute;finit comme une suite extraite. Autrement dit, toutes les courses d'une s&eacute;quence d'arr&ecirc;ts qui desservent les m&ecirc;mes arr&ecirc;ts et dans le m&ecirc;me ordre, &agrave; des horaires diff&eacute;rents &eacute;ventuellement, r&eacute;f&eacute;rencent la m&ecirc;me mission. La mission correspond donc &agrave; une suite ordonn&eacute;e d'arr&ecirc;ts de la s&eacute;quence d'arr&ecirc;ts.
+
+h3. Attributs
+
+- Nom := nom de la mission
+- Nom public := nom public pour les voyageurs
+- Num&eacute;ro d'enregistrement := Le num&eacute;ro d'enregistrement est unique. Aucune r&egrave;gle de nommage ne s'applique sur ce num&eacute;ro. Celui-ci doit &ecirc;tre unique sur l'ensemble des missions de la ligne.
+- Commentaire := zone de texte libre
+
+p(attr_data). Donn&eacute;es de gestion :
+
+- Identifiant Neptune :=
+cl&eacute; unique p&eacute;renne identifiant la mission pour les &eacute;changes Neptune
+cet identifiant est compos&eacute; de 3 parties : pr&eacute;fixe:type:id_technique
+* pr&eacute;fixe : cl&eacute; identifiant un producteur de donn&eacute;es unique
+* type = JourneyPattern : cl&eacute; identifiant le type d'objet (valeur impos&eacute;e)
+* id_technique : valeur identifiant un seul object d'un type donn&eacute; pour un m&ecirc;me producteur
+ce champ obligatoire est automatiquement g&eacute;n&eacute;r&eacute; s'il n'est pas renseign&eacute;
+il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera compl&eacute;t&eacute;e automatiquement.
+=:
+- Date de cr&eacute;ation := date &agrave; laquelle l'objet a &eacute;t&eacute; cr&eacute;&eacute; ou modifi&eacute; pour la derni&egrave;re fois
+- Version := version de l'objet (auto incr&eacute;ment&eacute; &agrave; chaque modification)
+- Cr&eacute;&eacute; par := compte utilisateur ayant proc&eacute;d&eacute; &agrave; la derni&egrave;re modification
+
+h3. Impl&eacute;mentation
+
+p. TODO
+
diff --git a/app/views/help/routes.textile b/app/views/help/routes.textile
index 30234c492..e34ccc162 100644
--- a/app/views/help/routes.textile
+++ b/app/views/help/routes.textile
@@ -13,7 +13,7 @@ h3. Attributs
- Nom public := nom public pour les voyageurs
- Commentaire := zone de texte libre sur le r&eacute;seau
- Direction := orientation principale (points cardinaux, circulaire ou aller/retour)
-- Indoce := num&eacute;ro de la s&eacute;quence d'arr&ecirc;ts
+- Indice := num&eacute;ro de la s&eacute;quence d'arr&ecirc;ts
- Sens := aller ou retour
- Itin&eacute;raire associ&eacute; en sens oppos&eacute; := r&eacute;f&eacute;rence de l'itin&eacute;raire de sens oppos&eacute; associ&eacute;
diff --git a/app/views/help/toc.textile b/app/views/help/toc.textile
index e3ed1ba6f..8a0d204f5 100644
--- a/app/views/help/toc.textile
+++ b/app/views/help/toc.textile
@@ -12,7 +12,8 @@ h3. Sommaire
# "Transporteurs":companies
# "Lignes":lines
## "S&eacute;quences d'arr&ecirc;ts":routes
-## Horaires
+## "Missions":journeypatterns
+## "Courses/Horaires":vehiclejourneys
# "Arr&ecirc;ts":stop_areas
## "Correspondances":connection_links
## Acc&egrave;s
@@ -20,6 +21,7 @@ h3. Sommaire
# "Calendriers d'application":timetables
# Outils
## Imports
+## Exports
## Validation
# Divers
## "API Rest":restapis
diff --git a/app/views/help/vehiclejourneys.textile b/app/views/help/vehiclejourneys.textile
new file mode 100644
index 000000000..84547ebe7
--- /dev/null
+++ b/app/views/help/vehiclejourneys.textile
@@ -0,0 +1,37 @@
+---
+layout: default
+title: Courses
+---
+
+h3. D&eacute;finition
+
+Une course d&eacute;crit le d&eacute;placement d'un v&eacute;hicule de transport public sur une s&eacute;quence d'arr&ecirc;ts de la ligne. La course parcourt les arr&ecirc;ts de la s&eacute;quence d'arr&ecirc;ts dans l'ordre, sans n&eacute;cessairement s'arr&ecirc;ter &agrave; chacun des arr&ecirc;ts. A chaque arr&ecirc;t desservi, la course pr&eacute;cise l'horaire de passage.
+De plus, la course est rattach&eacute;e &agrave; un nombre variable de calendriers d'application.
+
+h3. Attributs
+
+- Nom := nom de la course
+- Nom public := nom public pour les voyageurs
+- Commentaire := zone de texte libre
+- Mode de transport := mode de transport pour la course; par d&eacute;faut, c'est le mode de transport de la ligne qui est appliqu&eacute;
+- Particularit&eacute; := champs libre pouvant pr&eacute;ciser des modes de fonctionnement (TAD par exemple)
+
+p(attr_data). Donn&eacute;es de gestion :
+
+- Identifiant Neptune :=
+cl&eacute; unique p&eacute;renne identifiant la course pour les &eacute;changes Neptune
+cet identifiant est compos&eacute; de 3 parties : pr&eacute;fixe:type:id_technique
+* pr&eacute;fixe : cl&eacute; identifiant un producteur de donn&eacute;es unique
+* type = VehicleJourney : cl&eacute; identifiant le type d'objet (valeur impos&eacute;e)
+* id_technique : valeur identifiant un seul object d'un type donn&eacute; pour un m&ecirc;me producteur
+ce champ obligatoire est automatiquement g&eacute;n&eacute;r&eacute; s'il n'est pas renseign&eacute;
+il est possible aussi de ne renseigner que l'identifiant technique auquel cas la valeur sera compl&eacute;t&eacute;e automatiquement.
+=:
+- Date de cr&eacute;ation := date &agrave; laquelle l'objet a &eacute;t&eacute; cr&eacute;&eacute; ou modifi&eacute; pour la derni&egrave;re fois
+- Version := version de l'objet (auto incr&eacute;ment&eacute; &agrave; chaque modification)
+- Cr&eacute;&eacute; par := compte utilisateur ayant proc&eacute;d&eacute; &agrave; la derni&egrave;re modification
+
+h3. Impl&eacute;mentation
+
+p. TODO
+
diff --git a/app/views/referentials/_form.erb b/app/views/referentials/_form.erb
index 34d515c4a..c82649909 100644
--- a/app/views/referentials/_form.erb
+++ b/app/views/referentials/_form.erb
@@ -1,7 +1,17 @@
<%= semantic_form_for @referential do |form| %>
<%= form.inputs do %>
<%= form.input :name %>
- <%= form.input :slug%>
+ <% if @referential.new_record? %>
+ <%= form.input :slug%>
+ <% else %>
+ <li>
+ <label><%= @referential.human_attribute_name("slug") %></label>
+ <%= @referential.slug %>
+ </li>
+ <% end %>
+ <%= form.input :prefix%>
+ <%= form.input :projection_type%>
+ <%= form.input :time_zone%>
<% if @referential.new_record? %>
<%= form.input :resources, :as => :file %>
diff --git a/app/views/referentials/show.html.erb b/app/views/referentials/show.html.erb
index 146e19a67..e72c0ad06 100644
--- a/app/views/referentials/show.html.erb
+++ b/app/views/referentials/show.html.erb
@@ -5,11 +5,24 @@
<label><%= Referential.human_attribute_name("slug") %>: </label>
<%= @referential.slug %>
</p>
+ <p>
+ <label><%= Referential.human_attribute_name("prefix") %>: </label>
+ <%= @referential.prefix %>
+ </p>
+ <p>
+ <label><%= Referential.human_attribute_name("projection_type") %>: </label>
+ <%= @referential.projection_type %>
+ </p>
+ <p>
+ <label><%= Referential.human_attribute_name("time_zone") %>: </label>
+ <%= @referential.time_zone %>
+ </p>
</div>
<% content_for :sidebar do %>
<ul class="actions">
- <li><%= link_to t('referentials.actions.destroy'), referential_path(@referential), :method => :delete, :confirm => t('referentials.actions.destroy_confirm'), :class => "remove" %></li>
+ <li><%= link_to t('referentials.actions.edit'), edit_referential_path(@referential), :class => "edit" %></li>
+ <li><%= link_to t('referentials.actions.destroy'), referential_path(@referential), :method => :delete, :confirm => t('referentials.actions.destroy_confirm'), :class => "remove" %></li>
<br>
</ul>
<% end %>
diff --git a/config/locales/referentials.yml b/config/locales/referentials.yml
index dc0a160ed..7aa60fc1d 100644
--- a/config/locales/referentials.yml
+++ b/config/locales/referentials.yml
@@ -19,6 +19,14 @@ en:
referential:
name: Name
slug: Code
+ prefix: Neptune Object Id prefix
+ projection_type: Alternate projection code (SRID)
+ time_zone: time zone
+ formtastic:
+ hints:
+ referential:
+ slug: only lowercase alphanumerical or underscore characters
+ prefix: only alphanumerical or underscore characters
fr:
referentials:
@@ -41,3 +49,11 @@ fr:
referential:
name: Nom
slug: Code
+ prefix: Préfixe des identifiants Neptune
+ projection_type: Code (SRID) de la seconde projection
+ time_zone: Fuseau horaire
+ formtastic:
+ hints:
+ referential:
+ slug: "caractères autorisés : alphanumériques minuscules et 'souligné'"
+ prefix: "caractères autorisés : alphanumériques et 'souligné'"
diff --git a/db/migrate/20120523123806_add_fields_to_referentials.rb b/db/migrate/20120523123806_add_fields_to_referentials.rb
new file mode 100644
index 000000000..3958ed106
--- /dev/null
+++ b/db/migrate/20120523123806_add_fields_to_referentials.rb
@@ -0,0 +1,7 @@
+class AddFieldsToReferentials < ActiveRecord::Migration
+ def change
+ add_column :referentials, :prefix, :string
+ add_column :referentials, :projection_type, :string
+ add_column :referentials, :time_zone, :string
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index d8532b785..da51bd062 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -269,6 +269,9 @@ ActiveRecord::Schema.define(:version => 20120531091529) do
t.string "slug"
t.datetime "created_at"
t.datetime "updated_at"
+ t.string "prefix"
+ t.string "projection_type"
+ t.string "time_zone"
end
create_table "routes", :force => true do |t|
diff --git a/spec/factories.rb b/spec/factories.rb
index c5c1c0ff0..c36f1c71a 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -3,6 +3,8 @@ FactoryGirl.define do
factory :referential do |f|
f.sequence(:name) { |n| "Test #{n}" }
f.sequence(:slug) { |n| "test_#{n}" }
+ f.sequence(:prefix) { |n| "test_#{n}" }
+ f.time_zone "Europe/Paris"
end
factory :user do |f|
diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb
index 363fe237f..bb6158d4f 100644
--- a/spec/models/referential_spec.rb
+++ b/spec/models/referential_spec.rb
@@ -4,5 +4,7 @@ describe Referential do
it { should validate_presence_of(:name) }
it { should validate_presence_of(:slug) }
+ it { should validate_presence_of(:prefix) }
+ it { should validate_presence_of(:time_zone) }
end \ No newline at end of file