From 30d5323d7e1e1d7f400e8444e380fc749b9f0045 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 5 Dec 2016 19:30:58 +0100 Subject: [PATCH] New UI for description dossier in user view --- app/assets/javascripts/description.js | 19 ----- app/assets/stylesheets/description.scss | 15 +++- .../users/description_controller.rb | 19 +++-- app/views/admin/procedures/show.html.haml | 2 +- app/views/users/description/_champs.html.haml | 65 ++--------------- app/views/users/description/_show.html.haml | 5 +- .../champs/_header_section.html.haml | 70 +++++++++++++++++-- 7 files changed, 99 insertions(+), 96 deletions(-) diff --git a/app/assets/javascripts/description.js b/app/assets/javascripts/description.js index cb66f0adf..24a9e7e56 100644 --- a/app/assets/javascripts/description.js +++ b/app/assets/javascripts/description.js @@ -27,7 +27,6 @@ function action_type_de_champs() { }); address_type_init(); - toggle_header_section_composents(); } function toggleErrorClass(node, boolean) { @@ -55,21 +54,3 @@ function validateNumber(number) { function validateInput(input, regex) { return regex.test(input); } - -function toggle_header_section_composents() { - $("a.mask_section_button").on('click', function (e) { - target = e.currentTarget; - - header_section_id = target.id.split('mask_button_')[1]; - header_section_composents = $(".header_section_" + header_section_id); - - header_section_composents.slideToggle(200, function () { - if (header_section_composents.css('display') == 'none') { - $(target).html('Afficher la section ') - } - else { - $(target).html('Masquer la section ') - } - }); - }); -} diff --git a/app/assets/stylesheets/description.scss b/app/assets/stylesheets/description.scss index 54ea06cfa..3a269908e 100644 --- a/app/assets/stylesheets/description.scss +++ b/app/assets/stylesheets/description.scss @@ -2,8 +2,21 @@ @import "bootstrap-datepicker3"; #description_page #liste_champs { + + .default_data_block { + .show-block { + width: 90%; + .body{ + padding-left: 35px; + padding-right: 35px; + padding-bottom: 35px; + } + } + } + h4 { - margin-top: 35px; + padding-top: 35px; + margin: 0; } } diff --git a/app/controllers/users/description_controller.rb b/app/controllers/users/description_controller.rb index b74671a45..d7791e8f2 100644 --- a/app/controllers/users/description_controller.rb +++ b/app/controllers/users/description_controller.rb @@ -12,6 +12,11 @@ class Users::DescriptionController < UsersController @procedure = @dossier.procedure @champs = @dossier.ordered_champs + @headers = @champs.inject([]) do |acc, champ| + acc.push(champ) if champ.type_champ == 'header_section' + acc + end + rescue ActiveRecord::RecordNotFound flash.alert = t('errors.messages.dossier_not_found') redirect_to url_for(root_path) @@ -34,16 +39,16 @@ class Users::DescriptionController < UsersController unless @dossier.update_attributes(create_params) @dossier = @dossier.decorate - flash.now.alert = @dossier.errors.full_messages.join('
').html_safe - return render 'show' + flash.alert = @dossier.errors.full_messages.join('
').html_safe + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end unless params[:champs].nil? champs_service_errors = ChampsService.save_formulaire @dossier.champs, params, mandatory unless champs_service_errors.empty? - flash.now.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'
' }).html_safe - return render 'show' + flash.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'
' }).html_safe + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end end @@ -51,15 +56,15 @@ class Users::DescriptionController < UsersController unless params[:cerfa_pdf].nil? cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user) unless cerfa.save - flash.now.alert = cerfa.errors.full_messages.join('
').html_safe - return render 'show' + flash.alert = cerfa.errors.full_messages.join('
').html_safe + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end end end unless (errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)).empty? flash.alert = errors_upload.html_safe - return render 'show' + return redirect_to users_dossier_description_path(dossier_id: @dossier.id) end diff --git a/app/views/admin/procedures/show.html.haml b/app/views/admin/procedures/show.html.haml index b250fbda5..78e065a6d 100644 --- a/app/views/admin/procedures/show.html.haml +++ b/app/views/admin/procedures/show.html.haml @@ -70,7 +70,7 @@ Champs .badge.progress-bar-info = @facade.procedure.types_de_champ.size - - @facade.procedure.types_de_champ.each do |champ| + - @facade.procedure.types_de_champ.order(:order_place).each do |champ| = champ.libelle %br diff --git a/app/views/users/description/_champs.html.haml b/app/views/users/description/_champs.html.haml index f56859ee2..712d13c00 100644 --- a/app/views/users/description/_champs.html.haml +++ b/app/views/users/description/_champs.html.haml @@ -1,59 +1,8 @@ --actual_header_section = nil --@champs.each do |champ| - .row{class: (actual_header_section.nil? || champ.type_champ == 'header_section' ? '' : "header_section_"+actual_header_section.to_s)} - %div{class: "type_champ-#{champ.type_champ}"} - - - if champ.type_champ == 'header_section' - =render partial: 'users/description/champs/header_section', locals: {champ: champ} - -actual_header_section = champ.id - - -else - - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' - %h4 - = champ.libelle - - if champ.mandatory? - = '*' - - -if champ.type_champ == 'textarea' - =render partial: 'users/description/champs/textarea', locals: {champ: champ} - - -elsif champ.type_champ == 'checkbox' - = render partial: 'users/description/champs/checkbox', locals: {champ: champ} - - -elsif champ.type_champ == 'civilite' - =render partial: 'users/description/champs/civilite', locals: {champ: champ} - - - elsif champ.type_champ == 'datetime' - =render partial: 'users/description/champs/datetime', locals: {champ: champ} - - - elsif champ.type_champ == 'yes_no' - =render partial: 'users/description/champs/yes_no', locals: {champ: champ} - - - elsif champ.type_champ == 'drop_down_list' - =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} - - - elsif champ.type_champ == 'pays' - =render partial: 'users/description/champs/pays', locals: {champ: champ} - - - elsif champ.type_champ == 'regions' - =render partial: 'users/description/champs/regions', locals: {champ: champ} - - - elsif champ.type_champ == 'engagement' - =render partial: 'users/description/champs/engagement', locals: {champ: champ} - - - elsif champ.type_champ == 'departements' - =render partial: 'users/description/champs/departements', locals: {champ: champ} - - -else - %input.form-control{name:"champs['#{champ.id}']", - placeholder: champ.libelle, - id: "champs_#{champ.id}", - value: champ.value, - type: champ.type_champ, - 'data-provide' => champ.data_provide, - 'data-date-format' => champ.data_date_format} - - - unless champ.description.empty? || champ.type_champ == 'engagement' +- if @headers.nil? + -@headers.each do |header| .row - .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} - = champ.description + %div{class: "type_champ-#{header.type_champ}"} + =render partial: 'users/description/champs/header_section', locals: {libelle: header.libelle, order_place: header.order_place, champs: @champs} +- else + .row + =render partial: 'users/description/champs/header_section', locals: {libelle: 'Dossier', order_place: -1, champs: @champs} \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 03217cb0e..40c0d51c0 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -1,6 +1,6 @@ .container#description_page - unless @dossier.procedure.lien_notice.blank? - #lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px;'} + #lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px; z-index: 200'} .panel.panel-info{style:'margin-bottom:0'} .panel-body.center .row @@ -14,9 +14,6 @@ %h2.text-info = @dossier.procedure.libelle - - unless Features.opensimplif - %h3 Votre dossier - -#TODO use form_for = form_tag(url_for({controller: 'users/description', action: :create, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST', multipart: true) do diff --git a/app/views/users/description/champs/_header_section.html.haml b/app/views/users/description/champs/_header_section.html.haml index ca20b7342..3ba589f83 100644 --- a/app/views/users/description/champs/_header_section.html.haml +++ b/app/views/users/description/champs/_header_section.html.haml @@ -1,6 +1,64 @@ -%h3.text-primary.page-header - =champ.libelle - %span.mask_section{style:'float: right'} - %a.mask_section_button.btn.btn-xs.btn-info{id: "mask_button_"+champ.id.to_s} - Masquer la section - %i.fa.fa-chevron-up \ No newline at end of file +.default_data_block.default_visible + %div.row.show-block#infos + %div.header + %div.col-lg-12.col-md-12.title + %div.carret-right + %div.carret-down + =libelle + %div.body + -champs.each do |champ| + - if champ.order_place > order_place + - if champ.type_champ == 'header_section' + - break + + - unless champ.type_champ == 'checkbox' || champ.type_champ == 'engagement' + %h4 + = champ.libelle + - if champ.mandatory? + = '*' + + -if champ.type_champ == 'textarea' + =render partial: 'users/description/champs/textarea', locals: {champ: champ} + + -elsif champ.type_champ == 'checkbox' + = render partial: 'users/description/champs/checkbox', locals: {champ: champ} + + -elsif champ.type_champ == 'civilite' + =render partial: 'users/description/champs/civilite', locals: {champ: champ} + + - elsif champ.type_champ == 'datetime' + =render partial: 'users/description/champs/datetime', locals: {champ: champ} + + - elsif champ.type_champ == 'yes_no' + =render partial: 'users/description/champs/yes_no', locals: {champ: champ} + + - elsif champ.type_champ == 'drop_down_list' + =render partial: 'users/description/champs/drop_down_list', locals: {champ: champ} + + - elsif champ.type_champ == 'pays' + =render partial: 'users/description/champs/pays', locals: {champ: champ} + + - elsif champ.type_champ == 'regions' + =render partial: 'users/description/champs/regions', locals: {champ: champ} + + - elsif champ.type_champ == 'engagement' + =render partial: 'users/description/champs/engagement', locals: {champ: champ} + + - elsif champ.type_champ == 'departements' + =render partial: 'users/description/champs/departements', locals: {champ: champ} + + -else + %input.form-control{name:"champs['#{champ.id}']", + placeholder: champ.libelle, + id: "champs_#{champ.id}", + value: champ.value, + type: champ.type_champ, + 'data-provide' => champ.data_provide, + 'data-date-format' => champ.data_date_format} + + - unless champ.description.empty? || champ.type_champ == 'engagement' + .row + .col-lg-8.col-md-8{class: 'description_div', id:"description_champs_#{champ.id}"} + = champ.description + +