Merge branch 'develop' into staging

This commit is contained in:
gregoirenovel 2017-04-05 14:43:46 +02:00
commit 9915e3d372
293 changed files with 951 additions and 926 deletions

11
.editorconfig Normal file
View file

@ -0,0 +1,11 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*.{haml,html,js,scss,rake,rb,yml}]
charset = utf-8
indent_size = 2
indent_style = space
trim_trailing_whitespace = true

View file

@ -16,7 +16,7 @@ gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library # Use jquery as the JavaScript library
gem 'jquery-rails' gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks', '~> 2.5' gem 'turbolinks', '~> 5.0'
# bundle exec rake doc:rails generates the API under doc/api. # bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc gem 'sdoc', '~> 0.4.0', group: :doc

View file

@ -95,7 +95,7 @@ GEM
bootstrap-wysihtml5-rails (0.3.3.8) bootstrap-wysihtml5-rails (0.3.3.8)
railties (>= 3.0) railties (>= 3.0)
browser (2.3.0) browser (2.3.0)
builder (3.2.2) builder (3.2.3)
byebug (9.0.6) byebug (9.0.6)
capybara (2.11.0) capybara (2.11.0)
addressable addressable
@ -120,8 +120,8 @@ GEM
coffee-script (2.4.1) coffee-script (2.4.1)
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.11.1) coffee-script-source (1.12.2)
concurrent-ruby (1.0.2) concurrent-ruby (1.0.5)
connection_pool (2.2.1) connection_pool (2.2.1)
crack (0.4.3) crack (0.4.3)
safe_yaml (~> 1.0.0) safe_yaml (~> 1.0.0)
@ -331,7 +331,7 @@ GEM
domain_name (~> 0.5) domain_name (~> 0.5)
http_parser.rb (0.6.0) http_parser.rb (0.6.0)
httpclient (2.8.3) httpclient (2.8.3)
i18n (0.7.0) i18n (0.8.1)
inflecto (0.0.2) inflecto (0.0.2)
ipaddress (0.8.3) ipaddress (0.8.3)
jquery-rails (4.2.1) jquery-rails (4.2.1)
@ -452,9 +452,9 @@ GEM
actionpack (~> 5.x) actionpack (~> 5.x)
actionview (~> 5.x) actionview (~> 5.x)
activesupport (~> 5.x) activesupport (~> 5.x)
rails-dom-testing (2.0.1) rails-dom-testing (2.0.2)
activesupport (>= 4.2.0, < 6.0) activesupport (>= 4.2.0, < 6.0)
nokogiri (~> 1.6.0) nokogiri (~> 1.6)
rails-html-sanitizer (1.0.3) rails-html-sanitizer (1.0.3)
loofah (~> 2.0) loofah (~> 2.0)
railties (5.0.0.1) railties (5.0.0.1)
@ -585,13 +585,14 @@ GEM
libv8 (~> 3.16.14.0) libv8 (~> 3.16.14.0)
ref ref
thor (0.19.4) thor (0.19.4)
thread_safe (0.3.5) thread_safe (0.3.6)
tilt (2.0.5) tilt (2.0.5)
timecop (0.8.1) timecop (0.8.1)
trollop (2.1.2) trollop (2.1.2)
turbolinks (2.5.3) turbolinks (5.0.1)
coffee-rails turbolinks-source (~> 5)
tzinfo (1.2.2) turbolinks-source (5.0.0)
tzinfo (1.2.3)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uglifier (3.0.4) uglifier (3.0.4)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
@ -707,7 +708,7 @@ DEPENDENCIES
sqlite3 sqlite3
therubyracer therubyracer
timecop timecop
turbolinks (~> 2.5) turbolinks (~> 5.0)
uglifier (>= 1.3.0) uglifier (>= 1.3.0)
unicode_utils unicode_utils
unicorn unicorn

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,5 +1,4 @@
$(document).on('page:load', init_action_btn_rules); $(document).on('turbolinks:load', init_action_btn_rules);
$(document).ready(init_action_btn_rules);
function init_action_btn_rules() { function init_action_btn_rules() {
$('.btn-send').click(function () { $('.btn-send').click(function () {

View file

@ -1,22 +1,22 @@
function address_type_init() { function address_type_init() {
display = 'label'; display = 'label';
var bloodhound = new Bloodhound({ var bloodhound = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display),
queryTokenizer: Bloodhound.tokenizers.whitespace, queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: { remote: {
url: '/ban/search?request=%QUERY', url: '/ban/search?request=%QUERY',
wildcard: '%QUERY' wildcard: '%QUERY'
} }
}); });
bloodhound.initialize(); bloodhound.initialize();
$("input[type='address']").typeahead({ $("input[type='address']").typeahead({
minLength: 1 minLength: 1
}, { }, {
display: display, display: display,
source: bloodhound, source: bloodhound,
limit: 5 limit: 5
}); });
} }

View file

@ -1,47 +1,46 @@
$(document).on('page:load', init_admin); $(document).on('turbolinks:load', init_admin);
$(document).ready(init_admin);
function init_admin(){ function init_admin(){
destroy_action(); destroy_action();
on_change_type_de_champ_select(); on_change_type_de_champ_select();
} }
function destroy_action(){ function destroy_action(){
$(".delete").on('click', function(){ $(".delete").on('click', function(){
$(this).hide(); $(this).hide();
$(this).closest('td').find(".confirm").show(); $(this).closest('td').find(".confirm").show();
}); });
$(".cancel").on('click', function(){ $(".cancel").on('click', function(){
$(this).closest('td').find(".delete").show(); $(this).closest('td').find(".delete").show();
$(this).closest('td').find(".confirm").hide(); $(this).closest('td').find(".confirm").hide();
}); });
$("#liste_gestionnaire #libelle").on('click', function(){ $("#liste_gestionnaire #libelle").on('click', function(){
setTimeout(destroy_action, 500); setTimeout(destroy_action, 500);
}); });
} }
function on_change_type_de_champ_select (){ function on_change_type_de_champ_select (){
$("select.form-control.type_champ").on('change', function(e){ $("select.form-control.type_champ").on('change', function(e){
parent = $(this).parent().parent(); parent = $(this).parent().parent();
parent.removeClass('header_section'); parent.removeClass('header_section');
parent.children(".drop_down_list").removeClass('show_inline'); parent.children(".drop_down_list").removeClass('show_inline');
$('.mandatory', parent).show(); $('.mandatory', parent).show();
switch(this.value){ switch(this.value){
case 'header_section': case 'header_section':
parent.addClass('header_section'); parent.addClass('header_section');
break; break;
case 'drop_down_list': case 'drop_down_list':
case 'multiple_drop_down_list': case 'multiple_drop_down_list':
parent.children(".drop_down_list").addClass('show_inline'); parent.children(".drop_down_list").addClass('show_inline');
break; break;
case 'explication': case 'explication':
$('.mandatory', parent).hide(); $('.mandatory', parent).hide();
break; break;
} }
}); });
} }

View file

@ -1,98 +1,97 @@
$(document).on('page:load', init_path_modal); $(document).on('turbolinks:load', init_path_modal);
$(document).ready(init_path_modal);
function init_path_modal() { function init_path_modal() {
path_modal_action(); path_modal_action();
path_validation_action(); path_validation_action();
path_type_init(); path_type_init();
path_validation($("input[id='procedure_path']")); path_validation($("input[id='procedure_path']"));
} }
function path_modal_action() { function path_modal_action() {
$('#publishModal').on('show.bs.modal', function (event) { $('#publishModal').on('show.bs.modal', function (event) {
$("#publishModal .modal-body .table .tr_content").hide(); $("#publishModal .modal-body .table .tr_content").hide();
var button = $(event.relatedTarget) // Button that triggered the modal var button = $(event.relatedTarget) // Button that triggered the modal
var modal_title = button.data('modal_title'); // Extract info from data-* attributes var modal_title = button.data('modal_title'); // Extract info from data-* attributes
var modal_index = button.data('modal_index'); // Extract info from data-* attributes var modal_index = button.data('modal_index'); // Extract info from data-* attributes
var modal = $(this) var modal = $(this)
modal.find('#publishModal_title').html(modal_title); modal.find('#publishModal_title').html(modal_title);
$("#publishModal .modal-body .table #"+modal_index).show(); $("#publishModal .modal-body .table #"+modal_index).show();
}) })
} }
function path_validation_action() { function path_validation_action() {
$("input[id='procedure_path']").keyup(function (key) { $("input[id='procedure_path']").keyup(function (key) {
if (key.keyCode != 13) if (key.keyCode != 13)
path_validation(this); path_validation(this);
}); });
} }
function togglePathMessage(valid, mine) { function togglePathMessage(valid, mine) {
$('#path_messages .message').hide(); $('#path_messages .message').hide();
if (valid === true && mine === true) { if (valid === true && mine === true) {
$('#path_is_mine').show(); $('#path_is_mine').show();
} else if (valid === true && mine === false) { } else if (valid === true && mine === false) {
$('#path_is_not_mine').show(); $('#path_is_not_mine').show();
} else if (valid === false && mine === null) { } else if (valid === false && mine === null) {
$('#path_is_invalid').show(); $('#path_is_invalid').show();
} }
if ((valid && mine === null) || mine === true) if ((valid && mine === null) || mine === true)
$('#publishModal #publish').removeAttr('disabled') $('#publishModal #publish').removeAttr('disabled')
else else
$('#publishModal #publish').attr('disabled', 'disabled') $('#publishModal #publish').attr('disabled', 'disabled')
} }
function path_validation(el) { function path_validation(el) {
var valid = validatePath($(el).val()); var valid = validatePath($(el).val());
toggleErrorClass(el, valid); toggleErrorClass(el, valid);
togglePathMessage(valid, null); togglePathMessage(valid, null);
} }
function validatePath(path) { function validatePath(path) {
var re = /^[a-z0-9_]{3,30}$/; var re = /^[a-z0-9_]{3,30}$/;
return re.test(path); return re.test(path);
} }
function path_type_init() { function path_type_init() {
display = 'label'; display = 'label';
var bloodhound = new Bloodhound({ var bloodhound = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display),
queryTokenizer: Bloodhound.tokenizers.whitespace, queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: { remote: {
url: '/admin/procedures/path_list?request=%QUERY', url: '/admin/procedures/path_list?request=%QUERY',
wildcard: '%QUERY' wildcard: '%QUERY'
} }
}); });
bloodhound.initialize(); bloodhound.initialize();
$("#procedure_path").typeahead({ $("#procedure_path").typeahead({
minLength: 1 minLength: 1
}, { }, {
display: display, display: display,
source: bloodhound, source: bloodhound,
templates: { templates: {
empty: 'Ce lien est disponible !', empty: 'Ce lien est disponible !',
suggestion: Handlebars.compile("<div class='path_mine_{{mine}}'>{{label}}</div>") suggestion: Handlebars.compile("<div class='path_mine_{{mine}}'>{{label}}</div>")
}, },
limit: 5 limit: 5
}); });
$('#procedure_path').bind('typeahead:select', function(ev, suggestion) { $('#procedure_path').bind('typeahead:select', function(ev, suggestion) {
togglePathMessage(true, suggestion['mine']); togglePathMessage(true, suggestion['mine']);
}); });
} }
function transfer_errors_message(show) { function transfer_errors_message(show) {
if(show){ if(show){
$("#not_found_admin").slideDown(100) $("#not_found_admin").slideDown(100)
} }
else { else {
$("#not_found_admin").slideUp(100) $("#not_found_admin").slideUp(100)
} }
} }

