- Save polygon from carte on procedure
- Display save polygon from database
This commit is contained in:
parent
047cf952f7
commit
ce6af625d2
7 changed files with 103 additions and 34 deletions
|
@ -1,5 +1,3 @@
|
||||||
//récupération de la position de l'entreprise
|
|
||||||
|
|
||||||
function initCarto() {
|
function initCarto() {
|
||||||
OSM = L.tileLayer("http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", {
|
OSM = L.tileLayer("http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", {
|
||||||
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
||||||
|
@ -13,11 +11,35 @@ function initCarto() {
|
||||||
layers: [OSM]
|
layers: [OSM]
|
||||||
});
|
});
|
||||||
|
|
||||||
freeDraw = new L.FreeDraw({
|
var freeDraw = new L.FreeDraw({
|
||||||
mode: L.FreeDraw.MODES.CREATE
|
mode: L.FreeDraw.MODES.CREATE
|
||||||
});
|
});
|
||||||
|
|
||||||
map.addLayer(freeDraw);
|
map.addLayer(freeDraw);
|
||||||
|
|
||||||
|
$.each($.parseJSON($("#json_latlngs").val()), function(i, val){
|
||||||
|
freeDraw.createPolygon(val);
|
||||||
|
});
|
||||||
|
|
||||||
|
add_event_freeDraw(freeDraw);
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_event_freeDraw(freeDraw){
|
||||||
|
freeDraw.on('markers', function (e){
|
||||||
|
$("#json_latlngs").val(JSON.stringify(e.latLngs));
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#new").on('click', function (e){
|
||||||
|
freeDraw.setMode(L.FreeDraw.MODES.CREATE);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#edit").on('click', function (e){
|
||||||
|
freeDraw.setMode(L.FreeDraw.MODES.EDIT);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#delete").on('click', function (e){
|
||||||
|
freeDraw.setMode(L.FreeDraw.MODES.DELETE);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_position() {
|
function get_position() {
|
||||||
|
@ -33,22 +55,3 @@ function get_position() {
|
||||||
|
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_ref_dossier() {
|
|
||||||
$.post("http://apicarto.coremaps.com/api/v1/datastore", {
|
|
||||||
contentType: "application/json",
|
|
||||||
dataType: 'json',
|
|
||||||
geom: JSON.stringify(window.featureCollection.features[0]),
|
|
||||||
ascyn: false
|
|
||||||
}).done(function (data) {
|
|
||||||
$("#ref_dossier").val(data.reference);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function submit_check_draw(e) {
|
|
||||||
if (window.location.href.indexOf('carte') > -1 && window.featureCollection.features.length == 0) {
|
|
||||||
$("#flash_message").html('<div class="alert alert-danger">Un dessin est obligatoire.</div>');
|
|
||||||
e.preventDefault();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,18 +6,79 @@ table {
|
||||||
font-size: 13;
|
font-size: 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
#map.mode-create {
|
|
||||||
cursor: crosshair;
|
#map section.overlay {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
box-shadow: inset -100px 0 100px -100px rgba(0, 0, 0, .25);
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 2001;
|
||||||
}
|
}
|
||||||
|
|
||||||
svg.tracer {
|
#map.mode-create {
|
||||||
|
cursor: crosshair !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map g path {
|
||||||
|
transition: all 0.25s;
|
||||||
|
stroke-width: 4px;
|
||||||
|
stroke-opacity: 1;
|
||||||
|
stroke: #D7217E;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1001;
|
||||||
|
fill: #D7217E;
|
||||||
|
fill-opacity: .75;
|
||||||
|
-webkit-filter: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map.mode-delete path {
|
||||||
|
cursor: no-drop !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map.mode-delete path:hover {
|
||||||
|
fill: #4d4d4d !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map div.polygon-elbow {
|
||||||
|
-webkit-transition: opacity .25s;
|
||||||
|
box-shadow: 0 0 0 2px white, 0 0 10px rgba(0, 0, 0, .35);
|
||||||
|
border: 5px solid #D7217E;
|
||||||
|
border-radius: 10px;
|
||||||
|
transition: opacity 0.25s;
|
||||||
|
cursor: move;
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 0 !important;
|
||||||
|
height: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map div.polygon-elbow.non-polygon {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
border: 5px solid darkgray;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map.mode-edit div.polygon-elbow {
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
#map svg.tracer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
z-index: 2001;
|
||||||
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
font: 14px/16px Arial, Helvetica, sans-serif;
|
font: 14px/16px Arial, Helvetica, sans-serif;
|
||||||
|
|
|
@ -10,9 +10,9 @@ class Users::CarteController < UsersController
|
||||||
|
|
||||||
def save_ref_api_carto
|
def save_ref_api_carto
|
||||||
dossier = current_user_dossier
|
dossier = current_user_dossier
|
||||||
|
dossier.update_attributes(json_latlngs: params[:json_latlngs])
|
||||||
|
|
||||||
if dossier.draft?
|
if dossier.draft?
|
||||||
#dossier.update_attributes(ref_dossier_carto: params[:ref_dossier])
|
|
||||||
redirect_to url_for(controller: :description, action: :show, dossier_id: params[:dossier_id])
|
redirect_to url_for(controller: :description, action: :show, dossier_id: params[:dossier_id])
|
||||||
else
|
else
|
||||||
commentaire_params = {
|
commentaire_params = {
|
||||||
|
@ -23,7 +23,6 @@ class Users::CarteController < UsersController
|
||||||
commentaire = Commentaire.new commentaire_params
|
commentaire = Commentaire.new commentaire_params
|
||||||
commentaire.save
|
commentaire.save
|
||||||
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params[:dossier_id])
|
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params[:dossier_id])
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
%br
|
%br
|
||||||
|
|
||||||
.content{style:'margin-bottom:60px'}
|
.content{style:'margin-bottom:60px'}
|
||||||
%button.btn.btn-sm.btn-success{type:'button', disabled: 'disabled'} Nouveau
|
%button#new.btn.btn-sm.btn-success{type:'button'} Nouveau
|
||||||
\-
|
\-
|
||||||
%button.btn.btn-sm.btn-info{type:'button', disabled: 'disabled'} Editer
|
%button#edit.btn.btn-sm.btn-info{type:'button'} Editer
|
||||||
\-
|
\-
|
||||||
%button.btn.btn-sm.btn-danger{type:'button', disabled: 'disabled'} Supprimer
|
%button#delete.btn.btn-sm.btn-danger{type:'button'} Supprimer
|
||||||
|
|
||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
= form_tag(url_for({controller: :carte, action: :save_ref_api_carto, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
|
= form_tag(url_for({controller: :carte, action: :save_ref_api_carto, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
|
||||||
%br
|
%br
|
||||||
%input{type: 'hidden', value: '', name: 'ref_dossier', id: 'ref_dossier'}
|
%input{type: 'hidden', value: "#{@dossier.json_latlngs}", name: 'json_latlngs', id: 'json_latlngs'}
|
||||||
|
|
||||||
-if @dossier.draft?
|
-if @dossier.draft?
|
||||||
=render partial: '/layouts/etape_suivante'
|
=render partial: '/layouts/etape_suivante'
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddJsonLatLngsToDossier < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :dossiers, :json_latlngs, :text
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20151110091451) do
|
ActiveRecord::Schema.define(version: 20151112151918) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -66,6 +66,7 @@ ActiveRecord::Schema.define(version: 20151110091451) do
|
||||||
t.datetime "updated_at", default: '2015-09-22 09:25:29'
|
t.datetime "updated_at", default: '2015-09-22 09:25:29'
|
||||||
t.string "state"
|
t.string "state"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
t.text "json_latlngs"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree
|
add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree
|
||||||
|
|
|
@ -22,8 +22,8 @@ describe 'users/carte/show.html.haml', type: :view do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'présence des inputs hidden' do
|
context 'présence des inputs hidden' do
|
||||||
it 'stockage de la référence du dossie de l\'API carto' do
|
it 'stockage du json des polygons dessinés' do
|
||||||
expect(rendered).to have_selector('input[type=hidden][id=ref_dossier][name=ref_dossier]')
|
expect(rendered).to have_selector('input[type=hidden][id=json_latlngs][name=json_latlngs]')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue