aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/assets/stylesheets/common.css.scss7
-rw-r--r--app/assets/stylesheets/lines.css.scss1
-rw-r--r--app/models/referential.rb65
-rw-r--r--app/views/referentials/_form.erb18
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