diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/assets/stylesheets/common.css.scss | 7 | ||||
| -rw-r--r-- | app/assets/stylesheets/lines.css.scss | 1 | ||||
| -rw-r--r-- | app/models/referential.rb | 65 | ||||
| -rw-r--r-- | app/views/referentials/_form.erb | 18 |
4 files changed, 62 insertions, 29 deletions
diff --git a/app/assets/stylesheets/common.css.scss b/app/assets/stylesheets/common.css.scss index b6d91a318..94da51a76 100644 --- a/app/assets/stylesheets/common.css.scss +++ b/app/assets/stylesheets/common.css.scss @@ -1,5 +1,10 @@ @mixin div_for_object { - margin-bottom: 20px; + margin-bottom: 10px; + background-color: #DEFFA8; + padding-top: 10px; + padding-bottom: 10px; + margin-right: 10px; + padding-left: 10px; .color { width: 64px; diff --git a/app/assets/stylesheets/lines.css.scss b/app/assets/stylesheets/lines.css.scss index f2009c141..160c87c6b 100644 --- a/app/assets/stylesheets/lines.css.scss +++ b/app/assets/stylesheets/lines.css.scss @@ -27,6 +27,7 @@ position: relative; .color { + background-color: white; width: 64px; height: 64px; float: left; diff --git a/app/models/referential.rb b/app/models/referential.rb index fd418a9ab..758e3f9eb 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -1,26 +1,25 @@ # -*- coding: utf-8 -*- class Referential < ActiveRecord::Base - validates_presence_of :name validates_presence_of :slug validates_presence_of :prefix validates_presence_of :time_zone + validates_presence_of :upper_corner + validates_presence_of :lower_corner 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} + validates_format_of :upper_corner, :with => %r{\A[0-9]+\.?[0-9]*\, [0-9]+\.?[0-9]*\Z} + validates_format_of :lower_corner, :with => %r{\A[0-9]+\.?[0-9]*\, [0-9]+\.?[0-9]*\Z} + + attr_accessor :resources + attr_accessor :upper_corner + attr_accessor :lower_corner has_many :imports, :dependent => :destroy has_many :exports, :dependent => :destroy - after_initialize :init_time_zone - - def init_time_zone - if time_zone.nil? - self.time_zone = "Paris" - end - end - def human_attribute_name(*args) self.class.human_attribute_name(*args) end @@ -57,6 +56,7 @@ class Referential < ActiveRecord::Base def define_default_attributes self.time_zone ||= Time.zone.name + self.bounds ||= GeoRuby::SimpleFeatures::Envelope.from_coordinates( [ [-5.2, 42.25], [8.23, 51.1] ] ).to_polygon.as_ewkt # bounds for France by default end def switch @@ -71,30 +71,55 @@ class Referential < ActiveRecord::Base [ "NTF Lambert Zone 2 (27562)", 27562 ], [ "NTF Lambert Zone 3 (27563)", 27563 ], [ "NTF Lambert Zone 4 (27564)", 27564 ], - [ "NTF Lambert 2 étendu (27572)", 27582 ], - ["RGF 93 Lambert 93 (2154)", 2154 ] + [ "NTF Lambert 1 (27571)", 27571 ], + [ "NTF Lambert 2 étendu (27572)", 27572 ], + [ "NTF Lambert 3 (27573)", 27573 ], + [ "NTF Lambert 4 (27574)", 27574 ], + [ "RGF 93 Lambert 93 (2154)", 2154 ] ] end before_create :create_schema - before_destroy :destroy_schema - - after_create :import_resources + def create_schema + Apartment::Database.create slug + end - attr_accessor :resources + before_destroy :destroy_schema + def destroy_schema + Apartment::Database.drop slug + end + after_create :import_resources def import_resources imports.create(:resources => resources) if resources end - def create_schema - Apartment::Database.create slug + before_save :update_envelope + before_create :update_envelope + def update_envelope + self.bounds = GeoRuby::SimpleFeatures::Envelope.from_coordinates([ [@lower_corner.x, @lower_corner.y], [ @upper_corner.x, @upper_corner.y ] ]).to_polygon.as_ewkt() end - def destroy_schema - Apartment::Database.drop slug + def upper_corner + "#{envelope.upper_corner.x}, #{envelope.upper_corner.y}" end - + + def upper_corner=(upper_corner) + @upper_corner = GeoRuby::SimpleFeatures::Point.from_coordinates( upper_corner.split(",") ) + end + + def lower_corner + "#{envelope.lower_corner.x}, #{envelope.lower_corner.y}" + end + + def lower_corner=(lower_corner) + @lower_corner = GeoRuby::SimpleFeatures::Point.from_coordinates( lower_corner.split(",") ) + end + + def envelope + GeoRuby::SimpleFeatures::Geometry.from_ewkt(read_attribute(:bounds)).envelope + end + end Rails.application.config.after_initialize do diff --git a/app/views/referentials/_form.erb b/app/views/referentials/_form.erb index f9beb480e..5b59ad5f8 100644 --- a/app/views/referentials/_form.erb +++ b/app/views/referentials/_form.erb @@ -11,15 +11,17 @@ <% end %> <%= form.input :prefix %> <%= form.input :projection_type, :as => :select, :collection => Referential.available_srids %> - <%= form.input :time_zone %> + <%= form.input :time_zone %> + <%= form.input :upper_corner %> + <%= form.input :lower_corner %> <% if @referential.new_record? %> - <%= form.input :resources, :as => :file %> + <%= form.input :resources, :as => :file %> <% end %> - <% end %> + <% end %> - <%= form.actions do %> - <%= form.action :submit, :as => :button %> - <%= form.action :cancel, :as => :link %> - <% end %> -<% end %> + <%= form.actions do %> + <%= form.action :submit, :as => :button %> + <%= form.action :cancel, :as => :link %> + <% end %> +<% end %>
\ No newline at end of file |