View file

@ -33,26 +33,24 @@
//= require typeahead.bundle //= require typeahead.bundle
//= require select2 //= require select2
$(document).on('page:load', application_init); $(document).on('turbolinks:load', application_init);
$(document).ready(application_init);
function application_init(){ function application_init(){
tooltip_init(); tooltip_init();
scroll_to(); scroll_to();
} }
function tooltip_init() { function tooltip_init() {
$('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }}); $('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }});
$('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }});
} }
function scroll_to() { function scroll_to() {
$('.js-scrollTo').on('click', function () { // Au clic sur un élément $('.js-scrollTo').on('click', function () { // Au clic sur un élément
var page = $(this).attr('cible'); // Page cible var page = $(this).attr('cible'); // Page cible
var speed = 600; // Durée de l'animation (en ms) var speed = 600; // Durée de l'animation (en ms)
$('html, body').animate({scrollTop: $(page).offset().top - 200}, speed); // Go $('html, body').animate({scrollTop: $(page).offset().top - 200}, speed); // Go
return false; return false;
}); });
} }

View file

@ -1,14 +1,13 @@
$(document).on('page:load', buttons_archived); $(document).on('turbolinks:load', buttons_archived);
$(document).ready(buttons_archived);
function buttons_archived(){ function buttons_archived(){
$("button#archive").on('click', function(){ $("button#archive").on('click', function(){
$("button#archive").hide(); $("button#archive").hide();
$("#confirm").show(); $("#confirm").show();
}); });
$("#confirm #cancel").on('click', function(){ $("#confirm #cancel").on('click', function(){
$("button#archive").show(); $("button#archive").show();
$("#confirm").hide(); $("#confirm").hide();
}); });
} }

View file

@ -1,8 +1,7 @@
$(document).ready(wysihtml5_active); $(document).on('turbolinks:load', wysihtml5_active);
$(document).on('page:load', wysihtml5_active);
function wysihtml5_active (){ function wysihtml5_active (){
$('.wysihtml5').each(function(i, elem) { $('.wysihtml5').each(function(i, elem) {
$(elem).wysihtml5({ toolbar:{ "fa": true, "link": false, "color": false }, "locale": "fr-FR" }); $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false, "color": false }, "locale": "fr-FR" });
}); });
} }

View file

@ -6,8 +6,8 @@
//= require_tree ./channels //= require_tree ./channels
//(function() { //(function() {
// this.App || (this.App = {}); // this.App || (this.App = {});
// //
// App.cable = ActionCable.createConsumer(); // App.cable = ActionCable.createConsumer();
// //
//}).call(this); //}).call(this);

View file

@ -1,60 +1,60 @@
function cadastre_active() { function cadastre_active() {
return $("#map.cadastre").length > 0 return $("#map.cadastre").length > 0
} }
function get_cadastre(coordinates) { function get_cadastre(coordinates) {
if (!cadastre_active()) if (!cadastre_active())
return; return;
var cadastre; var cadastre;
$.ajax({ $.ajax({
method: 'post', method: 'post',
url: '/users/dossiers/' + dossier_id + '/carte/cadastre', url: '/users/dossiers/' + dossier_id + '/carte/cadastre',
data: {coordinates: JSON.stringify(coordinates)}, data: {coordinates: JSON.stringify(coordinates)},
dataType: 'json', dataType: 'json',
async: false async: false
}).done(function (data) { }).done(function (data) {
cadastre = data cadastre = data
}); });
return cadastre['cadastres']; return cadastre['cadastres'];
} }
function display_cadastre(cadastre_array) { function display_cadastre(cadastre_array) {
if (!cadastre_active()) if (!cadastre_active())
return; return;
$("#cadastre.list ul").html(''); $("#cadastre.list ul").html('');
new_cadastreLayer(); new_cadastreLayer();
if (cadastre_array.length == 1 && cadastre_array[0]['zoom_error']) if (cadastre_array.length == 1 && cadastre_array[0]['zoom_error'])
$("#cadastre.list ul").html('<li><b>Merci de dessiner une surface plus petite afin de récupérer les parcelles cadastrales.</b></li>'); $("#cadastre.list ul").html('<li><b>Merci de dessiner une surface plus petite afin de récupérer les parcelles cadastrales.</b></li>');
else if (cadastre_array.length > 0) { else if (cadastre_array.length > 0) {
cadastre_array.forEach(function (cadastre) { cadastre_array.forEach(function (cadastre) {
$("#cadastre.list ul").append('<li> Parcelle n°' + cadastre.numero + ' - Feuille ' + cadastre.code_arr + ' ' + cadastre.section + ' ' + cadastre.feuille+ '</li>'); $("#cadastre.list ul").append('<li> Parcelle n°' + cadastre.numero + ' - Feuille ' + cadastre.code_arr + ' ' + cadastre.section + ' ' + cadastre.feuille+ '</li>');
cadastreItems.addData(cadastre.geometry); cadastreItems.addData(cadastre.geometry);
}); });
cadastreItems.setStyle({ cadastreItems.setStyle({
fillColor: '#8a6d3b', fillColor: '#8a6d3b',
weight: 2, weight: 2,
opacity: 0.3, opacity: 0.3,
color: 'white', color: 'white',
dashArray: '3', dashArray: '3',
fillOpacity: 0.7 fillOpacity: 0.7
}) })
} }
else else
$("#cadastre.list ul").html('<li>AUCUN</li>'); $("#cadastre.list ul").html('<li>AUCUN</li>');
} }
function new_cadastreLayer() { function new_cadastreLayer() {
if (typeof cadastreItems != 'undefined') if (typeof cadastreItems != 'undefined')
map.removeLayer(cadastreItems); map.removeLayer(cadastreItems);
cadastreItems = new L.GeoJSON(); cadastreItems = new L.GeoJSON();
cadastreItems.addTo(map); cadastreItems.addTo(map);
} }

View file

@ -2,162 +2,162 @@ var LON = '2.428462';
var LAT = '46.538192'; var LAT = '46.538192';
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: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
});
position = get_position() || default_gestionnaire_position();
map = L.map("map", {
center: new L.LatLng(position.lat, position.lon),
zoom: position.zoom,
layers: [OSM],
scrollWheelZoom: false
});
icon = L.icon({
iconUrl: '/assets/marker-icon.png',
//shadowUrl: 'leaf-shadow.png',
iconSize: [34.48, 40], // size of the icon
//shadowSize: [50, 64], // size of the shadow
iconAnchor: [20, 20] // point of the icon which will correspond to marker's location
//shadowAnchor: [4, 62], // the same for the shadow
//popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
if (qp_active())
display_qp(JSON.parse($("#quartier_prioritaires").val()));
if (cadastre_active())
display_cadastre(JSON.parse($("#cadastres").val()));
freeDraw = new L.FreeDraw();
freeDraw.options.setSmoothFactor(4);
freeDraw.options.simplifyPolygon = false;
map.addLayer(freeDraw);
if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') {
map.setZoom(18);
$.each($.parseJSON($("#json_latlngs").val()), function (i, val) {
freeDraw.createPolygon(val);
}); });
position = get_position() || default_gestionnaire_position(); map.fitBounds(freeDraw.polygons[0].getBounds());
}
else if (position.lat == LAT && position.lon == LON)
map.setView(new L.LatLng(position.lat, position.lon), position.zoom);
map = L.map("map", { add_event_freeDraw();
center: new L.LatLng(position.lat, position.lon), add_event_search_address();
zoom: position.zoom,
layers: [OSM],
scrollWheelZoom: false
});
icon = L.icon({
iconUrl: '/assets/marker-icon.png',
//shadowUrl: 'leaf-shadow.png',
iconSize: [34.48, 40], // size of the icon
//shadowSize: [50, 64], // size of the shadow
iconAnchor: [20, 20] // point of the icon which will correspond to marker's location
//shadowAnchor: [4, 62], // the same for the shadow
//popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
});
if (qp_active())
display_qp(JSON.parse($("#quartier_prioritaires").val()));
if (cadastre_active())
display_cadastre(JSON.parse($("#cadastres").val()));
freeDraw = new L.FreeDraw();
freeDraw.options.setSmoothFactor(4);
freeDraw.options.simplifyPolygon = false;
map.addLayer(freeDraw);
if ($("#json_latlngs").val() != '' && $("#json_latlngs").val() != '[]') {
map.setZoom(18);
$.each($.parseJSON($("#json_latlngs").val()), function (i, val) {
freeDraw.createPolygon(val);
});
map.fitBounds(freeDraw.polygons[0].getBounds());
}
else if (position.lat == LAT && position.lon == LON)
map.setView(new L.LatLng(position.lat, position.lon), position.zoom);
add_event_freeDraw();
add_event_search_address();
} }
function default_gestionnaire_position() { function default_gestionnaire_position() {
return {lon: LON, lat: LAT, zoom: 5} return {lon: LON, lat: LAT, zoom: 5}
} }
function get_external_data(latLngs) { function get_external_data(latLngs) {
if (qp_active()) if (qp_active())
display_qp(get_qp(latLngs)); display_qp(get_qp(latLngs));
if (cadastre_active()) { if (cadastre_active()) {
polygons = {"type": "FeatureCollection", "features": []}; polygons = {"type": "FeatureCollection", "features": []};
for (i = 0; i < latLngs.length; i++) for (i = 0; i < latLngs.length; i++)
polygons.features.push(feature_polygon_latLngs(latLngs[i])) polygons.features.push(feature_polygon_latLngs(latLngs[i]))
cadastre_list = [{zoom_error: true}]; cadastre_list = [{zoom_error: true}];
if (turf_area(polygons) < 300000) if (turf_area(polygons) < 300000)
cadastre_list = get_cadastre(latLngs); cadastre_list = get_cadastre(latLngs);
display_cadastre(cadastre_list); display_cadastre(cadastre_list);
} }
} }
function feature_polygon_latLngs(coordinates) { function feature_polygon_latLngs(coordinates) {
return ({ return ({
"type": "Feature", "type": "Feature",
"properties": {}, "properties": {},
"geometry": { "geometry": {
"type": "Polygon", "type": "Polygon",
"coordinates": [ "coordinates": [
JSON.parse(L.FreeDraw.Utilities.getJsonPolygons([coordinates]))['latLngs'] JSON.parse(L.FreeDraw.Utilities.getJsonPolygons([coordinates]))['latLngs']
] ]
} }
}) })
} }
function add_event_freeDraw() { function add_event_freeDraw() {
freeDraw.on('markers', function (e) { freeDraw.on('markers', function (e) {
$("#json_latlngs").val(JSON.stringify(e.latLngs)); $("#json_latlngs").val(JSON.stringify(e.latLngs));
add_event_edit(); add_event_edit();
get_external_data(e.latLngs); get_external_data(e.latLngs);
}); });
$("#map").on('click', function(){ $("#map").on('click', function(){
freeDraw.setMode(L.FreeDraw.MODES.VIEW); freeDraw.setMode(L.FreeDraw.MODES.VIEW);
}); });
$("#new").on('click', function (e) { $("#new").on('click', function (e) {
freeDraw.setMode(L.FreeDraw.MODES.CREATE); freeDraw.setMode(L.FreeDraw.MODES.CREATE);
}); });
$("#delete").on('click', function (e) { $("#delete").on('click', function (e) {
freeDraw.setMode(L.FreeDraw.MODES.DELETE); freeDraw.setMode(L.FreeDraw.MODES.DELETE);
}); });
} }
function add_event_edit (){ function add_event_edit (){
$(".leaflet-container g path").on('click', function (e) { $(".leaflet-container g path").on('click', function (e) {
setTimeout(function(){freeDraw.setMode(L.FreeDraw.MODES.EDIT | L.FreeDraw.MODES.DELETE)}, 50); setTimeout(function(){freeDraw.setMode(L.FreeDraw.MODES.EDIT | L.FreeDraw.MODES.DELETE)}, 50);
}); });
} }
function get_position() { function get_position() {
var position; var position;
$.ajax({ $.ajax({
url: '/users/dossiers/' + dossier_id + '/carte/position', url: '/users/dossiers/' + dossier_id + '/carte/position',
dataType: 'json', dataType: 'json',
async: false async: false
}).done(function (data) { }).done(function (data) {
position = data position = data
}); });
return position; return position;
} }
function get_address_point(request) { function get_address_point(request) {
$.ajax({ $.ajax({
url: '/ban/address_point?request=' + request, url: '/ban/address_point?request=' + request,
dataType: 'json', dataType: 'json',
async: true async: true
}).done(function (data) { }).done(function (data) {
if (data.lat != null) { if (data.lat != null) {
map.setView(new L.LatLng(data.lat, data.lon), data.zoom); map.setView(new L.LatLng(data.lat, data.lon), data.zoom);
//L.marker([data.lat, data.lon], {icon: icon}).addTo(map); //L.marker([data.lat, data.lon], {icon: icon}).addTo(map);
} }
}); });
} }
function jsObject_to_array(qp_list) { function jsObject_to_array(qp_list) {
return Object.keys(qp_list).map(function (v) { return Object.keys(qp_list).map(function (v) {
return qp_list[v]; return qp_list[v];
}); });
} }
function add_event_search_address() { function add_event_search_address() {
$("#search_by_address input[type='address']").bind('typeahead:select', function (ev, seggestion) { $("#search_by_address input[type='address']").bind('typeahead:select', function (ev, seggestion) {
get_address_point(seggestion['label']); get_address_point(seggestion['label']);
}); });
$("#search_by_address input[type='address']").keypress(function (e) { $("#search_by_address input[type='address']").keypress(function (e) {
if (e.keyCode == 13) if (e.keyCode == 13)
get_address_point($(this).val()); get_address_point($(this).val());
}); });
} }

View file

@ -1,60 +1,60 @@
function qp_active() { function qp_active() {
return $("#map.qp").length > 0 return $("#map.qp").length > 0
} }
function get_qp(coordinates) { function get_qp(coordinates) {
if (!qp_active()) if (!qp_active())
return; return;
var qp; var qp;
$.ajax({ $.ajax({
method: 'post', method: 'post',
url: '/users/dossiers/' + dossier_id + '/carte/qp', url: '/users/dossiers/' + dossier_id + '/carte/qp',
data: {coordinates: JSON.stringify(coordinates)}, data: {coordinates: JSON.stringify(coordinates)},
dataType: 'json', dataType: 'json',
async: false async: false
}).done(function (data) { }).done(function (data) {
qp = data qp = data
}); });
return qp['quartier_prioritaires']; return qp['quartier_prioritaires'];
} }
function display_qp(qp_list) { function display_qp(qp_list) {
if (!qp_active()) if (!qp_active())
return; return;
qp_array = jsObject_to_array(qp_list); qp_array = jsObject_to_array(qp_list);
$("#qp.list ul").html(''); $("#qp.list ul").html('');
new_qpLayer(); new_qpLayer();
if (qp_array.length > 0) { if (qp_array.length > 0) {
qp_array.forEach(function (qp) { qp_array.forEach(function (qp) {
$("#qp.list ul").append('<li>' + qp.commune + ' : ' + qp.nom + '</li>'); $("#qp.list ul").append('<li>' + qp.commune + ' : ' + qp.nom + '</li>');
qpItems.addData(qp.geometry); qpItems.addData(qp.geometry);
}); });
qpItems.setStyle({ qpItems.setStyle({
fillColor: '#31708f', fillColor: '#31708f',
weight: 2, weight: 2,
opacity: 0.3, opacity: 0.3,
color: 'white', color: 'white',
dashArray: '3', dashArray: '3',
fillOpacity: 0.7 fillOpacity: 0.7
}) })
} }
else else
$("#qp.list ul").html('<li>AUCUN</li>'); $("#qp.list ul").html('<li>AUCUN</li>');
} }
function new_qpLayer() { function new_qpLayer() {
if (typeof qpItems != 'undefined') if (typeof qpItems != 'undefined')
map.removeLayer(qpItems); map.removeLayer(qpItems);
qpItems = new L.GeoJSON(); qpItems = new L.GeoJSON();
qpItems.addTo(map); qpItems.addTo(map);
} }

View file

@ -1,9 +1,8 @@
$(document).on('page:load', buttons_anchor); $(document).on('turbolinks:load', buttons_anchor);
$(document).ready(buttons_anchor);
function buttons_anchor(){ function buttons_anchor(){
$("#cgu_menu_block").on('click', 'a', function(){ $("#cgu_menu_block").on('click', 'a', function(){
event.preventDefault(); event.preventDefault();
$('html,body').animate({scrollTop:$(this.hash).offset().top-80}, 500); $('html,body').animate({scrollTop:$(this.hash).offset().top-80}, 500);
}); });
} }

View file

@ -1,23 +1,23 @@
//App.messages = App.cable.subscriptions.create('NotificationsChannel', { //App.messages = App.cable.subscriptions.create('NotificationsChannel', {
// received: function (data) { // received: function (data) {
// if (window.location.href.indexOf('backoffice') !== -1) { // if (window.location.href.indexOf('backoffice') !== -1) {
// $("#notification_alert").html(data['message']); // $("#notification_alert").html(data['message']);
// //
// slideIn_notification_alert(); // slideIn_notification_alert();
// }
// } // }
// }
//}); //});
function slideIn_notification_alert (){ function slideIn_notification_alert (){
$("#notification_alert").animate({ $("#notification_alert").animate({
right: '20px' right: '20px'
}, 250); }, 250);
setTimeout(slideOut_notification_alert, 3500); setTimeout(slideOut_notification_alert, 3500);
} }
function slideOut_notification_alert (){ function slideOut_notification_alert (){
$("#notification_alert").animate({ $("#notification_alert").animate({
right: '-250px' right: '-250px'
}, 200); }, 200);
} }

View file

@ -1,34 +1,33 @@
$(document).on('page:load', init_default_data_block); $(document).on('turbolinks:load', init_default_data_block);
$(document).ready(init_default_data_block);
function init_default_data_block() { function init_default_data_block() {
$('.default_data_block #dossier .body').toggle(); $('.default_data_block #dossier .body').toggle();
$('.default_data_block #dossier .carret-right').toggle(); $('.default_data_block #dossier .carret-right').toggle();
$('.default_data_block #dossier .carret-down').toggle(); $('.default_data_block #dossier .carret-down').toggle();
$('.default_data_block .title').click(function () { $('.default_data_block .title').click(function () {
toggle_default_data_bloc(this, 400); toggle_default_data_bloc(this, 400);
}); });
$('.new-action').click(function () { $('.new-action').click(function () {
var messages_block = $(this).parents().closest('.default_data_block').find('.title') var messages_block = $(this).parents().closest('.default_data_block').find('.title')
toggle_default_data_bloc(messages_block, 400); toggle_default_data_bloc(messages_block, 400);
}); });
$('.default_data_block.default_visible').each(function() { $('.default_data_block.default_visible').each(function() {
toggle_default_data_bloc($(this).find('.title'), 0); toggle_default_data_bloc($(this).find('.title'), 0);
}); });
function toggle_default_data_bloc(element, duration) { function toggle_default_data_bloc(element, duration) {
var block = $(element).parents('.show-block'); var block = $(element).parents('.show-block');
if (block.attr('id') == 'messages') { if (block.attr('id') == 'messages') {
block.children('.last-commentaire').toggle(); block.children('.last-commentaire').toggle();
$(".commentaires").animate({ scrollTop: $(this).height() }, "slow"); $(".commentaires").animate({ scrollTop: $(this).height() }, "slow");
}
block.children('.body').slideToggle(duration);
block.find('.carret-right').toggle();
block.find('.carret-down').toggle();
} }
block.children('.body').slideToggle(duration);
block.find('.carret-right').toggle();
block.find('.carret-down').toggle();
}
} }

View file

@ -1,48 +1,47 @@
$(document).on('page:load', action_type_de_champs); $(document).on('turbolinks:load', action_type_de_champs);
$(document).ready(action_type_de_champs);
function action_type_de_champs() { function action_type_de_champs() {
$("input[type='email']").on('change', function () { $("input[type='email']").on('change', function () {
toggleErrorClass(this, validateEmail($(this).val())); toggleErrorClass(this, validateEmail($(this).val()));
}); });
$("input[type='number']").on('change', function () { $("input[type='number']").on('change', function () {
toggleErrorClass(this, validateNumber($(this).val())); toggleErrorClass(this, validateNumber($(this).val()));
}); });
$("input[type='phone']").on('change', function () { $("input[type='phone']").on('change', function () {
val = $(this).val(); val = $(this).val();
val = val.replace(/[ ]/g, ''); val = val.replace(/[ ]/g, '');
toggleErrorClass(this, validatePhone(val)); toggleErrorClass(this, validatePhone(val));
}); });
address_type_init(); address_type_init();
} }
function toggleErrorClass(node, boolean) { function toggleErrorClass(node, boolean) {
if (boolean) if (boolean)
$(node).removeClass('input-error'); $(node).removeClass('input-error');
else else
$(node).addClass('input-error'); $(node).addClass('input-error');
} }
function validatePhone(phone) { function validatePhone(phone) {
var re = /^(0|(\+[1-9]{2})|(00[1-9]{2}))[1-9][0-9]{8}$/; var re = /^(0|(\+[1-9]{2})|(00[1-9]{2}))[1-9][0-9]{8}$/;
return validateInput(phone, re) return validateInput(phone, re)
} }
function validateEmail(email) { function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return validateInput(email, re) return validateInput(email, re)
} }
function validateNumber(number) { function validateNumber(number) {
var re = /^[0-9]+$/; var re = /^[0-9]+$/;
return validateInput(number, re) return validateInput(number, re)
} }
function validateInput(input, regex) { function validateInput(input, regex) {
return regex.test(input); return regex.test(input);
} }

View file

@ -1,16 +1,15 @@
$(document).on('page:load', init_modal_commentaire); $(document).on('turbolinks:load', init_modal_commentaire);
$(document).ready(init_modal_commentaire);
function init_modal_commentaire() { function init_modal_commentaire() {
var modal = $("#modalCommentairesDossierParChamp"); var modal = $("#modalCommentairesDossierParChamp");
var body = modal.find(".modal-body"); var body = modal.find(".modal-body");
var originalBody = body.html(); var originalBody = body.html();
modal.on("show.bs.modal", function (e) { modal.on("show.bs.modal", function (e) {
body.load(e.relatedTarget.getAttribute("data-href")); body.load(e.relatedTarget.getAttribute("data-href"));
}); });
$("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) { $("#modalCommentairesDossierParChamp").on("hidden.bs.modal", function (e) {
body.html(originalBody); body.html(originalBody);
}); });
} }

View file

@ -1,7 +1,5 @@
$(document).on('page:load', the_terms); $(document).on('turbolinks:load', the_terms);
$(document).ready(the_terms); $(document).on('turbolinks:load', pannel_switch);
$(document).on('page:load', pannel_switch);
$(document).ready(pannel_switch);
function pannel_switch() { function pannel_switch() {
$('#switch-notifications').click(function () { $('#switch-notifications').click(function () {
@ -19,43 +17,43 @@ function pannel_switch() {
} }
function the_terms() { function the_terms() {
var the_terms = $("#dossier_autorisation_donnees"); var the_terms = $("#dossier_autorisation_donnees");
if (the_terms.size() == 0) if (the_terms.size() == 0)
return; return;
check_value(the_terms);
the_terms.click(function () {
check_value(the_terms); check_value(the_terms);
});
the_terms.click(function () { function check_value(the_terms) {
check_value(the_terms); if (the_terms.is(":checked")) {
}); $("#etape_suivante").removeAttr("disabled");
} else {
function check_value(the_terms) { $("#etape_suivante").attr("disabled", "disabled");
if (the_terms.is(":checked")) {
$("#etape_suivante").removeAttr("disabled");
} else {
$("#etape_suivante").attr("disabled", "disabled");
}
} }
}
} }
function error_form_siret(invalid_siret) { function error_form_siret(invalid_siret) {
setTimeout(function () { setTimeout(function () {
$("input[type='submit']").val('Erreur SIRET'); $("input[type='submit']").val('Erreur SIRET');
}, 10); }, 10);
$("input[type='submit']").removeClass('btn-success').addClass('btn-danger'); $("input[type='submit']").removeClass('btn-success').addClass('btn-danger');
$("#dossier_siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret); $("#dossier_siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret);
} }
function reset_form_siret() { function reset_form_siret() {
$("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider'); $("input[type='submit']").removeClass('btn-danger').addClass('btn-success').val('Valider');
$("#dossier_siret").removeClass('input-error'); $("#dossier_siret").removeClass('input-error');
} }
function toggle_etape_1() { function toggle_etape_1() {
$('.row.etape.etape_1 .etapes_menu #logos').toggle(100); $('.row.etape.etape_1 .etapes_menu #logos').toggle(100);
$('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100); $('.row.etape.etape_1 .etapes_informations #description_procedure').toggle(100);
} }

View file

@ -1,45 +1,44 @@
$(document).on('page:load', filters_init); $(document).on('turbolinks:load', filters_init);
$(document).ready(filters_init);
function filters_init() { function filters_init() {
$('html').click(function(event) { $('html').click(function(event) {
var visible_filter = $('.filter_framed:visible') var visible_filter = $('.filter_framed:visible')
if(visible_filter.length) { if(visible_filter.length) {
if (!$(event.target).closest('.filter_framed').is(":visible")) { if (!$(event.target).closest('.filter_framed').is(":visible")) {
visible_filter.hide(); visible_filter.hide();
} }
} }
}); });
$(".filter").on('click', function (event) { $(".filter").on('click', function (event) {
filter_framed_show(event); filter_framed_show(event);
filter_framed_close_all_excepted(framed_id(event)); filter_framed_close_all_excepted(framed_id(event));
event.stopPropagation(); event.stopPropagation();
}); });
$(".erase-filter").on('click', function (event) { $(".erase-filter").on('click', function (event) {
$(this).parent().find(".filter_input").val(""); $(this).parent().find(".filter_input").val("");
}); });
} }
function filter_framed_close_all_excepted(id) { function filter_framed_close_all_excepted(id) {
$(".filter_framed:not("+id+")").hide(); $(".filter_framed:not("+id+")").hide();
$(id).toggle(); $(id).toggle();
} }
function framed_id(event) { function framed_id(event) {
return "#framed_" + event.target.id return "#framed_" + event.target.id
} }
function filter_framed_show(event) { function filter_framed_show(event) {
dom_object = $(framed_id(event)); dom_object = $(framed_id(event));
var offset = $('#main-container').offset(); var offset = $('#main-container').offset();
var y = event.pageY - offset.top; var y = event.pageY - offset.top;
var x = event.pageX - offset.left; var x = event.pageX - offset.left;
dom_object.css('top', (y + 7) + 'px'); dom_object.css('top', (y + 7) + 'px');
dom_object.css('left', (x + 7) + 'px'); dom_object.css('left', (x + 7) + 'px');
} }

View file

@ -1,5 +1,4 @@
$(document).on('page:load', link_init); $(document).on('turbolinks:load', link_init);
$(document).ready(link_init);
function link_init() { function link_init() {
$('#dossiers_list tr').on('click', function () { $('#dossiers_list tr').on('click', function () {

View file

@ -1,7 +1,5 @@
$(document).on('page:load', franceconnect_kit); $(document).on('turbolinks:load', franceconnect_kit);
$(document).ready(franceconnect_kit);
function franceconnect_kit() { function franceconnect_kit() {
franceConnectKit.init() franceConnectKit.init()
} }

View file

@ -1,16 +1,15 @@
$(document).on('page:load', modal_action); $(document).on('turbolinks:load', modal_action);
$(document).ready(modal_action);
function modal_action() { function modal_action() {
$('#PJmodal').on('show.bs.modal', function (event) { $('#PJmodal').on('show.bs.modal', function (event) {
$("#PJmodal .modal-body .table .tr_content").hide(); $("#PJmodal .modal-body .table .tr_content").hide();
var button = $(event.relatedTarget) // Button that triggered the modal var button = $(event.relatedTarget) // Button that triggered the modal
var modal_title = button.data('modal_title'); // Extract info from data-* attributes var modal_title = button.data('modal_title'); // Extract info from data-* attributes
var modal_index = button.data('modal_index'); // Extract info from data-* attributes var modal_index = button.data('modal_index'); // Extract info from data-* attributes
var modal = $(this) var modal = $(this)
modal.find('#PJmodal_title').html(modal_title); modal.find('#PJmodal_title').html(modal_title);
$("#PJmodal .modal-body .table #"+modal_index).show(); $("#PJmodal .modal-body .table #"+modal_index).show();
}) })
} }

View file

@ -1,33 +1,32 @@
$(document).on('page:load', pref_list_dossier_actions); $(document).on('turbolinks:load', pref_list_dossier_actions);
$(document).ready(pref_list_dossier_actions);
function pref_list_dossier_actions() { function pref_list_dossier_actions() {
pref_list_dossier_open_action(); pref_list_dossier_open_action();
pref_list_dossier_close_action(); pref_list_dossier_close_action();
} }
function pref_list_dossier_open_action() { function pref_list_dossier_open_action() {
$("#pref_list_dossier_open_action").on('click', function () { $("#pref_list_dossier_open_action").on('click', function () {
$("#pref_list_menu").css('display', 'block'); $("#pref_list_menu").css('display', 'block');
$("#pref_list_menu").css('visibility', 'visible'); $("#pref_list_menu").css('visibility', 'visible');
$("#pref_list_menu").animate({ $("#pref_list_menu").animate({
right: 0 right: 0
}, 250); }, 250);
}); });
} }
function pref_list_dossier_close_action() { function pref_list_dossier_close_action() {
$("#pref_list_dossier_close_action").on('click', function () { $("#pref_list_dossier_close_action").on('click', function () {
$("#pref_list_menu").animate({ $("#pref_list_menu").animate({
right: parseInt($("#pref_list_menu").css('width'), 10)*(-1)+'px' right: parseInt($("#pref_list_menu").css('width'), 10)*(-1)+'px'
},{ },{
duration: 250, duration: 250,
complete: function () { complete: function () {
$("#pref_list_menu").css('display', 'none'); $("#pref_list_menu").css('display', 'none');
$("#pref_list_menu").css('visibility', 'hidden'); $("#pref_list_menu").css('visibility', 'hidden');
} }
} }
) )
}); });
} }

View file

@ -1,38 +1,37 @@
$(document).on('page:load', button_edit_procedure_init); $(document).on('turbolinks:load', button_edit_procedure_init);
$(document).ready(button_edit_procedure_init);
function button_edit_procedure_init(){ function button_edit_procedure_init(){
buttons_api_carto(); buttons_api_carto();
button_cerfa(); button_cerfa();
button_individual(); button_individual();
} }
function buttons_api_carto () { function buttons_api_carto () {
$("#procedure_module_api_carto_use_api_carto").on('change', function() { $("#procedure_module_api_carto_use_api_carto").on('change', function() {
$("#modules_api_carto").toggle() $("#modules_api_carto").toggle()
}); });
if ($('#procedure_module_api_carto_use_api_carto').is(':checked')) if ($('#procedure_module_api_carto_use_api_carto').is(':checked'))
$("#modules_api_carto").show(); $("#modules_api_carto").show();
} }
function button_cerfa () { function button_cerfa () {
$("#procedure_cerfa_flag").on('change', function() { $("#procedure_cerfa_flag").on('change', function() {
$("#procedure_lien_demarche").toggle() $("#procedure_lien_demarche").toggle()
}); });
if ($('#procedure_cerfa_flag').is(':checked')) if ($('#procedure_cerfa_flag').is(':checked'))
$("#procedure_lien_demarche").show(); $("#procedure_lien_demarche").show();
} }
function button_individual () { function button_individual () {
$("#procedure_for_individual").on('change', function() { $("#procedure_for_individual").on('change', function() {
$("#individual_with_siret").toggle() $("#individual_with_siret").toggle()
}); });
if ($('#procedure_for_individual').is(':checked')) if ($('#procedure_for_individual').is(':checked'))
$("#individual_with_siret").show(); $("#individual_with_siret").show();
} }

View file

@ -1,60 +1,59 @@
$(document).on('page:load', init_search_anim); $(document).on('turbolinks:load', init_search_anim);
$(document).ready(init_search_anim);
function init_search_anim(){ function init_search_anim(){
$("#search_area").on('click', search_fadeIn); $("#search_area").on('click', search_fadeIn);
} }
function search_fadeIn(){ function search_fadeIn(){
var search_area = $("#search_area"); var search_area = $("#search_area");
var body_dom = $('body'); var body_dom = $('body');
var positions = search_area.position(); var positions = search_area.position();
var width = search_area.width(); var width = search_area.width();
search_area.css('position', 'fixed'); search_area.css('position', 'fixed');
search_area.css('top', positions.top + $('.navbar').height()); search_area.css('top', positions.top + $('.navbar').height());
search_area.css('left', positions.left); search_area.css('left', positions.left);
search_area.css('z-index', 300); search_area.css('z-index', 300);
search_area.css('width', width); search_area.css('width', width);
search_area.find('#q').animate({ height: '50px' }); search_area.find('#q').animate({ height: '50px' });
search_area.find('#search_button').animate({ height: '50px' }); search_area.find('#search_button').animate({ height: '50px' });
body_dom.append(search_area); body_dom.append(search_area);
$('#mask_search').fadeIn(200); $('#mask_search').fadeIn(200);
var body_width = body_dom.width(); var body_width = body_dom.width();
var search_area_width = body_width/2.5; var search_area_width = body_width/2.5;
search_area.animate({ search_area.animate({
width: search_area_width, width: search_area_width,
left: (body_width/2 - search_area_width/2 + 40) left: (body_width/2 - search_area_width/2 + 40)
}, 400, function() { }, 400, function() {
search_area.off(); search_area.off();
$("#search_area input").focus(); $("#search_area input").focus();
$('#mask_search').on('click', search_fadeOut) $('#mask_search').on('click', search_fadeOut)
}); });
} }
function search_fadeOut(){ function search_fadeOut(){
var search_area = $("#search_area"); var search_area = $("#search_area");
$('#mask_search').fadeOut(200); $('#mask_search').fadeOut(200);
search_area.fadeOut(200, function(){ search_area.fadeOut(200, function(){
search_area.css('position', 'static'); search_area.css('position', 'static');
search_area.css('top', ''); search_area.css('top', '');
search_area.css('left', ''); search_area.css('left', '');
search_area.css('z-index', ''); search_area.css('z-index', '');
search_area.css('width', 'auto'); search_area.css('width', 'auto');
search_area.find('#q').css('height', 34); search_area.find('#q').css('height', 34);
search_area.find('#search_button').css('height', 34); search_area.find('#search_button').css('height', 34);
$('#search-block').append(search_area); $('#search-block').append(search_area);
search_area.fadeIn(200); search_area.fadeIn(200);
init_search_anim(); init_search_anim();
}); });
} }

View file

@ -1,3 +1,3 @@
function show_dossier_id_input (){ function show_dossier_id_input (){
$("#btn_show_dossier_id_input").hide() $("#btn_show_dossier_id_input").hide()
} }

View file

@ -1,5 +1,4 @@
$(document).on('page:load', activeSelect2); $(document).on('turbolinks:load', activeSelect2);
$(document).ready(activeSelect2);
function activeSelect2() { function activeSelect2() {
$('select.select2').select2({ theme: "bootstrap", width: '100%' }); $('select.select2').select2({ theme: "bootstrap", width: '100%' });

View file

@ -0,0 +1,5 @@
@import "variables";
.turbolinks-progress-bar {
background-color: $light-blue;
}

View file

@ -1 +1,5 @@
// colors
$light-blue: #F2F6FA;
// Bootstrap variables
$font-size-base: 16px; $font-size-base: 16px;

View file

@ -20,4 +20,3 @@
} }
} }
} }

View file

@ -27,7 +27,7 @@
@import "bootstrap"; @import "bootstrap";
body { body {
background-color: #F2F6FA; background-color: $light-blue;
} }
html, body { html, body {
@ -63,7 +63,7 @@ form {
} }
#footer { #footer {
background-color: #F2F6FA; background-color: $light-blue;
text-align: center; text-align: center;
padding: 0; padding: 0;
a, p { a, p {

View file

@ -1,3 +1,5 @@
@import "variables";
.default_data_block { .default_data_block {
font-family: Arial; font-family: Arial;
@ -53,7 +55,7 @@
color: #FFFFFF; color: #FFFFFF;
} }
.action:hover { .action:hover {
color: #F2F6FA; color: $light-blue;
} }
.count { .count {
font-size: 16px; font-size: 16px;

View file

@ -1,3 +1,5 @@
@import "variables";
#header { #header {
top: 0; top: 0;
left: 0; left: 0;
@ -185,7 +187,7 @@
} }
} }
.button-navbar-action:hover { .button-navbar-action:hover {
color: #F2F6FA; color: $light-blue;
} }
.button_navbar:hover, .button-navbar-action:hover { .button_navbar:hover, .button-navbar-action:hover {

View file

@ -1,3 +1,5 @@
@import "variables";
#users_index, #admins_index{ #users_index, #admins_index{
margin-left: 2rem; margin-left: 2rem;
margin-right: 2rem; margin-right: 2rem;
@ -48,7 +50,7 @@
padding: 10px; padding: 10px;
} }
.action:hover { .action:hover {
color: #F2F6FA; color: $light-blue;
} }
.padding-left-30 { .padding-left-30 {
padding-left: 30px; padding-left: 30px;

View file

@ -39,16 +39,13 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
end end
def download_dossiers_tps def download_dossiers_tps
if procedure = Procedure.find_by(id: params[:procedure_id]) procedure = Procedure.find_by(id: params[:procedure_id])
dossiers = dossiers_list_facade(param_liste).dossiers_to_display export = procedure.generate_export
respond_with Dossier.export_full_generation(dossiers, request.format) unless dossiers.empty?
else respond_to do |format|
dossiers = dossiers_list_facade(param_liste).dossiers_to_display format.csv { send_data(SpreadsheetArchitect.to_csv(data: export[:data], headers: export[:headers]), filename: 'dossiers.csv') }
respond_to do |format| format.xlsx { send_data(SpreadsheetArchitect.to_xlsx(data: export[:data], headers: export[:headers]), filename: 'dossiers.xlsx') }
format.xlsx { render xlsx: dossiers } format.ods { send_data(SpreadsheetArchitect.to_ods(data: export[:data], headers: export[:headers]), filename: 'dossiers.ods') }
format.ods { render ods: dossiers }
format.csv { render csv: dossiers }
end
end end
end end

View file

@ -122,7 +122,7 @@ class Users::DossiersController < UsersController
@facade = facade params[:dossier][:id] @facade = facade params[:dossier][:id]
if checked_autorisation_donnees? if checked_autorisation_donnees?
unless Dossier.find(@facade.dossier.id).update_attributes update_params unless Dossier.find(@facade.dossier.id).update_attributes update_params_with_formatted_birthdate
flash.alert = @facade.dossier.errors.full_messages.join('<br />').html_safe flash.alert = @facade.dossier.errors.full_messages.join('<br />').html_safe
return redirect_to users_dossier_path(id: @facade.dossier.id) return redirect_to users_dossier_path(id: @facade.dossier.id)
@ -171,6 +171,25 @@ class Users::DossiersController < UsersController
params.require(:dossier).permit(:id, :autorisation_donnees, individual_attributes: [:gender, :nom, :prenom, :birthdate]) params.require(:dossier).permit(:id, :autorisation_donnees, individual_attributes: [:gender, :nom, :prenom, :birthdate])
end end
def update_params_with_formatted_birthdate
editable_params = update_params
# If the user was shown a date input field (if its browser supports it),
# the returned param will follow the YYYY-MM-DD pattern, which we need
# do convert to the DD/MM/YYYY pattern we use
if editable_params &&
editable_params[:individual_attributes] &&
editable_params[:individual_attributes][:birthdate] &&
editable_params[:individual_attributes][:birthdate] =~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/
original_birthdate = editable_params[:individual_attributes][:birthdate]
formatted_birthdate = I18n.l(original_birthdate.to_date, format: '%d/%m/%Y')
editable_params[:individual_attributes][:birthdate] = formatted_birthdate
end
editable_params
end
def checked_autorisation_donnees? def checked_autorisation_donnees?
update_params[:autorisation_donnees] == '1' update_params[:autorisation_donnees] == '1'
end end

View file

@ -1,4 +1,3 @@
class TypeDePieceJustificativeDecorator < Draper::Decorator class TypeDePieceJustificativeDecorator < Draper::Decorator
delegate_all delegate_all
def button_up params def button_up params

View file

@ -201,6 +201,8 @@ class Dossier < ActiveRecord::Base
scope :archived, -> { where(archived: true) } scope :archived, -> { where(archived: true) }
scope :downloadable, -> { all_state }
def cerfa_available? def cerfa_available?
procedure.cerfa_flag? && cerfa.size != 0 procedure.cerfa_flag? && cerfa.size != 0
end end
@ -261,23 +263,6 @@ class Dossier < ActiveRecord::Base
return headers return headers
end end
def self.export_full_generation(dossiers, format)
if dossiers && !dossiers.empty?
data = []
headers = dossiers.first.export_headers
dossiers.each do |dossier|
data << dossier.convert_specific_array_values_to_string(dossier.data_with_champs)
end
if ["csv"].include?(format)
return SpreadsheetArchitect.to_csv(data: data, headers: headers)
elsif ["xlsx"].include?(format)
return SpreadsheetArchitect.to_xlsx(data: data, headers: headers)
elsif ["ods"].include?(format)
return SpreadsheetArchitect.to_ods(data: data, headers: headers)
end
end
end
def followers_gestionnaires_emails def followers_gestionnaires_emails
follows.includes(:gestionnaire).map { |f| f.gestionnaire }.pluck(:email).join(' ') follows.includes(:gestionnaire).map { |f| f.gestionnaire }.pluck(:email).join(' ')
end end

View file

@ -130,4 +130,18 @@ class Procedure < ActiveRecord::Base
self.dossiers.where.not(state: :draft).size self.dossiers.where.not(state: :draft).size
end end
def generate_export
exportable_dossiers = dossiers.downloadable
headers = exportable_dossiers.any? ? exportable_dossiers.first.export_headers : []
data = exportable_dossiers.map do |dossier|
dossier.convert_specific_array_values_to_string(dossier.data_with_champs)
end
{
headers: headers,
data: data
}
end
end end

View file

@ -1,4 +1,3 @@
- if @procedure.locked? - if @procedure.locked?
.alert.alert-info .alert.alert-info
Cette procédure est publiée, certains éléments de la description ne sont plus modifiables Cette procédure est publiée, certains éléments de la description ne sont plus modifiables
@ -85,11 +84,8 @@
%h4 Options avancées %h4 Options avancées
%label{ for: :auto_archive_on} Archivage automatique le %label{ for: :auto_archive_on} Archivage automatique le
= f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-format' => 'dd/mm/yyyy' } = f.text_field :auto_archive_on, id: 'auto_archive_on', value: @procedure.auto_archive_on.try{ |d| d.strftime("%d-%m-%Y") }, data: { provide: 'datepicker', 'date-language' => 'fr', 'date-format' => 'dd/mm/yyyy' }
(à 00h00) (à 00h00)
%p.help-block %p.help-block
%i.fa.fa-info-circle %i.fa.fa-info-circle
L'archivage automatique de la procédure entrainera le passage en instruction de tous les dossiers en construction. L'archivage automatique de la procédure entrainera le passage en instruction de tous les dossiers en construction.

View file

@ -46,5 +46,3 @@
= link_to("", @types_de_champ_facade.delete_url(ff), method: :delete, remote: true, id: "delete_type_de_champ_#{ff.object.id}", class: %w(form-control btn btn-danger fa fa-trash-o) ) = link_to("", @types_de_champ_facade.delete_url(ff), method: :delete, remote: true, id: "delete_type_de_champ_#{ff.object.id}", class: %w(form-control btn btn-danger fa fa-trash-o) )
%div{ style: 'background-color: rgb(204, 204, 204); height: 1px; margin: 30px auto;' } %div{ style: 'background-color: rgb(204, 204, 204); height: 1px; margin: 30px auto;' }

View file

@ -11,5 +11,3 @@
= follower.email = follower.email
- else - else
Aucune personne ne suit ce dossier Aucune personne ne suit ce dossier

View file

@ -44,4 +44,3 @@
= columns.second[:libelle] = columns.second[:libelle]
%button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"} %button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"}
%i.fa.fa-plus %i.fa.fa-plus

View file

@ -14,4 +14,3 @@
dossiers dossiers
%div.body %div.body
= smart_listing_render :search = smart_listing_render :search

View file

@ -20,4 +20,3 @@
- else - else
%h4.text-primary %h4.text-primary
Pas de fichier dans le flux de commentaires. Pas de fichier dans le flux de commentaires.

View file

@ -1,13 +1,8 @@
%div.dropdown.pull-right#download-menu .dropdown.pull-right#download-menu
- if @facade_data_view.dossiers_to_display.count > 400 %a.dropdown-toggle.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
%button.btn.btn-error.dropdown-toggle#dropdownDownloadMenu{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false, class: 'disabled'} %i.fa.fa-download
%span{'data-toggle' => :tooltip, "data-placement" => :left, title: 'Pour réduire le nombre de dossiers et ne pas dépasser la limite autorisée de 400, merci de bien vouloir appliquer des filtres.'} Télécharger tous les dossiers
= t('dynamics.backoffice.limit_excess_download_all_dossiers') %span.caret
- else
%a.dropdown-toggle#dropdownDownloadMenu.button_navbar{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
%i.fa.fa-download
= t('dynamics.backoffice.download_all_dossiers')
%span.caret
%ul.dropdown-menu.dropdown-menu-right %ul.dropdown-menu.dropdown-menu-right
%li %li
= link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do = link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm export-link' } do

View file

@ -57,4 +57,3 @@
%div.col-xs-12.split-hr %div.col-xs-12.split-hr
- unless @facade.entreprise.rna_information.nil? - unless @facade.entreprise.rna_information.nil?
= render partial: '/dossiers/infos_rna' = render partial: '/dossiers/infos_rna'

View file

@ -20,4 +20,3 @@
%dt Capital déclaration : %dt Capital déclaration :
%dd= @facade.entreprise.rna_information.date_declaration %dd= @facade.entreprise.rna_information.date_declaration

View file

@ -15,4 +15,3 @@
= form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do = form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do
= text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' = text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation'
= submit_tag 'Ajouter', class: 'btn btn-success', id: 'send-invitation', data: {confirm: "Envoyer l'invitation ?"} = submit_tag 'Ajouter', class: 'btn btn-success', id: 'send-invitation', data: {confirm: "Envoyer l'invitation ?"}

View file

@ -31,7 +31,7 @@
%label %label
%h4 %h4
Date de naissance * Date de naissance *
= ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} = ff.date_field :birthdate, {class: 'form-control', placeholder: 'jj/mm/aaaa'}
%p %p
%label{ style:'font-weight:normal' } %label{ style:'font-weight:normal' }

View file

@ -1,2 +1 @@
<%= link_to "Mot de passe oublié ?", new_password_path(resource_name) %><br /> <%= link_to "Mot de passe oublié ?", new_password_path(resource_name) %><br />

View file

@ -6,4 +6,3 @@
Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10 Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10
="<![endif]-->".html_safe ="<![endif]-->".html_safe

View file

@ -1,6 +1,7 @@
%html %html
%head %head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{ name: "turbolinks-cache-control", content: "no-cache" }
%title %title
=t('dynamics.page_title') =t('dynamics.page_title')
%meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"} %meta{'http-equiv' => "X-UA-Compatible", :content => "IE=edge"}

View file

@ -1,4 +1,3 @@
%div#first-block %div#first-block
%div.en-cours %div.en-cours
-unless @procedure.logo.blank? -unless @procedure.logo.blank?

View file

@ -1,2 +1 @@
= render partial: 'layouts/left_panels/left_panel_backoffice_dossierscontroller_index' = render partial: 'layouts/left_panels/left_panel_backoffice_dossierscontroller_index'

View file

@ -51,4 +51,3 @@
%div.procedure_list_element %div.procedure_list_element
%div.procedure_list_element %div.procedure_list_element

View file

@ -85,5 +85,3 @@
= link_to 'Demander un accès administrateur', 'https://tps.apientreprise.fr/users/dossiers/new?procedure_id=31', {class: 'btn btn-lg background-tps', target: '_blank'} = link_to 'Demander un accès administrateur', 'https://tps.apientreprise.fr/users/dossiers/new?procedure_id=31', {class: 'btn btn-lg background-tps', target: '_blank'}
.split-hr-left .split-hr-left

View file

@ -1,4 +1,3 @@
%script{type: 'text/javascript'} %script{type: 'text/javascript'}
="var dossier_id =#{dossier.id}" ="var dossier_id =#{dossier.id}"
$(document).on('page:load', initCarto); $(document).on('turbolinks:load', initCarto);
$(document).ready(initCarto);

View file

@ -10,4 +10,3 @@
#cadastre.list #cadastre.list
%h3.text-warning Cadastres %h3.text-warning Cadastres
%ul %ul

View file

@ -1,4 +1,3 @@
%table.table %table.table
- if dossier.procedure.cerfa_flag - if dossier.procedure.cerfa_flag
%tr %tr

View file

@ -25,6 +25,3 @@
- if @user.email != DemoEmails[:gestionnaire] && @user.email != DemoEmails[:admin] - if @user.email != DemoEmails[:gestionnaire] && @user.email != DemoEmails[:admin]
= render "users/shared/links" = render "users/shared/links"

View file

@ -1,4 +1,3 @@
.container.center#users_siret_index .container.center#users_siret_index
.row .row
= render partial: 'pro' = render partial: 'pro'

View file

@ -1,4 +1,3 @@
development: development:
adapter: postgresql adapter: postgresql
encoding: unicode encoding: unicode

View file

@ -85,7 +85,6 @@ set :shared_paths, [
"config/initializers/super_admin.rb", "config/initializers/super_admin.rb",
"config/unicorn.rb", "config/unicorn.rb",
"config/initializers/raven.rb", "config/initializers/raven.rb",
"config/locales/dynamics/fr.yml",
'config/france_connect.yml', 'config/france_connect.yml',
'config/initializers/mailjet.rb', 'config/initializers/mailjet.rb',
'config/initializers/storage_url.rb', 'config/initializers/storage_url.rb',

View file

@ -1,5 +1,5 @@
if LogStasher.enabled if LogStasher.enabled
LogStasher.add_custom_fields do |fields| LogStasher.add_custom_fields do |fields|
fields[:type] = "tps" fields[:type] = "tps"
end end
end end

View file

@ -4,4 +4,3 @@ Sidekiq.configure_server do |config|
schedule_file = "config/schedule.yml" schedule_file = "config/schedule.yml"
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file) Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end end

View file

@ -1,6 +1,6 @@
fr: fr:
dynamics: dynamics:
page_title: TPS - Téléprocédures simplifiées page_title: 'TPS - Téléprocédures simplifiées'
contact_email: contact@tps.apientreprise.fr contact_email: contact@tps.apientreprise.fr
users: users:
connexion_title: Connexion connexion_title: Connexion
@ -12,8 +12,6 @@ fr:
pref_list: pref_list:
title: 'Gestion de colonnes affichées' title: 'Gestion de colonnes affichées'
description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans votre interface de suivi des dossiers.' description: 'Ce menu vous permet de choisir les différentes colonnes que vous souhaitez voir apparaître dans votre interface de suivi des dossiers.'
download_all_dossiers: 'Télécharger mes dossiers'
limit_excess_download_all_dossiers: 'Limite de dossiers fixée à 400 pour le téléchargement'
format_csv: 'Au format CSV' format_csv: 'Au format CSV'
format_xlsx: 'Au format XLSX' format_xlsx: 'Au format XLSX'
format_ods: 'Au format ODS' format_ods: 'Au format ODS'

View file

@ -30,4 +30,3 @@ fr:
blank: 'doit être rempli' blank: 'doit être rempli'
date_previsionnelle: date_previsionnelle:
blank: 'doit être remplie' blank: 'doit être remplie'

View file

@ -15,5 +15,3 @@ fr:
blank: 'doit être rempli' blank: 'doit être rempli'
birthdate: birthdate:
blank: 'doit être rempli' blank: 'doit être rempli'

View file

@ -1,5 +1,5 @@
class RenameDossierPdfintofPieceJointe < ActiveRecord::Migration class RenameDossierPdfintofPieceJointe < ActiveRecord::Migration
def change def change
rename_table :dossier_pdfs, :pieces_jointes rename_table :dossier_pdfs, :pieces_jointes
end end
end end

View file

@ -28,4 +28,3 @@ describe UsersController, type: :controller do
end end
end end
end end

View file

@ -1,4 +1,3 @@
require 'spec_helper' require 'spec_helper'
describe TypeDeChampDecorator do describe TypeDeChampDecorator do

View file

@ -9,19 +9,36 @@ feature 'As a User I wanna create a dossier' do
let(:procedure_with_siret) { create(:procedure, :published, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) } let(:procedure_with_siret) { create(:procedure, :published, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) }
let(:procedure_for_individual) { create(:procedure, :published, :for_individual, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) } let(:procedure_for_individual) { create(:procedure, :published, :for_individual, :with_api_carto, :with_type_de_champ, :with_two_type_de_piece_justificative) }
scenario 'Identification for individual' do context 'Identification for individual' do
login_as user, scope: :user before do
visit commencer_path(procedure_path: procedure_for_individual.path) login_as user, scope: :user
fill_in 'dossier_individual_attributes_nom', with: 'Nom' visit commencer_path(procedure_path: procedure_for_individual.path)
fill_in 'dossier_individual_attributes_prenom', with: 'Prenom' fill_in 'dossier_individual_attributes_nom', with: 'Nom'
fill_in 'dossier_individual_attributes_birthdate', with: '14/10/1987' fill_in 'dossier_individual_attributes_prenom', with: 'Prenom'
find(:css, "#dossier_autorisation_donnees[value='1']").set(true) find(:css, "#dossier_autorisation_donnees[value='1']").set(true)
page.find_by_id('etape_suivante').click end
expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
page.find_by_id('etape_suivante').click scenario "with a proper date input field for birthdate (type='date' supported)" do
fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1' fill_in 'dossier_individual_attributes_birthdate', with: '1987-10-14'
page.find_by_id('suivant').click page.find_by_id('etape_suivante').click
expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true) expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
page.find_by_id('etape_suivante').click
fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1'
page.find_by_id('suivant').click
expect(user.dossiers.first.individual.birthdate).to eq("14/10/1987")
expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
end
scenario "with a basic text input field for birthdate (type='date' unsupported)" do
fill_in 'dossier_individual_attributes_birthdate', with: '14/10/1987'
page.find_by_id('etape_suivante').click
expect(page).to have_current_path(users_dossier_carte_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
page.find_by_id('etape_suivante').click
fill_in "champs_#{procedure_for_individual.dossiers.last.champs.first.id}", with: 'contenu du champ 1'
page.find_by_id('suivant').click
expect(user.dossiers.first.individual.birthdate).to eq("14/10/1987")
expect(page).to have_current_path(users_dossier_recapitulatif_path(procedure_for_individual.dossiers.last.id.to_s), only_path: true)
end
end end
scenario 'Identification through siret', vcr: {cassette_name: 'search_ban_paris'}, js: true do scenario 'Identification through siret', vcr: {cassette_name: 'search_ban_paris'}, js: true do

View file

@ -603,7 +603,6 @@ describe Dossier do
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure, follows: [follow], initiated_at: date1, received_at: date2, processed_at: date3) } let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure, follows: [follow], initiated_at: date1, received_at: date2, processed_at: date3) }
describe '#export_headers' do describe '#export_headers' do
subject { dossier.export_headers } subject { dossier.export_headers }
it { expect(subject).to include(:description) } it { expect(subject).to include(:description) }
@ -611,7 +610,6 @@ describe Dossier do
end end
describe '#data_with_champs' do describe '#data_with_champs' do
subject { dossier.data_with_champs } subject { dossier.data_with_champs }
it { expect(subject[0]).to be_a_kind_of(Integer) } it { expect(subject[0]).to be_a_kind_of(Integer) }
@ -670,7 +668,6 @@ describe Dossier do
it { expect(subject[:entreprise_prenom]).to be_nil } it { expect(subject[:entreprise_prenom]).to be_nil }
end end
describe '#Dossier.to_xlsx' do describe '#Dossier.to_xlsx' do
let!(:procedure) { create(:procedure) } let!(:procedure) { create(:procedure) }
let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) } let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
@ -966,4 +963,17 @@ describe Dossier do
end end
end end
describe '.downloadable' do
let(:procedure) { create(:procedure) }
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: :draft) }
let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: :initiated) }
let!(:dossier3) { create(:dossier, :with_entreprise, procedure: procedure, state: :received) }
subject { procedure.dossiers.downloadable }
it { is_expected.not_to include(dossier)}
it { is_expected.to include(dossier2)}
it { is_expected.to include(dossier3)}
end
end end

View file

@ -256,4 +256,29 @@ describe Procedure do
it { is_expected.to eq 2 } it { is_expected.to eq 2 }
end end
describe '#generate_export' do
let(:procedure) { create :procedure }
subject { procedure.generate_export }
context 'when there are no dossiers' do
it { expect(subject[:data]).to eq([]) }
it { expect(subject[:headers]).to eq([]) }
end
context 'when there are some dossiers' do
let!(:dossier){ create(:dossier, procedure: procedure, state: 'initiated') }
let!(:dossier2){ create(:dossier, procedure: procedure, state: 'closed') }
it { expect(subject[:data].size).to eq(2) }
it { expect(subject[:headers]).to eq(dossier.export_headers) }
end
context 'when there is a draft dossier' do
let!(:dossier_not_exportable){ create(:dossier, procedure: procedure, state: 'draft') }
it { expect(subject[:data]).to eq([]) }
it { expect(subject[:headers]).to eq([]) }
end
end
end end

View file

@ -6,4 +6,3 @@ describe TypeDeChamp do
it_should_behave_like "type_de_champ_spec" it_should_behave_like "type_de_champ_spec"
end end

View file

@ -1,4 +1,3 @@
RSpec.configure do |config| RSpec.configure do |config|
# config.include Devise::TestHelpers, type: :controller # config.include Devise::TestHelpers, type: :controller
end end

View file

@ -147,4 +147,3 @@ var franceConnectKit = {};
} }
}, false); }, false);
})(this); })(this);