Merge branch 'develop' into staging
Fixed a conflict in README.md
This commit is contained in:
commit
19cde557ce
165 changed files with 1578 additions and 1056 deletions
119
.haml-lint.yml
Normal file
119
.haml-lint.yml
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
linters:
|
||||||
|
AlignmentTabs:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
AltText:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
ClassAttributeWithStaticValue:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
ClassesBeforeIds:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
ConsecutiveComments:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
ConsecutiveSilentScripts:
|
||||||
|
enabled: false
|
||||||
|
max_consecutive: 2
|
||||||
|
|
||||||
|
EmptyObjectReference:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
EmptyScript:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
FinalNewline:
|
||||||
|
enabled: true
|
||||||
|
present: true
|
||||||
|
|
||||||
|
HtmlAttributes:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
IdNames:
|
||||||
|
enabled: false
|
||||||
|
style: lisp_case
|
||||||
|
|
||||||
|
ImplicitDiv:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
Indentation:
|
||||||
|
enabled: true
|
||||||
|
character: space # or tab
|
||||||
|
width: 2 # ignored if character == tab
|
||||||
|
|
||||||
|
InstanceVariables:
|
||||||
|
enabled: false
|
||||||
|
file_types: partials
|
||||||
|
matchers:
|
||||||
|
all: .*
|
||||||
|
partials: \A_.*\.haml\z
|
||||||
|
|
||||||
|
LeadingCommentSpace:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
LineLength:
|
||||||
|
enabled: false
|
||||||
|
max: 80
|
||||||
|
|
||||||
|
MultilinePipe:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
MultilineScript:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
ObjectReferenceAttributes:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
RepeatedId:
|
||||||
|
enabled: false
|
||||||
|
severity: error
|
||||||
|
|
||||||
|
RuboCop:
|
||||||
|
enabled: false
|
||||||
|
# These cops are incredibly noisy when it comes to HAML templates, so we
|
||||||
|
# ignore them.
|
||||||
|
ignored_cops:
|
||||||
|
- Lint/BlockAlignment
|
||||||
|
- Lint/EndAlignment
|
||||||
|
- Lint/Void
|
||||||
|
- Metrics/BlockLength
|
||||||
|
- Metrics/LineLength
|
||||||
|
- Style/AlignParameters
|
||||||
|
- Style/BlockNesting
|
||||||
|
- Style/ElseAlignment
|
||||||
|
- Style/EndOfLine
|
||||||
|
- Style/FileName
|
||||||
|
- Style/FinalNewline
|
||||||
|
- Style/FrozenStringLiteralComment
|
||||||
|
- Style/IfUnlessModifier
|
||||||
|
- Style/IndentationWidth
|
||||||
|
- Style/Next
|
||||||
|
- Style/TrailingBlankLines
|
||||||
|
- Style/TrailingWhitespace
|
||||||
|
- Style/WhileUntilModifier
|
||||||
|
|
||||||
|
RubyComments:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
SpaceBeforeScript:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
SpaceInsideHashAttributes:
|
||||||
|
enabled: true
|
||||||
|
style: space
|
||||||
|
|
||||||
|
TagName:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
TrailingWhitespace:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
UnnecessaryInterpolation:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# Disabled because too agressive, but to enable
|
||||||
|
# locally from time to time
|
||||||
|
UnnecessaryStringOutput:
|
||||||
|
enabled: false
|
7
Gemfile
7
Gemfile
|
@ -93,6 +93,8 @@ gem 'simple_form'
|
||||||
|
|
||||||
gem 'newrelic_rpm'
|
gem 'newrelic_rpm'
|
||||||
|
|
||||||
|
gem 'scenic'
|
||||||
|
|
||||||
# Sidekiq
|
# Sidekiq
|
||||||
gem 'sidekiq'
|
gem 'sidekiq'
|
||||||
gem 'sidekiq-cron', '~> 0.4.4'
|
gem 'sidekiq-cron', '~> 0.4.4'
|
||||||
|
@ -114,7 +116,6 @@ group :test do
|
||||||
gem 'guard-livereload', '~> 2.4', require: false
|
gem 'guard-livereload', '~> 2.4', require: false
|
||||||
gem 'vcr'
|
gem 'vcr'
|
||||||
gem 'rails-controller-testing'
|
gem 'rails-controller-testing'
|
||||||
gem 'sqlite3'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
|
@ -122,6 +123,7 @@ group :development do
|
||||||
gem 'web-console'
|
gem 'web-console'
|
||||||
gem 'rack-handlers'
|
gem 'rack-handlers'
|
||||||
gem 'xray-rails'
|
gem 'xray-rails'
|
||||||
|
gem 'haml-lint'
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
|
@ -145,6 +147,3 @@ group :production, :staging do
|
||||||
gem 'sentry-raven'
|
gem 'sentry-raven'
|
||||||
end
|
end
|
||||||
|
|
||||||
group :production, :staging, :development do
|
|
||||||
gem 'scenic'
|
|
||||||
end
|
|
||||||
|
|
35
Gemfile.lock
35
Gemfile.lock
|
@ -69,7 +69,7 @@ GEM
|
||||||
i18n (~> 0.7)
|
i18n (~> 0.7)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
addressable (2.5.0)
|
addressable (2.5.1)
|
||||||
public_suffix (~> 2.0, >= 2.0.2)
|
public_suffix (~> 2.0, >= 2.0.2)
|
||||||
apipie-rails (0.3.7)
|
apipie-rails (0.3.7)
|
||||||
json
|
json
|
||||||
|
@ -78,6 +78,7 @@ GEM
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0)
|
||||||
activemodel (>= 3.0)
|
activemodel (>= 3.0)
|
||||||
responders
|
responders
|
||||||
|
ast (2.3.0)
|
||||||
attr_required (1.0.1)
|
attr_required (1.0.1)
|
||||||
autoprefixer-rails (6.5.4)
|
autoprefixer-rails (6.5.4)
|
||||||
execjs
|
execjs
|
||||||
|
@ -97,7 +98,7 @@ GEM
|
||||||
browser (2.3.0)
|
browser (2.3.0)
|
||||||
builder (3.2.3)
|
builder (3.2.3)
|
||||||
byebug (9.0.6)
|
byebug (9.0.6)
|
||||||
capybara (2.11.0)
|
capybara (2.13.0)
|
||||||
addressable
|
addressable
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
nokogiri (>= 1.3.3)
|
nokogiri (>= 1.3.3)
|
||||||
|
@ -313,12 +314,20 @@ GEM
|
||||||
rspec (>= 2.99.0, < 4.0)
|
rspec (>= 2.99.0, < 4.0)
|
||||||
haml (4.0.7)
|
haml (4.0.7)
|
||||||
tilt
|
tilt
|
||||||
|
haml-lint (0.999.999)
|
||||||
|
haml_lint
|
||||||
haml-rails (0.9.0)
|
haml-rails (0.9.0)
|
||||||
actionpack (>= 4.0.1)
|
actionpack (>= 4.0.1)
|
||||||
activesupport (>= 4.0.1)
|
activesupport (>= 4.0.1)
|
||||||
haml (>= 4.0.6, < 5.0)
|
haml (>= 4.0.6, < 5.0)
|
||||||
html2haml (>= 1.0.1)
|
html2haml (>= 1.0.1)
|
||||||
railties (>= 4.0.1)
|
railties (>= 4.0.1)
|
||||||
|
haml_lint (0.24.0)
|
||||||
|
haml (>= 4.0, < 5.1)
|
||||||
|
rainbow
|
||||||
|
rake (>= 10, < 13)
|
||||||
|
rubocop (>= 0.47.0)
|
||||||
|
sysexits (~> 1.1)
|
||||||
hashdiff (0.3.1)
|
hashdiff (0.3.1)
|
||||||
hashie (3.4.6)
|
hashie (3.4.6)
|
||||||
html2haml (2.0.0)
|
html2haml (2.0.0)
|
||||||
|
@ -412,11 +421,14 @@ GEM
|
||||||
openstack (3.3.7)
|
openstack (3.3.7)
|
||||||
json
|
json
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
|
parser (2.4.0.0)
|
||||||
|
ast (~> 2.2)
|
||||||
pg (0.19.0)
|
pg (0.19.0)
|
||||||
poltergeist (1.12.0)
|
poltergeist (1.14.0)
|
||||||
capybara (~> 2.1)
|
capybara (~> 2.1)
|
||||||
cliver (~> 0.3.1)
|
cliver (~> 0.3.1)
|
||||||
websocket-driver (>= 0.2.0)
|
websocket-driver (>= 0.2.0)
|
||||||
|
powerpack (0.1.1)
|
||||||
pry (0.10.4)
|
pry (0.10.4)
|
||||||
coderay (~> 1.1.0)
|
coderay (~> 1.1.0)
|
||||||
method_source (~> 0.8.1)
|
method_source (~> 0.8.1)
|
||||||
|
@ -424,7 +436,7 @@ GEM
|
||||||
pry-byebug (3.4.2)
|
pry-byebug (3.4.2)
|
||||||
byebug (~> 9.0)
|
byebug (~> 9.0)
|
||||||
pry (~> 0.10)
|
pry (~> 0.10)
|
||||||
public_suffix (2.0.4)
|
public_suffix (2.0.5)
|
||||||
rack (2.0.1)
|
rack (2.0.1)
|
||||||
rack-handlers (0.7.3)
|
rack-handlers (0.7.3)
|
||||||
rack
|
rack
|
||||||
|
@ -463,6 +475,7 @@ GEM
|
||||||
method_source
|
method_source
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
|
rainbow (2.2.1)
|
||||||
raindrops (0.17.0)
|
raindrops (0.17.0)
|
||||||
rake (12.0.0)
|
rake (12.0.0)
|
||||||
rb-fsevent (0.9.8)
|
rb-fsevent (0.9.8)
|
||||||
|
@ -513,6 +526,13 @@ GEM
|
||||||
rspec-mocks (~> 3.5.0)
|
rspec-mocks (~> 3.5.0)
|
||||||
rspec-support (~> 3.5.0)
|
rspec-support (~> 3.5.0)
|
||||||
rspec-support (3.5.0)
|
rspec-support (3.5.0)
|
||||||
|
rubocop (0.48.1)
|
||||||
|
parser (>= 2.3.3.1, < 3.0)
|
||||||
|
powerpack (~> 0.1)
|
||||||
|
rainbow (>= 1.99.1, < 3.0)
|
||||||
|
ruby-progressbar (~> 1.7)
|
||||||
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
||||||
|
ruby-progressbar (1.8.1)
|
||||||
ruby_dep (1.5.0)
|
ruby_dep (1.5.0)
|
||||||
ruby_parser (3.8.3)
|
ruby_parser (3.8.3)
|
||||||
sexp_processor (~> 4.1)
|
sexp_processor (~> 4.1)
|
||||||
|
@ -574,13 +594,13 @@ GEM
|
||||||
actionpack (>= 4.0)
|
actionpack (>= 4.0)
|
||||||
activesupport (>= 4.0)
|
activesupport (>= 4.0)
|
||||||
sprockets (>= 3.0.0)
|
sprockets (>= 3.0.0)
|
||||||
sqlite3 (1.3.13)
|
|
||||||
swd (1.0.1)
|
swd (1.0.1)
|
||||||
activesupport (>= 3)
|
activesupport (>= 3)
|
||||||
attr_required (>= 0.0.5)
|
attr_required (>= 0.0.5)
|
||||||
httpclient (>= 2.4)
|
httpclient (>= 2.4)
|
||||||
i18n
|
i18n
|
||||||
json (>= 1.4.3)
|
json (>= 1.4.3)
|
||||||
|
sysexits (1.2.0)
|
||||||
therubyracer (0.12.2)
|
therubyracer (0.12.2)
|
||||||
libv8 (~> 3.16.14.0)
|
libv8 (~> 3.16.14.0)
|
||||||
ref
|
ref
|
||||||
|
@ -599,6 +619,7 @@ GEM
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.7.2)
|
unf_ext (0.0.7.2)
|
||||||
|
unicode-display_width (1.1.3)
|
||||||
unicode_utils (1.4.0)
|
unicode_utils (1.4.0)
|
||||||
unicorn (5.2.0)
|
unicorn (5.2.0)
|
||||||
kgio (~> 2.6)
|
kgio (~> 2.6)
|
||||||
|
@ -626,7 +647,7 @@ GEM
|
||||||
addressable (>= 2.3.6)
|
addressable (>= 2.3.6)
|
||||||
crack (>= 0.3.2)
|
crack (>= 0.3.2)
|
||||||
hashdiff
|
hashdiff
|
||||||
websocket-driver (0.6.4)
|
websocket-driver (0.6.5)
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.2)
|
websocket-extensions (0.1.2)
|
||||||
will_paginate (3.1.5)
|
will_paginate (3.1.5)
|
||||||
|
@ -667,6 +688,7 @@ DEPENDENCIES
|
||||||
guard
|
guard
|
||||||
guard-livereload (~> 2.4)
|
guard-livereload (~> 2.4)
|
||||||
guard-rspec
|
guard-rspec
|
||||||
|
haml-lint
|
||||||
haml-rails
|
haml-rails
|
||||||
hashie
|
hashie
|
||||||
jquery-rails
|
jquery-rails
|
||||||
|
@ -705,7 +727,6 @@ DEPENDENCIES
|
||||||
spreadsheet_architect
|
spreadsheet_architect
|
||||||
spring
|
spring
|
||||||
spring-commands-rspec
|
spring-commands-rspec
|
||||||
sqlite3
|
|
||||||
therubyracer
|
therubyracer
|
||||||
timecop
|
timecop
|
||||||
turbolinks (~> 5.0)
|
turbolinks (~> 5.0)
|
||||||
|
|
|
@ -73,6 +73,7 @@ guard :rspec, cmd: 'spring rspec' do
|
||||||
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
||||||
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
||||||
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
||||||
|
watch(%r{^app/services/(.+)_(service)\.rb$}) { |m| "spec/services/#{m[1]}_service_spec.rb" }
|
||||||
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
||||||
watch('config/routes.rb') { "spec/routing" }
|
watch('config/routes.rb') { "spec/routing" }
|
||||||
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
||||||
|
|
33
README.md
33
README.md
|
@ -5,10 +5,15 @@
|
||||||
TéléProcédure Simplifiée, ou TPS pour les intimes, est une plateforme 100 % web et 0 % email, conçue afin de répondre au besoin urgent de l'État d'appliquer la directive sur le 100 % démat' à l'horizon 2018 pour les démarches administratives.
|
TéléProcédure Simplifiée, ou TPS pour les intimes, est une plateforme 100 % web et 0 % email, conçue afin de répondre au besoin urgent de l'État d'appliquer la directive sur le 100 % démat' à l'horizon 2018 pour les démarches administratives.
|
||||||
|
|
||||||
|
|
||||||
## Technologies utilisées
|
## Dépendances
|
||||||
|
|
||||||
Ruby : 2.3.1
|
### Tous environnements
|
||||||
Rails : 5.0.0.1
|
|
||||||
|
- postgresql
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- PhantomJS
|
||||||
|
|
||||||
|
|
||||||
## Initialisation de l'environnement de développement
|
## Initialisation de l'environnement de développement
|
||||||
|
@ -20,32 +25,23 @@ Afin d'initialiser l'environnement de développement, éxécutez la commande sui
|
||||||
|
|
||||||
## Création de la base de données
|
## Création de la base de données
|
||||||
|
|
||||||
L'application utilise une base de donnée Postgresql. Pour en installer une, utilisez la commande suivante :
|
|
||||||
|
|
||||||
sudo apt-get install postgresql
|
|
||||||
|
|
||||||
Les informations nécessaire à l'initialisation de la base doivent être pré-configurées à la main grâce à la procédure suivante :
|
Les informations nécessaire à l'initialisation de la base doivent être pré-configurées à la main grâce à la procédure suivante :
|
||||||
|
|
||||||
su - postgres
|
su - postgres
|
||||||
psql
|
psql
|
||||||
> create user tps with password 'lol' superuser;
|
> create user tps_development with password 'tps_development' superuser;
|
||||||
|
> create user tps_test with password 'tps_test' superuser;
|
||||||
> \q
|
> \q
|
||||||
|
|
||||||
|
|
||||||
Afin de générer la BDD de l'application, il est nécessaire d'éxécuter les commandes suivantes :
|
Afin de générer la BDD de l'application, il est nécessaire d'éxécuter les commandes suivantes :
|
||||||
|
|
||||||
rake db:create db:schema:load db:migrate
|
rake db:create db:schema:load db:migrate
|
||||||
rake db:create db:schema:load db:migrate RAILS_ENV=test
|
rake db:create db:schema:load db:migrate RAILS_ENV=test
|
||||||
|
|
||||||
|
|
||||||
## Installation de Phantom JS
|
## Exécution des tests (RSpec)
|
||||||
|
|
||||||
Installer PhantomJS qui est utilisé par les tests automatisés de l'application.
|
Pour exécuter les tests de l'application, plusieurs possibilités :
|
||||||
|
|
||||||
|
|
||||||
## Exécution des tests (Rspec)
|
|
||||||
|
|
||||||
Pour éxécuter les tests de l'application, plusieurs possibilités :
|
|
||||||
|
|
||||||
- Lancer tous les tests
|
- Lancer tous les tests
|
||||||
|
|
||||||
|
@ -62,8 +58,11 @@ Pour éxécuter les tests de l'application, plusieurs possibilités :
|
||||||
rake spec SPEC=file_path/file_name_spec.rb
|
rake spec SPEC=file_path/file_name_spec.rb
|
||||||
rspec file_path/file_name_spec.rb
|
rspec file_path/file_name_spec.rb
|
||||||
|
|
||||||
|
## Linting
|
||||||
|
|
||||||
## Regénérer les binstubs
|
- Linter les fichiers HAML : `bundle exec haml-lint app/views/`
|
||||||
|
|
||||||
|
## Régénérer les binstubs
|
||||||
|
|
||||||
bundle binstub railties --force
|
bundle binstub railties --force
|
||||||
rake rails:update:bin
|
rake rails:update:bin
|
||||||
|
|
BIN
app/assets/images/landing/users/Pilat.sketch
Normal file
BIN
app/assets/images/landing/users/Pilat.sketch
Normal file
Binary file not shown.
36
app/assets/javascripts/new-description.js
Normal file
36
app/assets/javascripts/new-description.js
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
(function() {
|
||||||
|
var showNotFound = function() {
|
||||||
|
$('.dossier-link .text-info').hide();
|
||||||
|
$('.dossier-link .text-warning').show();
|
||||||
|
};
|
||||||
|
|
||||||
|
var showData = function(data) {
|
||||||
|
$('.dossier-link .procedureLibelle').text(data.procedureLibelle);
|
||||||
|
$('.dossier-link .text-info').show();
|
||||||
|
$('.dossier-link .text-warning').hide();
|
||||||
|
};
|
||||||
|
|
||||||
|
var hideEverything = function() {
|
||||||
|
$('.dossier-link .text-info').hide();
|
||||||
|
$('.dossier-link .text-warning').hide();
|
||||||
|
};
|
||||||
|
|
||||||
|
var fetchProcedureLibelle = function(e) {
|
||||||
|
var dossierId = $(e.target).val();
|
||||||
|
if(dossierId) {
|
||||||
|
$.get('/users/dossiers/' + dossierId + '/procedure_libelle')
|
||||||
|
.done(showData)
|
||||||
|
.fail(showNotFound);
|
||||||
|
} else {
|
||||||
|
hideEverything();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var timeOut = null;
|
||||||
|
var debounceFetchProcedureLibelle = function(e) {
|
||||||
|
if(timeOut){ clearTimeout(timeOut); }
|
||||||
|
timeOut = setTimeout(function() { fetchProcedureLibelle(e); }, 300);
|
||||||
|
};
|
||||||
|
|
||||||
|
$(document).on('input', '[data-type=dossier-link]', debounceFetchProcedureLibelle);
|
||||||
|
})();
|
20
app/assets/javascripts/toggle_chart.js
Normal file
20
app/assets/javascripts/toggle_chart.js
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
var TPS = TPS || {};
|
||||||
|
|
||||||
|
TPS.toggleChart = function(event, chartClass) {
|
||||||
|
var nextSelectorItem = $(event.target),
|
||||||
|
nextChart = $(chartClass),
|
||||||
|
nextChartId = nextChart.children().first().attr("id"),
|
||||||
|
currentSelectorItem = nextSelectorItem.parent().find(".segmented-control-item-active"),
|
||||||
|
currentChart = nextSelectorItem.parent().parent().find(".chart:not(.hidden)");
|
||||||
|
|
||||||
|
// Change the current selector and the next selector states
|
||||||
|
currentSelectorItem.toggleClass("segmented-control-item-active");
|
||||||
|
nextSelectorItem.toggleClass("segmented-control-item-active");
|
||||||
|
|
||||||
|
// Hide the currently shown chart and show the new one
|
||||||
|
currentChart.toggleClass("hidden");
|
||||||
|
nextChart.toggleClass("hidden");
|
||||||
|
|
||||||
|
// Reflow needed, see https://github.com/highcharts/highcharts/issues/1979
|
||||||
|
Chartkick.charts[nextChartId].getChartObject().reflow();
|
||||||
|
}
|
|
@ -1,9 +0,0 @@
|
||||||
@import "card";
|
|
||||||
|
|
||||||
.stats {
|
|
||||||
.stat-card {
|
|
||||||
@extend .card;
|
|
||||||
margin: 15px auto;
|
|
||||||
max-width: 1200px;
|
|
||||||
}
|
|
||||||
}
|
|
124
app/assets/stylesheets/stats.scss
Normal file
124
app/assets/stylesheets/stats.scss
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
@import "card";
|
||||||
|
|
||||||
|
$dark-grey: #333333;
|
||||||
|
$light-grey: #999999;
|
||||||
|
$blue: rgba(61, 149, 236, 1);
|
||||||
|
$blue-hover: rgba(61, 149, 236, 0.8);
|
||||||
|
|
||||||
|
$default-space: 15px;
|
||||||
|
|
||||||
|
$new-h1-margin-bottom: 4 * $default-space;
|
||||||
|
.new-h1 {
|
||||||
|
color: $dark-grey;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: $new-h1-margin-bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
$statistiques-padding-top: $default-space * 2;
|
||||||
|
.statistiques {
|
||||||
|
width: 1040px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-top: $statistiques-padding-top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-cards {
|
||||||
|
.stat-card:nth-of-type(even) {
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$stat-card-margin-bottom: 3 * $default-space;
|
||||||
|
.stat-card {
|
||||||
|
@extend .card;
|
||||||
|
margin-bottom: $stat-card-margin-bottom;
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: none;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
$stat-card-half-horizontal-spacing: 4 * $default-space;
|
||||||
|
.stat-card-half {
|
||||||
|
width: calc((100% - #{$stat-card-half-horizontal-spacing}) / 2);
|
||||||
|
margin-right: 3 * $default-space;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-card-title {
|
||||||
|
color: $dark-grey;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 500;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
$segmented-control-margin-top: $default-space;
|
||||||
|
.segmented-control {
|
||||||
|
border-radius: 36px;
|
||||||
|
height: 36px;
|
||||||
|
line-height: 36px;
|
||||||
|
font-size: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: $segmented-control-margin-top;
|
||||||
|
}
|
||||||
|
|
||||||
|
$segmented-control-item-horizontal-padding: $default-space;
|
||||||
|
$segmented-control-item-border-radius: 2 * $default-space;
|
||||||
|
.segmented-control-item {
|
||||||
|
color: $blue;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 15px;
|
||||||
|
border: 2px solid $blue;
|
||||||
|
margin-right: -2px;
|
||||||
|
padding-left: $segmented-control-item-horizontal-padding;
|
||||||
|
padding-right: $segmented-control-item-horizontal-padding;
|
||||||
|
color: $blue;
|
||||||
|
|
||||||
|
&:first-of-type {
|
||||||
|
border-radius: $segmented-control-item-border-radius 0px 0px $segmented-control-item-border-radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-of-type {
|
||||||
|
border-radius: 0px $segmented-control-item-border-radius $segmented-control-item-border-radius 0px;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $blue-hover;
|
||||||
|
color: white;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.segmented-control-item-active {
|
||||||
|
background-color: $blue;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart-container {
|
||||||
|
margin-top: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chart {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
$big-number-card-padding: 2 * $segmented-control-item-border-radius;
|
||||||
|
.big-number-card {
|
||||||
|
padding: $big-number-card-padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
.big-number-card-title {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 auto;
|
||||||
|
color: $light-grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
.big-number-card-number {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 90px;
|
||||||
|
line-height: 90px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: $blue;
|
||||||
|
}
|
|
@ -1,24 +0,0 @@
|
||||||
module Administrations
|
|
||||||
class StatsController < ApplicationController
|
|
||||||
before_action :authenticate_administration!
|
|
||||||
|
|
||||||
def index
|
|
||||||
procedures = Procedure.where(created_at: Time.current.all_quarter).group("date_trunc('day', created_at)").count
|
|
||||||
dossiers = Dossier.where(created_at: Time.current.all_quarter).group("date_trunc('day', created_at)").count
|
|
||||||
@procedures = clean_hash(procedures)
|
|
||||||
@dossiers = clean_hash(dossiers)
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def clean_hash h
|
|
||||||
h.keys.each{ |key| h[key.to_date] = h[key]; h.delete(key) }
|
|
||||||
min_date = h.keys.min
|
|
||||||
max_date = h.keys.max
|
|
||||||
(min_date..max_date).each do |date|
|
|
||||||
h[date] = 0 if h[date].nil?
|
|
||||||
end
|
|
||||||
h
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -5,7 +5,7 @@ class Backoffice::PrivateFormulairesController < ApplicationController
|
||||||
dossier = current_gestionnaire.dossiers.find(params[:dossier_id])
|
dossier = current_gestionnaire.dossiers.find(params[:dossier_id])
|
||||||
|
|
||||||
unless params[:champs].nil?
|
unless params[:champs].nil?
|
||||||
champs_service_errors = ChampsService.save_formulaire dossier.champs_private, params
|
champs_service_errors = ChampsService.save_champs dossier.champs_private, params
|
||||||
|
|
||||||
if champs_service_errors.empty?
|
if champs_service_errors.empty?
|
||||||
flash[:notice] = "Formulaire enregistré"
|
flash[:notice] = "Formulaire enregistré"
|
||||||
|
|
56
app/controllers/stats_controller.rb
Normal file
56
app/controllers/stats_controller.rb
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
class StatsController < ApplicationController
|
||||||
|
|
||||||
|
def index
|
||||||
|
procedures = Procedure.where(:published => true)
|
||||||
|
dossiers = Dossier.where.not(:state => :draft)
|
||||||
|
|
||||||
|
@procedures_30_days_flow = thirty_days_flow_hash(procedures)
|
||||||
|
@dossiers_30_days_flow = thirty_days_flow_hash(dossiers)
|
||||||
|
|
||||||
|
@procedures_cumulative = cumulative_hash(procedures)
|
||||||
|
@dossiers_cumulative = cumulative_hash(dossiers)
|
||||||
|
|
||||||
|
@procedures_count = procedures.count
|
||||||
|
@dossiers_count = dossiers.count
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def thirty_days_flow_hash(association)
|
||||||
|
min_date = 30.days.ago.to_date
|
||||||
|
max_date = Time.now.to_date
|
||||||
|
|
||||||
|
thirty_days_flow_hash = association
|
||||||
|
.where(:created_at => min_date..max_date)
|
||||||
|
.group("date_trunc('day', created_at)")
|
||||||
|
.count
|
||||||
|
|
||||||
|
clean_hash(thirty_days_flow_hash, min_date, max_date)
|
||||||
|
end
|
||||||
|
|
||||||
|
def clean_hash(h, min_date, max_date)
|
||||||
|
# Convert keys to date
|
||||||
|
h = Hash[h.map { |(k, v)| [k.to_date, v] }]
|
||||||
|
|
||||||
|
# Add missing vales where count is 0
|
||||||
|
(min_date..max_date).each do |date|
|
||||||
|
if h[date].nil?
|
||||||
|
h[date] = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
h
|
||||||
|
end
|
||||||
|
|
||||||
|
def cumulative_hash(association)
|
||||||
|
sum = 0
|
||||||
|
association
|
||||||
|
.group("DATE_TRUNC('month', created_at)")
|
||||||
|
.count
|
||||||
|
.to_a
|
||||||
|
.sort{ |x, y| x[0] <=> y[0] }
|
||||||
|
.map { |x, y| { x => (sum += y)} }
|
||||||
|
.reduce({}, :merge)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -12,10 +12,7 @@ class Users::DescriptionController < UsersController
|
||||||
@procedure = @dossier.procedure
|
@procedure = @dossier.procedure
|
||||||
@champs = @dossier.ordered_champs
|
@champs = @dossier.ordered_champs
|
||||||
|
|
||||||
@headers = @champs.inject([]) do |acc, champ|
|
@headers = @champs.select { |c| c.type_champ == 'header_section' }
|
||||||
acc.push(champ) if champ.type_champ == 'header_section'
|
|
||||||
acc
|
|
||||||
end
|
|
||||||
|
|
||||||
unless @dossier.can_be_initiated?
|
unless @dossier.can_be_initiated?
|
||||||
flash[:alert] = t('errors.messages.procedure_archived')
|
flash[:alert] = t('errors.messages.procedure_archived')
|
||||||
|
@ -34,18 +31,12 @@ class Users::DescriptionController < UsersController
|
||||||
|
|
||||||
@champs = @dossier.ordered_champs
|
@champs = @dossier.ordered_champs
|
||||||
|
|
||||||
mandatory = true
|
check_mandatory_fields = !draft_submission?
|
||||||
mandatory = !(params[:submit].keys.first == 'brouillon') unless params[:submit].nil?
|
|
||||||
|
|
||||||
unless @dossier.update_attributes(create_params)
|
if params[:champs]
|
||||||
@dossier = @dossier.decorate
|
champs_service_errors = ChampsService.save_champs @dossier.champs,
|
||||||
|
params,
|
||||||
flash.alert = @dossier.errors.full_messages.join('<br />').html_safe
|
check_mandatory_fields
|
||||||
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?
|
unless champs_service_errors.empty?
|
||||||
flash.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'<br>' }).html_safe
|
flash.alert = (champs_service_errors.inject('') { |acc, error| acc+= error[:message]+'<br>' }).html_safe
|
||||||
|
@ -53,33 +44,30 @@ class Users::DescriptionController < UsersController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if @procedure.cerfa_flag?
|
if @procedure.cerfa_flag? && params[:cerfa_pdf]
|
||||||
unless params[:cerfa_pdf].nil?
|
|
||||||
cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user)
|
cerfa = Cerfa.new(content: params[:cerfa_pdf], dossier: @dossier, user: current_user)
|
||||||
unless cerfa.save
|
unless cerfa.save
|
||||||
flash.alert = cerfa.errors.full_messages.join('<br />').html_safe
|
flash.alert = cerfa.errors.full_messages.join('<br />').html_safe
|
||||||
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
|
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
unless (errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)).empty?
|
errors_upload = PiecesJustificativesService.upload!(@dossier, current_user, params)
|
||||||
|
unless errors_upload.empty?
|
||||||
flash.alert = errors_upload.html_safe
|
flash.alert = errors_upload.html_safe
|
||||||
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
|
return redirect_to users_dossier_description_path(dossier_id: @dossier.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if draft_submission?
|
||||||
if mandatory
|
flash.notice = 'Votre brouillon a bien été sauvegardé.'
|
||||||
|
redirect_to url_for(controller: :dossiers, action: :index, liste: :brouillon)
|
||||||
|
else
|
||||||
if @dossier.draft?
|
if @dossier.draft?
|
||||||
@dossier.initiated!
|
@dossier.initiated!
|
||||||
NotificationMailer.send_notification(@dossier, @dossier.procedure.initiated_mail).deliver_now!
|
NotificationMailer.send_notification(@dossier, @dossier.procedure.initiated_mail).deliver_now!
|
||||||
end
|
end
|
||||||
|
|
||||||
flash.notice = 'Félicitations, votre demande a bien été enregistrée.'
|
flash.notice = 'Félicitations, votre demande a bien été enregistrée.'
|
||||||
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: @dossier.id)
|
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: @dossier.id)
|
||||||
else
|
|
||||||
flash.notice = 'Votre brouillon a bien été sauvegardé.'
|
|
||||||
redirect_to url_for(controller: :dossiers, action: :index, liste: :brouillon)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -123,6 +111,10 @@ class Users::DescriptionController < UsersController
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def draft_submission?
|
||||||
|
params[:submit] && params[:submit].keys.first == 'brouillon'
|
||||||
|
end
|
||||||
|
|
||||||
def check_autorisation_donnees
|
def check_autorisation_donnees
|
||||||
@dossier = current_user_dossier
|
@dossier = current_user_dossier
|
||||||
|
|
||||||
|
@ -137,9 +129,4 @@ class Users::DescriptionController < UsersController
|
||||||
redirect_to url_for(users_dossier_path(@dossier.id))
|
redirect_to url_for(users_dossier_path(@dossier.id))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_params
|
|
||||||
params.permit()
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -154,6 +154,13 @@ class Users::DossiersController < UsersController
|
||||||
redirect_to url_for users_dossiers_path
|
redirect_to url_for users_dossiers_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def procedure_libelle
|
||||||
|
dossier = Dossier.find(params[:dossier_id])
|
||||||
|
render json: { procedureLibelle: dossier.procedure.libelle }
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render json: {}, status: 404
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def check_siret
|
def check_siret
|
||||||
|
|
|
@ -28,6 +28,10 @@ class Champ < ActiveRecord::Base
|
||||||
same_date? num, '%M'
|
same_date? num, '%M'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def mandatory_and_blank?
|
||||||
|
mandatory? && value.blank?
|
||||||
|
end
|
||||||
|
|
||||||
def same_date? num, compare
|
def same_date? num, compare
|
||||||
if type_champ == 'datetime' && !value.nil?
|
if type_champ == 'datetime' && !value.nil?
|
||||||
if value.to_datetime.strftime(compare) == num
|
if value.to_datetime.strftime(compare) == num
|
||||||
|
|
|
@ -210,19 +210,16 @@ class Dossier < ActiveRecord::Base
|
||||||
def convert_specific_hash_values_to_string(hash_to_convert)
|
def convert_specific_hash_values_to_string(hash_to_convert)
|
||||||
hash = {}
|
hash = {}
|
||||||
hash_to_convert.each do |key, value|
|
hash_to_convert.each do |key, value|
|
||||||
value = value.to_s if !value.kind_of?(Time) && !value.nil?
|
value = serialize_value_for_export(value)
|
||||||
hash.store(key, value)
|
hash.store(key, value)
|
||||||
end
|
end
|
||||||
return hash
|
return hash
|
||||||
end
|
end
|
||||||
|
|
||||||
def convert_specific_array_values_to_string(array_to_convert)
|
def full_data_strings_array
|
||||||
array = []
|
data_with_champs.map do |value|
|
||||||
array_to_convert.each do |value|
|
serialize_value_for_export(value)
|
||||||
value = value.to_s if !value.kind_of?(Time) && !value.nil?
|
|
||||||
array << value
|
|
||||||
end
|
end
|
||||||
return array
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def export_entreprise_data
|
def export_entreprise_data
|
||||||
|
@ -306,4 +303,8 @@ class Dossier < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def serialize_value_for_export(value)
|
||||||
|
value.nil? || value.kind_of?(Time) ? value : value.to_s
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
class Notification < ActiveRecord::Base
|
class Notification < ActiveRecord::Base
|
||||||
belongs_to :dossier
|
belongs_to :dossier
|
||||||
serialize :liste if Rails.env.test?
|
|
||||||
|
|
||||||
# after_save :broadcast_notification
|
# after_save :broadcast_notification
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,7 @@ class Procedure < ActiveRecord::Base
|
||||||
|
|
||||||
headers = exportable_dossiers.any? ? exportable_dossiers.first.export_headers : []
|
headers = exportable_dossiers.any? ? exportable_dossiers.first.export_headers : []
|
||||||
data = exportable_dossiers.map do |dossier|
|
data = exportable_dossiers.map do |dossier|
|
||||||
dossier.convert_specific_array_values_to_string(dossier.data_with_champs)
|
dossier.full_data_strings_array
|
||||||
end
|
end
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,8 @@ class TypeDeChamp < ActiveRecord::Base
|
||||||
departements: 'departements',
|
departements: 'departements',
|
||||||
engagement: 'engagement',
|
engagement: 'engagement',
|
||||||
header_section: 'header_section',
|
header_section: 'header_section',
|
||||||
explication: 'explication'
|
explication: 'explication',
|
||||||
|
dossier_link: 'dossier_link'
|
||||||
}
|
}
|
||||||
|
|
||||||
belongs_to :procedure
|
belongs_to :procedure
|
||||||
|
|
|
@ -1,27 +1,41 @@
|
||||||
class ChampsService
|
class ChampsService
|
||||||
def self.save_formulaire champs, params, check_mandatory=true
|
class << self
|
||||||
errors = Array.new
|
def save_champs(champs, params, check_mandatory = true)
|
||||||
|
fill_champs(champs, params)
|
||||||
|
|
||||||
champs.each do |champ|
|
champs.select(&:changed?).each(&:save)
|
||||||
champ.value = params[:champs]["'#{champ.id}'"]
|
|
||||||
|
|
||||||
if champ.type_champ == 'datetime'
|
check_mandatory ? build_error_messages(champs) : []
|
||||||
champ.value = params[:champs]["'#{champ.id}'"]+
|
|
||||||
' ' +
|
|
||||||
params[:time_hour]["'#{champ.id}'"] +
|
|
||||||
':' +
|
|
||||||
params[:time_minute]["'#{champ.id}'"]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if check_mandatory
|
private
|
||||||
if champ.mandatory? && (champ.value.nil? || champ.value.blank?)
|
|
||||||
errors.push({message: "Le champ #{champ.libelle} doit être rempli."})
|
def fill_champs(champs, h)
|
||||||
end
|
datetimes, not_datetimes = champs.partition { |c| c.type_champ == 'datetime' }
|
||||||
|
|
||||||
|
not_datetimes.each { |c| c.value = h[:champs]["'#{c.id}'"] }
|
||||||
|
datetimes.each { |c| c.value = parse_datetime(c.id, h) }
|
||||||
end
|
end
|
||||||
|
|
||||||
champ.save if champ.changed?
|
def parse_datetime(champ_id, h)
|
||||||
|
"#{h[:champs]["'#{champ_id}'"]} #{extract_hour(champ_id, h)}:#{extract_minute(champ_id, h)}"
|
||||||
end
|
end
|
||||||
|
|
||||||
errors
|
def extract_hour(champ_id, h)
|
||||||
|
h[:time_hour]["'#{champ_id}'"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def extract_minute(champ_id, h)
|
||||||
|
h[:time_minute]["'#{champ_id}'"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_error_messages(champs)
|
||||||
|
champs.select(&:mandatory_and_blank?)
|
||||||
|
.map { |c| build_champ_error_message(c) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def build_champ_error_message(champ)
|
||||||
|
{ message: "Le champ #{champ.libelle} doit être rempli." }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
.row{style:'height: 34px'}
|
.row{ style: 'height: 34px;' }
|
||||||
|
|
||||||
- unless smart_listing.empty?
|
- unless smart_listing.empty?
|
||||||
%table.table#liste_gestionnaire
|
%table.table#liste_gestionnaire
|
||||||
%thead
|
%thead
|
||||||
%th Enlever
|
%th Enlever
|
||||||
%th#email{style:'text-align: right'} Email
|
%th#email{ style: 'text-align: right;' } Email
|
||||||
|
|
||||||
- @accompagnateurs_assign.each do |accompagnateur|
|
- @accompagnateurs_assign.each do |accompagnateur|
|
||||||
%tr
|
%tr
|
||||||
%td.col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1.center
|
%td.col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1.center
|
||||||
%a.btn.btn-primary{ href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::NOT_ASSIGN)}", 'data-method' => 'put' }
|
%a.btn.btn-primary{ href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::NOT_ASSIGN)}", 'data-method' => 'put' }
|
||||||
.fa.fa-arrow-left
|
.fa.fa-arrow-left
|
||||||
%td{style:'padding-top: 11px; font-size:15px; text-align:right'}= accompagnateur.email
|
%td{ style: 'padding-top: 11px; font-size: 15px; text-align: right;' }= accompagnateur.email
|
||||||
|
|
||||||
= smart_listing.paginate
|
= smart_listing.paginate
|
||||||
= smart_listing.pagination_per_page_links
|
= smart_listing.pagination_per_page_links
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
- @accompagnateurs_not_assign.each do |accompagnateur|
|
- @accompagnateurs_not_assign.each do |accompagnateur|
|
||||||
%tr
|
%tr
|
||||||
%td.col-xs-11{style:'padding-top: 11px; font-size:15px'}= accompagnateur.email
|
%td.col-xs-11{ style: 'padding-top: 11px; font-size: 15px;' }= accompagnateur.email
|
||||||
%td.center
|
%td.center
|
||||||
%a.btn.btn-success.gestionnaire-affectation{ href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::ASSIGN)}", 'data-method' => 'put' }
|
%a.btn.btn-success.gestionnaire-affectation{ href: "#{admin_procedure_accompagnateurs_path(procedure_id: @procedure.id, accompagnateur_id: accompagnateur.id, to: AccompagnateurService::ASSIGN)}", 'data-method' => 'put' }
|
||||||
.fa.fa-arrow-right
|
.fa.fa-arrow-right
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
.col-xs-2
|
.col-xs-2
|
||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
= f.submit 'Valider', class: 'btn btn-info', style: 'float:left', id: 'add-gestionnaire-email'
|
= f.submit 'Valider', class: 'btn btn-info', style: 'float: left;', id: 'add-gestionnaire-email'
|
||||||
.col-xs-6
|
.col-xs-6
|
||||||
%h3.text-success Affectés
|
%h3.text-success Affectés
|
||||||
= smart_listing_render :accompagnateurs_assign
|
= smart_listing_render :accompagnateurs_assign
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
%table.table#liste_gestionnaire
|
%table.table#liste_gestionnaire
|
||||||
%thead
|
%thead
|
||||||
%th#libelle= smart_listing.sortable 'Email', 'email'
|
%th#libelle= smart_listing.sortable 'Email', 'email'
|
||||||
%th= ''
|
%th
|
||||||
|
|
||||||
- @gestionnaires.each do |gestionnaire|
|
- @gestionnaires.each do |gestionnaire|
|
||||||
%tr
|
%tr
|
||||||
%td{style:'padding-top: 11px; font-size:15px'}= gestionnaire.email
|
%td{ style: 'padding-top: 11px; font-size: 15px;' }= gestionnaire.email
|
||||||
%td{ style: 'text-align:right' }
|
%td{ style: 'text-align: right;' }
|
||||||
.delete.btn.btn-sm.fa.fa-trash
|
.delete.btn.btn-sm.fa.fa-trash
|
||||||
|
|
||||||
.confirm
|
.confirm
|
||||||
= link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), { method: :delete, class: 'btn btn-sm btn-success' }
|
= link_to 'Valider', admin_gestionnaire_path(id: gestionnaire.id), { method: :delete, class: 'btn btn-sm btn-success' }
|
||||||
.cancel.btn.btn-sm.btn-danger.fa.fa-minus{style: 'top: 0'}
|
.cancel.btn.btn-sm.btn-danger.fa.fa-minus{ style: 'top: 0;' }
|
||||||
|
|
||||||
= smart_listing.paginate
|
= smart_listing.paginate
|
||||||
= smart_listing.pagination_per_page_links
|
= smart_listing.pagination_per_page_links
|
||||||
|
|
|
@ -16,4 +16,4 @@
|
||||||
.col-xs-2
|
.col-xs-2
|
||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
= f.submit 'Valider', class: 'btn btn-info', style: 'float:left'
|
= f.submit 'Valider', class: 'btn btn-info', style: 'float: left;'
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
.col-md-6
|
.col-md-6
|
||||||
%h4 Logo de la procédure
|
%h4 Logo de la procédure
|
||||||
- unless @procedure.logo.blank?
|
- unless @procedure.logo.blank?
|
||||||
= image_tag @procedure.decorate.logo_img, {style: 'height: 40px; display: inline; margin-right: 6px', id: 'preview_procedure_logo'}
|
= image_tag @procedure.decorate.logo_img, { style: 'height: 40px; display: inline; margin-right: 6px;', id: 'preview_procedure_logo' }
|
||||||
= f.file_field :logo, accept: 'image/png, image/jpg, image/jpeg', style: 'display: inline'
|
= f.file_field :logo, accept: 'image/png, image/jpg, image/jpeg', style: 'display: inline'
|
||||||
|
|
||||||
%div{style:'margin-top:5px'}
|
%div{ style: 'margin-top: 5px;' }
|
||||||
%i
|
%i
|
||||||
Fichier accepté : JPG / JPEG / PNG
|
Fichier accepté : JPG / JPEG / PNG
|
||||||
.col-md-6
|
.col-md-6
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
%th#ID= smart_listing.sortable 'ID', 'id'
|
%th#ID= smart_listing.sortable 'ID', 'id'
|
||||||
%th#libelle= smart_listing.sortable 'Libellé', 'libelle'
|
%th#libelle= smart_listing.sortable 'Libellé', 'libelle'
|
||||||
- if @active_class
|
- if @active_class
|
||||||
%th#lien Lien
|
%th Lien
|
||||||
%th#created_at= smart_listing.sortable 'Date création', 'created_at'
|
%th#created_at= smart_listing.sortable 'Date création', 'created_at'
|
||||||
%th#lien Actions
|
%th Actions
|
||||||
|
|
||||||
- @procedures.each do |procedure|
|
- @procedures.each do |procedure|
|
||||||
- procedure = procedure.decorate
|
- procedure = procedure.decorate
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
placeholder: 'Chemin vers la procédure',
|
placeholder: 'Chemin vers la procédure',
|
||||||
class: 'form-control',
|
class: 'form-control',
|
||||||
maxlength: 30,
|
maxlength: 30,
|
||||||
style: 'width: 300px; display: inline')
|
style: 'width: 300px; display: inline;')
|
||||||
#path_messages
|
#path_messages
|
||||||
#path_is_mine.text-warning.center.message
|
#path_is_mine.text-warning.center.message
|
||||||
Ce lien est déjà utilisé par une de vos procédure.
|
Ce lien est déjà utilisé par une de vos procédure.
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
type: 'email',
|
type: 'email',
|
||||||
placeholder: 'Email administrateur cible',
|
placeholder: 'Email administrateur cible',
|
||||||
style: 'width: 300px; margin-left:auto; margin-right:auto' }
|
style: 'width: 300px; margin-left:auto; margin-right:auto' }
|
||||||
%div#not_found_admin.center.text-danger{style:'display:none; margin-top: 10px'}
|
%div#not_found_admin.center.text-danger{ style:'display: none; margin-top: 10px;' }
|
||||||
Cet administrateur n'existe pas.
|
Cet administrateur n'existe pas.
|
||||||
.modal-footer
|
.modal-footer
|
||||||
= submit_tag "Envoyer", class: 'btn btn-success'
|
= submit_tag "Envoyer", class: 'btn btn-success'
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
%li{ class: @draft_class }
|
%li{ class: @draft_class }
|
||||||
%a{ :href => "#{url_for :admin_procedures_draft}" }
|
%a{ :href => "#{url_for :admin_procedures_draft}" }
|
||||||
%h5.text-primary
|
%h5.text-primary
|
||||||
="Brouillons"
|
Brouillons
|
||||||
|
|
||||||
%li{ class: @active_class }
|
%li{ class: @active_class }
|
||||||
%a{ :href => "#{url_for :admin_procedures}" }
|
%a{ :href => "#{url_for :admin_procedures}" }
|
||||||
%h5.text-success
|
%h5.text-success
|
||||||
= "Actives"
|
Actives
|
||||||
|
|
||||||
%li{ class: @archived_class }
|
%li{ class: @archived_class }
|
||||||
%a{ :href => "#{url_for :admin_procedures_archived}" }
|
%a{ :href => "#{url_for :admin_procedures_archived}" }
|
||||||
%h5{style: 'color: black'}
|
%h5{ style: 'color: black;' }
|
||||||
="Archivées"
|
Archivées
|
||||||
%br
|
%br
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#admins_index
|
#admins_index
|
||||||
.default_data_block.default_visible
|
.default_data_block.default_visible
|
||||||
%div.row.show-block#new_dossiers
|
.row.show-block#new_dossiers
|
||||||
%div.header
|
.header
|
||||||
%div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
|
.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
Procédures
|
Procédures
|
||||||
%a{ href: '/admin/procedures/new' }
|
%a{ href: '/admin/procedures/new' }
|
||||||
%div#new-procedure.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
|
%div#new-procedure.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
|
||||||
Nouvelle
|
Nouvelle
|
||||||
|
|
||||||
%div.body
|
.body
|
||||||
= smart_listing_render :procedures
|
= smart_listing_render :procedures
|
||||||
|
|
|
@ -5,4 +5,4 @@
|
||||||
#procedure_new.section.section-label
|
#procedure_new.section.section-label
|
||||||
= form_for @procedure, url: { controller: 'admin/procedures', action: :create }, multipart: true do |f|
|
= form_for @procedure, url: { controller: 'admin/procedures', action: :create }, multipart: true do |f|
|
||||||
= render partial: 'informations', locals: { f: f }
|
= render partial: 'informations', locals: { f: f }
|
||||||
= f.submit 'Valider', class: 'btn btn-info', id: 'save-procedure', style: 'float:right'
|
= f.submit 'Valider', class: 'btn btn-info', id: 'save-procedure', style: 'float: right;'
|
||||||
|
|
|
@ -2,34 +2,34 @@
|
||||||
#procedure_show
|
#procedure_show
|
||||||
- unless @facade.procedure.published?
|
- unless @facade.procedure.published?
|
||||||
- if @facade.procedure.gestionnaires.size == 0
|
- if @facade.procedure.gestionnaires.size == 0
|
||||||
%a.action_button.btn.btn-success{style:'float: right; margin-top: 10px', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.', id: 'publish-procedure'}
|
%a.action_button.btn.btn-success{ style: 'float: right; margin-top: 10px;', disabled: 'disabled', 'data-toggle' => :tooltip, title: 'Vous ne pouvez pas publier une procédure sans qu\'aucun accompagnateur ne soit affecté à celle-ci.', id: 'publish-procedure' }
|
||||||
%i.fa.fa-eraser
|
%i.fa.fa-eraser
|
||||||
Publier
|
Publier
|
||||||
- else
|
- else
|
||||||
%a.btn.btn-success{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px', id: 'publish-procedure'}
|
%a.btn.btn-success{ "data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style: 'float: right; margin-top: 10px;', id: 'publish-procedure' }
|
||||||
%i.fa.fa-eraser
|
%i.fa.fa-eraser
|
||||||
Publier
|
Publier
|
||||||
|
|
||||||
= render partial: '/admin/procedures/modal_publish'
|
= render partial: '/admin/procedures/modal_publish'
|
||||||
|
|
||||||
%a#transfer.btn.btn-small.btn-default{"data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px; margin-right: 10px'}
|
%a#transfer.btn.btn-small.btn-default{ "data-target" => "#transferModal", "data-toggle" => "modal", :type => "button", style: 'float: right; margin-top: 10px; margin-right: 10px;' }
|
||||||
%i.fa.fa-exchange
|
%i.fa.fa-exchange
|
||||||
Transférer
|
Transférer
|
||||||
|
|
||||||
= render partial: '/admin/procedures/modal_transfer'
|
= render partial: '/admin/procedures/modal_transfer'
|
||||||
|
|
||||||
- if @facade.procedure.archived?
|
- if @facade.procedure.archived?
|
||||||
%a#reenable.btn.btn-small.btn-default.text-info{"data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style:'float: right; margin-top: 10px'}
|
%a#reenable.btn.btn-small.btn-default.text-info{ "data-target" => "#publishModal", "data-toggle" => "modal", :type => "button", style: 'float: right; margin-top: 10px;' }
|
||||||
%i.fa.fa-eraser
|
%i.fa.fa-eraser
|
||||||
Réactiver
|
Réactiver
|
||||||
|
|
||||||
= render partial: '/admin/procedures/modal_publish'
|
= render partial: '/admin/procedures/modal_publish'
|
||||||
|
|
||||||
- elsif @facade.procedure.published?
|
- elsif @facade.procedure.published?
|
||||||
= form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style:'float: right; margin-top: 10px' do
|
= form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put, style: 'float: right; margin-top: 10px;' do
|
||||||
%button#archive.btn.btn-small.btn-default.text-info{ type: :button }
|
%button#archive.btn.btn-small.btn-default.text-info{ type: :button }
|
||||||
%i.fa.fa-eraser
|
%i.fa.fa-eraser
|
||||||
= 'Archiver'
|
Archiver
|
||||||
#confirm
|
#confirm
|
||||||
%button#valid.btn.btn-small.btn-success{ type: :submit }
|
%button#valid.btn.btn-small.btn-success{ type: :submit }
|
||||||
%i.fa.fa-check
|
%i.fa.fa-check
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
%div
|
%div
|
||||||
%h3 Lien procédure
|
%h3 Lien procédure
|
||||||
%div{style:'margin-left:3%'}
|
%div{ style: 'margin-left: 3%;' }
|
||||||
- if @facade.procedure.published?
|
- if @facade.procedure.published?
|
||||||
= link_to @facade.procedure.lien, @facade.procedure.lien, target: '_blank'
|
= link_to @facade.procedure.lien, @facade.procedure.lien, target: '_blank'
|
||||||
- else
|
- else
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
= t('dynamics.admin.procedure.stats.title')
|
= t('dynamics.admin.procedure.stats.title')
|
||||||
|
|
||||||
.row
|
.row
|
||||||
.col-xs-6{style:'margin-left:3%'}
|
.col-xs-6{ style: 'margin-left: 3%;' }
|
||||||
%h4 Total
|
%h4 Total
|
||||||
%div
|
%div
|
||||||
= @facade.dossiers_total
|
= @facade.dossiers_total
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
%h4 Description
|
%h4 Description
|
||||||
= ff.text_area :description, class: 'form-control description', placeholder: 'Description', rows: 3
|
= ff.text_area :description, class: 'form-control description', placeholder: 'Description', rows: 3
|
||||||
|
|
||||||
.form-group.drop_down_list{ class: (%w(drop_down_list multiple_drop_down_list).include?(type_champ) ? 'show_inline' : nil), style: 'margin-right: 5px' }
|
.form-group.drop_down_list{ class: (%w(drop_down_list multiple_drop_down_list).include?(type_champ) ? 'show_inline' : nil), style: 'margin-right: 5px;' }
|
||||||
%h4 Liste déroulante
|
%h4 Liste déroulante
|
||||||
= ff.fields_for :drop_down_list_attributes, ff.object.object.drop_down_list do |fff|
|
= ff.fields_for :drop_down_list_attributes, ff.object.object.drop_down_list do |fff|
|
||||||
~ fff.text_area :value, class: 'form-control drop_down_list', placeholder: "Ecrire une valeur par ligne et --valeur-- pour un séparateur.", rows: 3, cols: 30
|
~ fff.text_area :value, class: 'form-control drop_down_list', placeholder: "Ecrire une valeur par ligne et --valeur-- pour un séparateur.", rows: 3, cols: 30
|
||||||
|
|
|
@ -7,9 +7,6 @@
|
||||||
|
|
||||||
= f.submit 'Créer un administrateur', class: 'btn btn-success', id: 'submit_new_administrateur'
|
= f.submit 'Créer un administrateur', class: 'btn btn-success', id: 'submit_new_administrateur'
|
||||||
|
|
||||||
.text-center
|
|
||||||
=link_to 'Stats', administrations_stats_path, style: 'margin-bottom: 50px; display: block', 'data-no-turbolink': true
|
|
||||||
|
|
||||||
= smart_listing_render :admins
|
= smart_listing_render :admins
|
||||||
|
|
||||||
%br
|
%br
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
= javascript_include_tag 'https://code.highcharts.com/highcharts.js', 'chartkick'
|
|
||||||
|
|
||||||
.container
|
|
||||||
.stats
|
|
||||||
.stat-card
|
|
||||||
%h1 Procédures créées
|
|
||||||
= line_chart @procedures
|
|
||||||
|
|
||||||
.stat-card
|
|
||||||
%h1 Dossiers créés
|
|
||||||
= line_chart @dossiers
|
|
|
@ -1,10 +1,10 @@
|
||||||
%div.filter_framed.panel.panel-primary{id: "#{filter_framed_id}", style:'width: 300px; height: 100px; position: absolute; top: 0; left: 0; display: none'}
|
.filter_framed.panel.panel-primary{ id: "#{filter_framed_id}", style: 'width: 300px; height: 100px; position: absolute; top: 0; left: 0; display: none;' }
|
||||||
.panel-heading
|
.panel-heading
|
||||||
= preference.libelle
|
= preference.libelle
|
||||||
|
|
||||||
= form_tag @facade_data_view.filter_url, { class: 'panel-body form-inline', method: :post } do
|
= form_tag @facade_data_view.filter_url, { class: 'panel-body form-inline', method: :post } do
|
||||||
%input.form-control.filter_input{name: "filter_input[#{preference.table_attr}]", style:'width: 69%', value: "#{preference.filter}"}
|
%input.form-control.filter_input{ name: "filter_input[#{preference.table_attr}]", style: 'width: 69%;', value: "#{preference.filter}" }
|
||||||
%button.btn.btn-sm.btn-success
|
%button.btn.btn-sm.btn-success
|
||||||
%i.fa.fa-check
|
%i.fa.fa-check
|
||||||
%div.btn.btn-sm.btn-danger.erase-filter
|
.btn.btn-sm.btn-danger.erase-filter
|
||||||
%i.fa.fa-remove
|
%i.fa.fa-remove
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
%h3
|
%h3
|
||||||
= t('dynamics.backoffice.pref_list.title')
|
= t('dynamics.backoffice.pref_list.title')
|
||||||
|
|
||||||
%p{style:'margin-top: 15px; margin-bottom: 20px'}
|
%p{ style: 'margin-top: 15px; margin-bottom: 20px;' }
|
||||||
= t('dynamics.backoffice.pref_list.description')
|
= t('dynamics.backoffice.pref_list.description')
|
||||||
|
|
||||||
%h4.text-primary
|
%h4.text-primary
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
%button.btn.btn-default.btn-xs{ type: :submit, id: "delete_pref_list_#{preference[:table]}_#{preference[:attr]}" }
|
%button.btn.btn-default.btn-xs{ type: :submit, id: "delete_pref_list_#{preference[:table]}_#{preference[:attr]}" }
|
||||||
%i.fa.fa-minus
|
%i.fa.fa-minus
|
||||||
|
|
||||||
%h4.text-success{style:'margin-top: 15px'}
|
%h4.text-success{ style: 'margin-top: 15px;' }
|
||||||
Disponibles
|
Disponibles
|
||||||
|
|
||||||
%table
|
%table
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
- if index%2 == 0 || tables.first.to_s.include?('champs')
|
- if index%2 == 0 || tables.first.to_s.include?('champs')
|
||||||
%tr
|
%tr
|
||||||
|
|
||||||
%td.col-xs-5{style: 'vertical-align: top', colspan: (tables.first == :champs ? 2 : 1)}
|
%td.col-xs-5{ style: 'vertical-align: top;', colspan: (tables.first == :champs ? 2 : 1) }
|
||||||
%h5= tables.first.to_s.gsub('_', ' ').capitalize
|
%h5= tables.first.to_s.gsub('_', ' ').capitalize
|
||||||
%ul
|
%ul
|
||||||
- if tables.second
|
- if tables.second
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#state_description.row{style:'width: 50%; margin-left: auto; margin-right: auto'}
|
#state_description.row{ style: 'width: 50%; margin-left: auto; margin-right: auto;' }
|
||||||
.panel.panel-info
|
.panel.panel-info
|
||||||
.panel-body.center
|
.panel-body.center
|
||||||
.row
|
.row
|
||||||
.col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1
|
.col-md-1.col-lg-1.col-sm-1.col-xs-1.col-sm-1.col-xs-1
|
||||||
.fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'}
|
.fa.fa-info-circle.text-info{ style: 'font-size: 2em; margin-top: 20%;' }
|
||||||
.col-xs-11
|
.col-xs-11
|
||||||
- if dossiers_list_facade.liste == 'nouveaux'
|
- if dossiers_list_facade.liste == 'nouveaux'
|
||||||
Tous les dossiers présents dans cette liste sont ceux qui
|
Tous les dossiers présents dans cette liste sont ceux qui
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
= render partial: 'backoffice/dossiers/pref_list'
|
= render partial: 'backoffice/dossiers/pref_list'
|
||||||
|
|
||||||
.default_data_block.default_visible
|
.default_data_block.default_visible
|
||||||
%div.row.show-block#new_dossiers
|
.row.show-block#new_dossiers
|
||||||
%div.header
|
.header
|
||||||
%div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
|
.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
Résultat de la recherche
|
Résultat de la recherche
|
||||||
%div.col-lg-2.col-md-2.col-sm-2.col-xs-2.count
|
.col-lg-2.col-md-2.col-sm-2.col-xs-2.count
|
||||||
= @dossiers.count
|
= @dossiers.count
|
||||||
dossiers
|
dossiers
|
||||||
%div.body
|
.body
|
||||||
= smart_listing_render :search
|
= smart_listing_render :search
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
%div{ style: 'text-align: center; max-width: 500px; margin-left: auto; margin-right: auto; padding: 20px;' }
|
%div{ style: 'text-align: center; max-width: 500px; margin-left: auto; margin-right: auto; padding: 20px;' }
|
||||||
= render partial: 'users/sessions/resume_procedure'
|
= render partial: 'users/sessions/resume_procedure'
|
||||||
|
|
||||||
.center{style:'margin-top: -20px'}
|
.center{ style: 'margin-top: -20px;' }
|
||||||
%h3
|
%h3
|
||||||
La campagne de création de nouveau dossier
|
La campagne de création de nouveau dossier
|
||||||
%br
|
%br
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
%tr
|
%tr
|
||||||
%td= file.user.nil? ? 'Accompagnateur' : file.user.email
|
%td= file.user.nil? ? 'Accompagnateur' : file.user.email
|
||||||
%td= file.created_at.localtime
|
%td= file.created_at.localtime
|
||||||
%td= link_to file.original_filename, file.content_url, style:'color: green', target: '_blank'
|
%td= link_to file.original_filename, file.content_url, style: 'color: green;', target: '_blank'
|
||||||
- else
|
- else
|
||||||
%h4.text-primary
|
%h4.text-primary
|
||||||
Pas de fichier dans le flux de commentaires.
|
Pas de fichier dans le flux de commentaires.
|
||||||
|
|
|
@ -2,48 +2,48 @@
|
||||||
|
|
||||||
- if @facade.procedure.individual_with_siret
|
- if @facade.procedure.individual_with_siret
|
||||||
.default_data_block
|
.default_data_block
|
||||||
%div.row.show-block.infos
|
.row.show-block.infos
|
||||||
%div.header
|
.header
|
||||||
%div.col-xs-8.title-no-expanse
|
.col-xs-8.title-no-expanse
|
||||||
%div.carret-right
|
.carret-right
|
||||||
INFORMATIONS DU DEMANDEUR
|
INFORMATIONS DU DEMANDEUR
|
||||||
- if !@current_gestionnaire && ["draft", "updated", "replied", "initiated"].include?(@facade.dossier.state)
|
- if !@current_gestionnaire && ["draft", "updated", "replied", "initiated"].include?(@facade.dossier.state)
|
||||||
%a#add_siret.action{ href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id) }
|
%a#add_siret.action{ href: users_dossier_add_siret_path(dossier_id: @facade.dossier.id) }
|
||||||
%div.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
|
.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
|
||||||
= "Renseigner un SIRET"
|
Renseigner un SIRET
|
||||||
|
|
||||||
- unless @facade.entreprise.nil?
|
- unless @facade.entreprise.nil?
|
||||||
.default_data_block
|
.default_data_block
|
||||||
%div.row.show-block.infos#infos_entreprise
|
.row.show-block.infos#infos_entreprise
|
||||||
%div.header
|
.header
|
||||||
%div.col-xs-12.title
|
.col-xs-12.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
INFORMATIONS DU DEMANDEUR
|
INFORMATIONS DU DEMANDEUR
|
||||||
%div.body.display-block-on-print
|
.body.display-block-on-print
|
||||||
= render partial: '/dossiers/infos_entreprise'
|
= render partial: '/dossiers/infos_entreprise'
|
||||||
|
|
||||||
.default_data_block.default_visible
|
.default_data_block.default_visible
|
||||||
%div.row.show-block.infos#infos_dossier
|
.row.show-block.infos#infos_dossier
|
||||||
%div.header
|
.header
|
||||||
%div.col-xs-10.title
|
.col-xs-10.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
CONSTRUCTION DU DOSSIER
|
CONSTRUCTION DU DOSSIER
|
||||||
= render partial: '/dossiers/edit_dossier'
|
= render partial: '/dossiers/edit_dossier'
|
||||||
%div.body.display-block-on-print
|
.body.display-block-on-print
|
||||||
= render partial: '/dossiers/infos_dossier'
|
= render partial: '/dossiers/infos_dossier'
|
||||||
|
|
||||||
- if @facade.dossier.procedure.module_api_carto.use_api_carto
|
- if @facade.dossier.procedure.module_api_carto.use_api_carto
|
||||||
.default_data_block.default_visible.no-page-break-inside
|
.default_data_block.default_visible.no-page-break-inside
|
||||||
%div.row.show-block#carto
|
.row.show-block#carto
|
||||||
%div.header
|
.header
|
||||||
%div.col-xs-10.title
|
.col-xs-10.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
CARTOGRAPHIE
|
CARTOGRAPHIE
|
||||||
= render partial: '/dossiers/edit_carto'
|
= render partial: '/dossiers/edit_carto'
|
||||||
%div.body.display-block-on-print
|
.body.display-block-on-print
|
||||||
%input{ id: 'json_latlngs', type: 'hidden', value: "#{@facade.dossier.json_latlngs}", name: 'json_latlngs' }
|
%input{ id: 'json_latlngs', type: 'hidden', value: "#{@facade.dossier.json_latlngs}", name: 'json_latlngs' }
|
||||||
%input{ id: 'quartier_prioritaires', type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}" }
|
%input{ id: 'quartier_prioritaires', type: 'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}" }
|
||||||
%input{ id: 'cadastres', type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}" }
|
%input{ id: 'cadastres', type: 'hidden', value: "#{@facade.dossier.cadastres.to_json}" }
|
||||||
|
@ -54,14 +54,14 @@
|
||||||
|
|
||||||
- if @current_gestionnaire && gestionnaire_signed_in? && @champs_private.count > 0
|
- if @current_gestionnaire && gestionnaire_signed_in? && @champs_private.count > 0
|
||||||
.default_data_block.default_visible
|
.default_data_block.default_visible
|
||||||
%div.row.show-block#private-fields
|
.row.show-block#private-fields
|
||||||
%div.header
|
.header
|
||||||
%div.col-xs-10.title
|
.col-xs-10.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
= "formulaire privé".upcase
|
= "formulaire privé".upcase
|
||||||
%div.col-xs-2.count
|
.col-xs-2.count
|
||||||
- private_fields_count = @champs_private.count
|
- private_fields_count = @champs_private.count
|
||||||
= (private_fields_count == 1) ? "1 champ" : "#{private_fields_count} champs"
|
= (private_fields_count == 1) ? "1 champ" : "#{private_fields_count} champs"
|
||||||
%div.body
|
.body
|
||||||
= render partial: '/dossiers/infos_private_fields'
|
= render partial: '/dossiers/infos_private_fields'
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
- unless @facade.dossier.read_only?
|
- unless @facade.dossier.read_only?
|
||||||
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
|
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
|
||||||
%a#maj_carte.action{ href: "/users/dossiers/#{@facade.dossier.id}/carte" }
|
%a#maj_carte.action{ href: "/users/dossiers/#{@facade.dossier.id}/carte" }
|
||||||
%div.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
|
.col-lg-2.col-md-2.col-sm-2.col-xs-2.action
|
||||||
= 'éditer'.upcase
|
= 'éditer'.upcase
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
- unless @facade.dossier.read_only?
|
- unless @facade.dossier.read_only?
|
||||||
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
|
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
|
||||||
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0
|
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0
|
||||||
%div.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
|
.col-lg-4.col-md-4.col-sm-4.col-xs-4.action
|
||||||
%a#maj_pj.action{ "data-target" => "#UploadPJmodal",
|
%a#maj_pj.action{ "data-target" => "#UploadPJmodal",
|
||||||
"data-toggle" => "modal",
|
"data-toggle" => "modal",
|
||||||
:type => "button",
|
:type => "button",
|
||||||
style: 'margin-bottom: 15px; margin-top: -30px'}
|
style: 'margin-bottom: 15px; margin-top: -30px;' }
|
||||||
Modifier les documents
|
Modifier les documents
|
||||||
%br
|
%br
|
||||||
= render partial: 'users/recapitulatif/modal_upload_pj'
|
= render partial: 'users/recapitulatif/modal_upload_pj'
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
%div.row
|
.row
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
- if @facade.procedure.for_individual?
|
- if @facade.procedure.for_individual?
|
||||||
.row.title-row
|
.row.title-row
|
||||||
%div.col-xs-4.split-hr
|
.col-xs-4.split-hr
|
||||||
%div.col-xs-4.dossier-title= t('utils.depositaire').upcase
|
.col-xs-4.dossier-title= t('utils.depositaire').upcase
|
||||||
%div.col-xs-4.split-hr
|
.col-xs-4.split-hr
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Civilité
|
.col-xs-6.depositaire-label Civilité
|
||||||
%div.col-xs-1.comments-off= "-"
|
.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.depositaire-info= @facade.individual.gender
|
.col-xs-5.depositaire-info= @facade.individual.gender
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Nom
|
.col-xs-6.depositaire-label Nom
|
||||||
%div.col-xs-1.comments-off= "-"
|
.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.depositaire-info= @facade.individual.nom
|
.col-xs-5.depositaire-info= @facade.individual.nom
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Prénom
|
.col-xs-6.depositaire-label Prénom
|
||||||
%div.col-xs-1.comments-off= "-"
|
.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.despositaire-info= @facade.individual.prenom
|
.col-xs-5.despositaire-info= @facade.individual.prenom
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label Date de naissance
|
.col-xs-6.depositaire-label Date de naissance
|
||||||
%div.col-xs-1.comments-off= "-"
|
.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.depositaire-info= @facade.individual.birthdate
|
.col-xs-5.depositaire-info= @facade.individual.birthdate
|
||||||
.row.margin-top-20
|
.row.margin-top-20
|
||||||
|
|
||||||
- unless @facade.champs.nil?
|
- unless @facade.champs.nil?
|
||||||
|
@ -28,32 +28,39 @@
|
||||||
- next if champ.type_champ == 'explication'
|
- next if champ.type_champ == 'explication'
|
||||||
- if champ.type_champ == 'header_section'
|
- if champ.type_champ == 'header_section'
|
||||||
.row.title-row.margin-top-40
|
.row.title-row.margin-top-40
|
||||||
%div.col-xs-3.split-hr
|
.col-xs-3.split-hr
|
||||||
%div.col-xs-6.dossier-title= champ.libelle.upcase
|
.col-xs-6.dossier-title= champ.libelle.upcase
|
||||||
%div.col-xs-3.split-hr
|
.col-xs-3.split-hr
|
||||||
- else
|
- else
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label= champ.libelle
|
.col-xs-6.depositaire-label= champ.libelle
|
||||||
%div.col-md-1.col-lg-1.col-sm-1.col-xs-1.comments-off
|
.col-xs-1.comments-off
|
||||||
= "-"
|
= "-"
|
||||||
%div.col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" }
|
.col-xs-5.depositaire-info{ id: "champ-#{champ.id}-value" }
|
||||||
- unless champ.decorate.value.blank?
|
- unless champ.decorate.value.blank?
|
||||||
|
- if champ.type_champ == 'dossier_link'
|
||||||
|
- dossier = Dossier.find_by(id: champ.decorate.value)
|
||||||
|
- if dossier && gestionnaire_signed_in?
|
||||||
|
= link_to(dossier.procedure.libelle, backoffice_dossier_path(champ.decorate.value), target: '_blank')
|
||||||
|
- else
|
||||||
|
= dossier.nil? ? 'pas de dossier associé' : dossier.procedure.libelle
|
||||||
|
- else
|
||||||
= champ.decorate.value.html_safe
|
= champ.decorate.value.html_safe
|
||||||
|
|
||||||
- if @facade.dossier.mandataire_social && gestionnaire_signed_in?
|
- if @facade.dossier.mandataire_social && gestionnaire_signed_in?
|
||||||
.mandataire_social.text-success.center
|
.mandataire_social.text-success.center
|
||||||
%br
|
%br
|
||||||
="Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise ("
|
Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise (
|
||||||
%b
|
%b
|
||||||
= "#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}"
|
= "#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}"
|
||||||
=")"
|
)
|
||||||
%div.row
|
.row
|
||||||
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.count > 0
|
- if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.count > 0
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
.row.title-row
|
.row.title-row
|
||||||
%div.col-xs-4.split-hr
|
.col-xs-4.split-hr
|
||||||
%div.col-xs-4.dossier-title= t('utils.pieces').upcase
|
.col-xs-4.dossier-title= t('utils.pieces').upcase
|
||||||
%div.col-xs-4.split-hr
|
.col-xs-4.split-hr
|
||||||
|
|
||||||
.col-xs-12#pieces_justificatives.margin-bot-40
|
.col-xs-12#pieces_justificatives.margin-bot-40
|
||||||
.row
|
.row
|
||||||
|
@ -65,32 +72,32 @@
|
||||||
.col-xs-5.despositaire-info
|
.col-xs-5.despositaire-info
|
||||||
- if @facade.dossier.cerfa_available?
|
- if @facade.dossier.cerfa_available?
|
||||||
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
|
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
|
||||||
%span{style:'margin-left:12px'}
|
%span{ style: 'margin-left: 12px;' }
|
||||||
\-
|
\-
|
||||||
= link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => 'cerfa' do
|
= link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => 'cerfa' do
|
||||||
%span.fa.fa-clock-o
|
%span.fa.fa-clock-o
|
||||||
- else
|
- else
|
||||||
= 'Pièce non fournie'
|
Pièce non fournie
|
||||||
.row
|
.row
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
- @facade.types_de_pieces_justificatives.each do |type_de_piece_justificative|
|
- @facade.types_de_pieces_justificatives.each do |type_de_piece_justificative|
|
||||||
.row.piece-row
|
.row.piece-row
|
||||||
.col-xs-12{ id: "piece_justificative_#{type_de_piece_justificative.id}" }
|
.col-xs-12{ id: "piece_justificative_#{type_de_piece_justificative.id}" }
|
||||||
.row
|
.row
|
||||||
%div.col-xs-6.depositaire-label= type_de_piece_justificative.libelle
|
.col-xs-6.depositaire-label= type_de_piece_justificative.libelle
|
||||||
%div.col-xs-1.comments-off= "-"
|
.col-xs-1.comments-off= "-"
|
||||||
%div.col-xs-5.despositaire-info
|
.col-xs-5.despositaire-info
|
||||||
- if type_de_piece_justificative.api_entreprise
|
- if type_de_piece_justificative.api_entreprise
|
||||||
%span.text-success Nous l'avons récupéré pour vous.
|
%span.text-success Nous l'avons récupéré pour vous.
|
||||||
- elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil?
|
- elsif !(@pj = @facade.dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)).nil?
|
||||||
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
|
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
|
||||||
%span{style:'margin-left:12px'}
|
%span{ style: 'margin-left: 12px;' }
|
||||||
\-
|
\-
|
||||||
- if @facade.dossier.pieces_justificatives.where(type_de_piece_justificative_id: type_de_piece_justificative.id).count > 1
|
- if @facade.dossier.pieces_justificatives.where(type_de_piece_justificative_id: type_de_piece_justificative.id).count > 1
|
||||||
= link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}" do
|
= link_to "", class: "historique", "data-toggle" => "modal", "data-target" => "#PJmodal", :type => "button", "data-modal_title" => 'formulaires', "data-modal_index" => "type_de_pj_#{type_de_piece_justificative.id}" do
|
||||||
%span.fa.fa-clock-o
|
%span.fa.fa-clock-o
|
||||||
- else
|
- else
|
||||||
= 'Pièce non fournie'
|
Pièce non fournie
|
||||||
|
|
||||||
- unless @facade.dossier.read_only?
|
- unless @facade.dossier.read_only?
|
||||||
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
|
- if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email))
|
||||||
|
|
|
@ -2,51 +2,51 @@
|
||||||
%h4
|
%h4
|
||||||
= @facade.entreprise.raison_sociale_or_name
|
= @facade.entreprise.raison_sociale_or_name
|
||||||
.row.split-row
|
.row.split-row
|
||||||
%div.col-xs-12.split-hr
|
.col-xs-12.split-hr
|
||||||
%div.row
|
.row
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
|
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Siret :
|
.col-xs-4.entreprise-label Siret :
|
||||||
%div.col-xs-8.entreprise-info= @facade.etablissement.siret
|
.col-xs-8.entreprise-info= @facade.etablissement.siret
|
||||||
- if @facade.etablissement.siret != @facade.entreprise.siret_siege_social
|
- if @facade.etablissement.siret != @facade.entreprise.siret_siege_social
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label SIRET siège social :
|
.col-xs-4.entreprise-label SIRET siège social :
|
||||||
%div.col-xs-8.entreprise-info= @facade.entreprise.siret_siege_social
|
.col-xs-8.entreprise-info= @facade.entreprise.siret_siege_social
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Forme juridique :
|
.col-xs-4.entreprise-label Forme juridique :
|
||||||
%div.col-xs-8.entreprise-info= @facade.entreprise.forme_juridique
|
.col-xs-8.entreprise-info= @facade.entreprise.forme_juridique
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Libellé naf :
|
.col-xs-4.entreprise-label Libellé naf :
|
||||||
%div.col-xs-8.entreprise-info= @facade.etablissement.libelle_naf
|
.col-xs-8.entreprise-info= @facade.etablissement.libelle_naf
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Code naf :
|
.col-xs-4.entreprise-label Code naf :
|
||||||
%div.col-xs-8.entreprise-info= @facade.etablissement.naf
|
.col-xs-8.entreprise-info= @facade.etablissement.naf
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Date de création :
|
.col-xs-4.entreprise-label Date de création :
|
||||||
%div.col-xs-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y"
|
.col-xs-8.entreprise-info= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y"
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Effectif organisation :
|
.col-xs-4.entreprise-label Effectif organisation :
|
||||||
%div.col-xs-8.entreprise-info= @facade.entreprise.effectif
|
.col-xs-8.entreprise-info= @facade.entreprise.effectif
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Code effectif :
|
.col-xs-4.entreprise-label Code effectif :
|
||||||
%div.col-xs-8.entreprise-info= @facade.entreprise.code_effectif_entreprise
|
.col-xs-8.entreprise-info= @facade.entreprise.code_effectif_entreprise
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Numéro TVA intracommunautaire :
|
.col-xs-4.entreprise-label Numéro TVA intracommunautaire :
|
||||||
%div.col-xs-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire
|
.col-xs-8.entreprise-info= @facade.entreprise.numero_tva_intracommunautaire
|
||||||
|
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Adresse :
|
.col-xs-4.entreprise-label Adresse :
|
||||||
%div.col-xs-8.entreprise-info
|
.col-xs-8.entreprise-info
|
||||||
- @facade.etablissement.adresse.split("\n").each do |line|
|
- @facade.etablissement.adresse.split("\n").each do |line|
|
||||||
= line
|
= line
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Capital social :
|
.col-xs-4.entreprise-label Capital social :
|
||||||
%div.col-xs-8.entreprise-info= @facade.entreprise.pretty_capital_social
|
.col-xs-8.entreprise-info= @facade.entreprise.pretty_capital_social
|
||||||
|
|
||||||
.row
|
.row
|
||||||
%div.col-xs-4.entreprise-label Exercices :
|
.col-xs-4.entreprise-label Exercices :
|
||||||
%div.col-xs-8.entreprise-info
|
.col-xs-8.entreprise-info
|
||||||
- @facade.etablissement.exercices.each_with_index do |exercice, index|
|
- @facade.etablissement.exercices.each_with_index do |exercice, index|
|
||||||
%strong
|
%strong
|
||||||
= "#{exercice.dateFinExercice.year} : "
|
= "#{exercice.dateFinExercice.year} : "
|
||||||
|
@ -54,6 +54,6 @@
|
||||||
%br
|
%br
|
||||||
|
|
||||||
.row.split-row
|
.row.split-row
|
||||||
%div.col-xs-12.split-hr
|
.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'
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
.col-xs-5
|
.col-xs-5
|
||||||
- if @facade.dossier.cerfa_available?
|
- if @facade.dossier.cerfa_available?
|
||||||
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
|
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
|
||||||
%span{style:'margin-left:12px'}
|
%span{ style: 'margin-left: 12px;' }
|
||||||
\-
|
\-
|
||||||
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
|
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
|
||||||
"data-target" => "#PJmodal",
|
"data-target" => "#PJmodal",
|
||||||
"data-toggle" => "modal",
|
"data-toggle" => "modal",
|
||||||
:type => "button",
|
:type => "button",
|
||||||
|
@ -34,9 +34,9 @@
|
||||||
-# = 'Pièce fournie'
|
-# = 'Pièce fournie'
|
||||||
-# - elsif gestionnaire_signed_in?
|
-# - elsif gestionnaire_signed_in?
|
||||||
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
|
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
|
||||||
%span{style:'margin-left:12px'}
|
%span{ style: 'margin-left: 12px;' }
|
||||||
\-
|
\-
|
||||||
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
|
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
|
||||||
"data-target" => "#PJmodal",
|
"data-target" => "#PJmodal",
|
||||||
"data-toggle" => "modal",
|
"data-toggle" => "modal",
|
||||||
:type => "button",
|
:type => "button",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.row{style: 'margin-top: -20px'}
|
.row{ style: 'margin-top: -20px;' }
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
= form_for @facade.dossier, url: { controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id }, remote: true do
|
= form_for @facade.dossier, url: { controller: 'backoffice/private_formulaires', action: :update, dossier_id: @facade.dossier.id }, remote: true do
|
||||||
= render partial: '/users/description/champs', locals: { private: true }
|
= render partial: '/users/description/champs', locals: { private: true }
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.default_data_block{style:'margin-top: 40px'}
|
.default_data_block{ style: 'margin-top: 40px;' }
|
||||||
.row.show-block.clearfix#messages
|
.row.show-block.clearfix#messages
|
||||||
.header
|
.header
|
||||||
.col-xs-10.title
|
.col-xs-10.title
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
%table.table
|
%table.table
|
||||||
- if @facade.procedure.cerfa_flag?
|
- if @facade.procedure.cerfa_flag?
|
||||||
%tr{ id: "piece_justificative_0" }
|
%tr{ id: "piece_justificative_0" }
|
||||||
%th{class:'col-lg-6'}
|
%th.col-lg-6
|
||||||
='Formulaire'
|
Formulaire
|
||||||
%td.col-lg-6.col-md-6.col-sm-6.col-xs-6
|
%td.col-lg-6.col-md-6.col-sm-6.col-xs-6
|
||||||
- if @facade.dossier.cerfa_available?
|
- if @facade.dossier.cerfa_available?
|
||||||
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
|
%a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter
|
||||||
%span{style:'margin-left:12px'}
|
%span{ style: 'margin-left: 12px;' }
|
||||||
\-
|
\-
|
||||||
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
|
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
|
||||||
"data-target" => "#PJmodal",
|
"data-target" => "#PJmodal",
|
||||||
"data-toggle" => "modal",
|
"data-toggle" => "modal",
|
||||||
:type => "button",
|
:type => "button",
|
||||||
"data-modal_title" => 'formulaires',
|
"data-modal_title" => 'formulaires',
|
||||||
"data-modal_index" => 'cerfa' }
|
"data-modal_index" => 'cerfa' }
|
||||||
- else
|
- else
|
||||||
= 'Pièce non fournie'
|
Pièce non fournie
|
||||||
|
|
||||||
- @facade.dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative|
|
- @facade.dossier.types_de_piece_justificative.order('order_place ASC').each do |type_de_piece_justificative|
|
||||||
%tr{ id: "piece_justificative_#{type_de_piece_justificative.id}" }
|
%tr{ id: "piece_justificative_#{type_de_piece_justificative.id}" }
|
||||||
|
@ -30,9 +30,9 @@
|
||||||
-# = 'Pièce fournie'
|
-# = 'Pièce fournie'
|
||||||
-# - elsif gestionnaire_signed_in?
|
-# - elsif gestionnaire_signed_in?
|
||||||
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
|
%a{ href: "#{@pj.content_url}", target: '_blank' } Consulter
|
||||||
%span{style:'margin-left:12px'}
|
%span{ style: 'margin-left: 12px;' }
|
||||||
\-
|
\-
|
||||||
%a.btn.fa.fa-timer{style:'color: black; padding-top: 0',
|
%a.btn.fa.fa-timer{ style: 'color: black; padding-top: 0;',
|
||||||
"data-target" => "#PJmodal",
|
"data-target" => "#PJmodal",
|
||||||
"data-toggle" => "modal",
|
"data-toggle" => "modal",
|
||||||
:type => "button",
|
:type => "button",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
%div.commentaire
|
.commentaire
|
||||||
.comment-header
|
.comment-header
|
||||||
= commentaire.header
|
= commentaire.header
|
||||||
.content
|
.content
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: dossier_facade.dossier.id, champ_id: dossier_facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do
|
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: dossier_facade.dossier.id, champ_id: dossier_facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do
|
||||||
|
|
||||||
%textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"}
|
%textarea.form-control.wysihtml5{ id: 'texte_commentaire', name: 'texte_commentaire', style: 'width: 100%; margin-bottom: 2%;', rows: '5', placeholder: "Commentaire" }
|
||||||
|
|
||||||
.row
|
.row
|
||||||
.col-md-6
|
.col-md-6
|
||||||
%h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier
|
%h4.text-primary{ style: 'margin-top: 0px;' } Ajouter un fichier
|
||||||
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px'
|
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px;'
|
||||||
|
|
||||||
.col-md-6.text-right
|
.col-md-6.text-right
|
||||||
%input#save-message.form-control.btn.btn-danger{ type: 'submit', value: 'ENVOYER' }
|
%input#save-message.form-control.btn.btn-danger{ type: 'submit', value: 'ENVOYER' }
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Mes informations
|
Mes informations
|
||||||
%br
|
%br
|
||||||
- unless @facade.entreprise.nil?
|
- unless @facade.entreprise.nil?
|
||||||
.center{style:'margin-left: -5%'}
|
.center{ style: 'margin-left: -5%;' }
|
||||||
Vous êtes authentifié avec le SIRET
|
Vous êtes authentifié avec le SIRET
|
||||||
|
|
||||||
%h3.text-success
|
%h3.text-success
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
.etape.etapes_informations.col-xs-9
|
.etape.etapes_informations.col-xs-9
|
||||||
.row
|
.row
|
||||||
- if @facade.entreprise.nil?
|
- if @facade.entreprise.nil?
|
||||||
#new_siret{style:'margin-left: 20%; margin-top: 5%'}
|
#new_siret{ style: 'margin-left: 20%; margin-top: 5%;' }
|
||||||
= form_for @facade.dossier, html: { class: 'form-inline' }, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f|
|
= form_for @facade.dossier, html: { class: 'form-inline' }, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f|
|
||||||
.form-group.form-group-lg
|
.form-group.form-group-lg
|
||||||
= f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret
|
= f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret
|
||||||
|
@ -26,15 +26,15 @@
|
||||||
#recap_info_entreprise
|
#recap_info_entreprise
|
||||||
= render partial: '/dossiers/infos_entreprise'
|
= render partial: '/dossiers/infos_entreprise'
|
||||||
|
|
||||||
%p#insee_infogreffe{style:'color:grey; float:right'}
|
%p#insee_infogreffe{ style: 'color: grey; float: right;' }
|
||||||
%i
|
%i
|
||||||
Informations récupérées auprès de l'INSEE et d'INFOGREFFE
|
Informations récupérées auprès de l'INSEE et d'INFOGREFFE
|
||||||
|
|
||||||
%br
|
%br
|
||||||
= form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f|
|
= form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f|
|
||||||
= f.hidden_field :id
|
= f.hidden_field :id
|
||||||
%label{ style:'font-weight:normal' }
|
%label{ style: 'font-weight: normal;' }
|
||||||
= f.check_box :autorisation_donnees
|
= f.check_box :autorisation_donnees
|
||||||
J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles.
|
J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles.
|
||||||
%br
|
%br
|
||||||
= f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante', disabled: :disabled
|
= f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float: right;', id: 'etape_suivante', disabled: :disabled
|
||||||
|
|
|
@ -21,20 +21,20 @@
|
||||||
%label
|
%label
|
||||||
%h4
|
%h4
|
||||||
Nom *
|
Nom *
|
||||||
= ff.text_field :nom, {class: 'form-control'}
|
= ff.text_field :nom, { class: 'form-control', required: true }
|
||||||
.form-group
|
.form-group
|
||||||
%label
|
%label
|
||||||
%h4
|
%h4
|
||||||
Prénom *
|
Prénom *
|
||||||
= ff.text_field :prenom, {class: 'form-control'}
|
= ff.text_field :prenom, { class: 'form-control', required: true }
|
||||||
.form-group
|
.form-group
|
||||||
%label
|
%label
|
||||||
%h4
|
%h4
|
||||||
Date de naissance *
|
Date de naissance *
|
||||||
= ff.date_field :birthdate, {class: 'form-control', placeholder: 'jj/mm/aaaa'}
|
= ff.date_field :birthdate, { class: 'form-control', placeholder: 'jj/mm/aaaa', required: true }
|
||||||
|
|
||||||
%p
|
%p
|
||||||
%label{ style:'font-weight:normal' }
|
%label{ style: 'font-weight: normal;' }
|
||||||
= f.check_box :autorisation_donnees
|
= f.check_box :autorisation_donnees
|
||||||
= " ".html_safe
|
= " ".html_safe
|
||||||
Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS.
|
Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS.
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
%h2.text-info
|
%h2.text-info
|
||||||
= image_tag('logo_FC_02_small.png', style: 'height: 55px')
|
= image_tag('logo_FC_02_small.png', style: 'height: 55px;')
|
||||||
France Connect - Particulier
|
France Connect - Particulier
|
||||||
|
|
||||||
%h3 Nouvelle connexion
|
%h3 Nouvelle connexion
|
||||||
%h4.text-warning{style:'margin-left: 20px'} Email déjà utilisé
|
%h4.text-warning{ style: 'margin-left: 20px;' } Email déjà utilisé
|
||||||
|
|
||||||
%br
|
%br
|
||||||
%p
|
%p
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%h2.text-info
|
%h2.text-info
|
||||||
= image_tag('logo_FC_02_small.png', style: 'height: 55px')
|
= image_tag('logo_FC_02_small.png', style: 'height: 55px;')
|
||||||
France Connect - Particulier
|
France Connect - Particulier
|
||||||
|
|
||||||
%h3 Nouvelle connexion
|
%h3 Nouvelle connexion
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
%div.dropdown-menu#credentials
|
.dropdown-menu#credentials
|
||||||
%div.description= t("utils.deconnexion")
|
.description= t("utils.deconnexion")
|
||||||
= @current_gestionnaire.email if @current_gestionnaire
|
= @current_gestionnaire.email if @current_gestionnaire
|
||||||
= @current_user.email if @current_user
|
= @current_user.email if @current_user
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
= submit_tag 'Etape suivante', class: %w(btn btn btn-info), style: 'float:right', id: 'etape_suivante', data: { disable_with: 'Etape suivante', submit: true}
|
= submit_tag 'Etape suivante', class: %w(btn btn btn-info), style: 'float: right;', id: 'etape_suivante', data: { disable_with: 'Etape suivante', submit: true }
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
\-
|
\-
|
||||||
= link_to 'Nouveautés', 'https://github.com/sgmap/tps/releases', target: '_blank'
|
= link_to 'Nouveautés', 'https://github.com/sgmap/tps/releases', target: '_blank'
|
||||||
\-
|
\-
|
||||||
|
= link_to 'Statistiques', stats_path
|
||||||
|
\-
|
||||||
= link_to 'CGU / Mentions légales', cgu_path
|
= link_to 'CGU / Mentions légales', cgu_path
|
||||||
\-
|
\-
|
||||||
= link_to 'Contact', "mailto:"+t('dynamics.contact_email')
|
= link_to 'Contact', "mailto:"+t('dynamics.contact_email')
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
= "<!--[if lt IE 10]>".html_safe
|
= "<!--[if lt IE 10]>".html_safe
|
||||||
|
|
||||||
%div.center{style:'width: 100%; background-color: white; position: fixed; top:0; left:0; z-index: 100000'}
|
.center{ style: 'width: 100%; background-color: white; position: fixed; top: 0; left: 0; z-index: 100000;' }
|
||||||
%h3.text-danger
|
%h3.text-danger
|
||||||
%b
|
%b
|
||||||
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
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
%div{style: 'float:right'}
|
%div{ style: 'float: right;' }
|
||||||
%a.btn{ href: "/users/dossiers/#{@dossier.id}/recapitulatif" } Retour
|
%a.btn{ href: "/users/dossiers/#{@dossier.id}/recapitulatif" } Retour
|
||||||
= submit_tag 'Modification terminée', class: %w(btn btn btn-info), id: 'modification_terminee', data: { disable_with: 'Modification terminée', submit: true }
|
= submit_tag 'Modification terminée', class: %w(btn btn btn-info), id: 'modification_terminee', data: { disable_with: 'Modification terminée', submit: true }
|
||||||
|
|
|
@ -29,12 +29,12 @@
|
||||||
|
|
||||||
|
|
||||||
%div#wrap
|
%div#wrap
|
||||||
%div.row
|
.row
|
||||||
%div#header.navbar
|
%div#header.navbar
|
||||||
= render partial: "layouts/navbar"
|
= render partial: "layouts/navbar"
|
||||||
%div.row.no-margin
|
.row.no-margin
|
||||||
- if RenderPartialService.left_panel_exist? @left_pannel_url
|
- if RenderPartialService.left_panel_exist? @left_pannel_url
|
||||||
%div.col-xs-2#left-panel
|
.col-xs-2#left-panel
|
||||||
- if gestionnaire_signed_in?
|
- if gestionnaire_signed_in?
|
||||||
#search-block
|
#search-block
|
||||||
= render partial: 'layouts/left_panels/search_area'
|
= render partial: 'layouts/left_panels/search_area'
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%div#first-block
|
%div#first-block
|
||||||
%div.en-cours
|
.en-cours
|
||||||
%b
|
%b
|
||||||
= dossier_count = current_administrateur.procedures.count
|
= dossier_count = current_administrateur.procedures.count
|
||||||
= ("Procedures".pluralize(dossier_count)).upcase
|
= ("Procedures".pluralize(dossier_count)).upcase
|
||||||
|
@ -7,27 +7,27 @@
|
||||||
%div#action-block
|
%div#action-block
|
||||||
|
|
||||||
%div#menu-block
|
%div#menu-block
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
#procedure_list
|
#procedure_list
|
||||||
%a{ :href => "#{url_for :admin_procedures_draft}", id: "draft-procedures" }
|
%a{ :href => "#{url_for :admin_procedures_draft}", id: "draft-procedures" }
|
||||||
%div.procedure_list_element{class: @draft_class}
|
.procedure_list_element{ class: @draft_class }
|
||||||
= "Brouillons"
|
Brouillons
|
||||||
.badge.progress-bar-default
|
.badge.progress-bar-default
|
||||||
= current_administrateur.procedures.where(published: false, archived: false).count
|
= current_administrateur.procedures.where(published: false, archived: false).count
|
||||||
|
|
||||||
%a{ :href => "#{url_for :admin_procedures}", id: "active-procedures" }
|
%a{ :href => "#{url_for :admin_procedures}", id: "active-procedures" }
|
||||||
%div.procedure_list_element{class: @active_class}
|
.procedure_list_element{ class: @active_class }
|
||||||
= "Actives"
|
Actives
|
||||||
.badge.progress-bar-success
|
.badge.progress-bar-success
|
||||||
= current_administrateur.procedures.where(published: true, archived: false).count
|
= current_administrateur.procedures.where(published: true, archived: false).count
|
||||||
|
|
||||||
%a{ :href => "#{url_for :admin_procedures_archived}", id: "archived-procedures" }
|
%a{ :href => "#{url_for :admin_procedures_archived}", id: "archived-procedures" }
|
||||||
%div.procedure_list_element{class: @archived_class}
|
.procedure_list_element{ class: @archived_class }
|
||||||
="Archivées"
|
Archivées
|
||||||
.badge.progress-bar-purple
|
.badge.progress-bar-purple
|
||||||
= current_administrateur.procedures.where(archived: true).count
|
= current_administrateur.procedures.where(archived: true).count
|
||||||
|
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
|
|
||||||
|
|
||||||
%div#infos-block
|
%div#infos-block
|
||||||
|
|
|
@ -1,51 +1,51 @@
|
||||||
%div#first-block
|
%div#first-block
|
||||||
%div.en-cours
|
.en-cours
|
||||||
- unless @procedure.logo.blank?
|
- unless @procedure.logo.blank?
|
||||||
= image_tag @procedure.decorate.logo_img, style: 'width: 30px'
|
= image_tag @procedure.decorate.logo_img, style: 'width: 30px;'
|
||||||
%b
|
%b
|
||||||
= @procedure.libelle
|
= @procedure.libelle
|
||||||
|
|
||||||
%div#action-block
|
%div#action-block
|
||||||
|
|
||||||
%div#menu-block
|
%div#menu-block
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
#procedure_list
|
#procedure_list
|
||||||
%a{ :href => "#{url_for admin_procedure_path(@procedure)}", id: 'onglet-infos' }
|
%a{ :href => "#{url_for admin_procedure_path(@procedure)}", id: 'onglet-infos' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Informations')}
|
.procedure_list_element{ class: ('active' if active == 'Informations') }
|
||||||
Informations
|
Informations
|
||||||
|
|
||||||
%a{ :href => "#{url_for admin_procedure_accompagnateurs_path(@procedure)}", id: 'onglet-accompagnateurs' }
|
%a{ :href => "#{url_for admin_procedure_accompagnateurs_path(@procedure)}", id: 'onglet-accompagnateurs' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Accompagnateurs')}
|
.procedure_list_element{ class: ('active' if active == 'Accompagnateurs') }
|
||||||
= t('dynamics.admin.procedure.onglets.accompagnateurs')
|
= t('dynamics.admin.procedure.onglets.accompagnateurs')
|
||||||
|
|
||||||
%a{ :href => "#{url_for edit_admin_procedure_path(@procedure)}", id: 'onglet-description' }
|
%a{ :href => "#{url_for edit_admin_procedure_path(@procedure)}", id: 'onglet-description' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Description')}
|
.procedure_list_element{ class: ('active' if active == 'Description') }
|
||||||
Description
|
Description
|
||||||
|
|
||||||
- unless @procedure.locked?
|
- unless @procedure.locked?
|
||||||
%a{ :href => "#{url_for admin_procedure_types_de_champ_path(@procedure)}", id: 'onglet-champs' }
|
%a{ :href => "#{url_for admin_procedure_types_de_champ_path(@procedure)}", id: 'onglet-champs' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Champs')}
|
.procedure_list_element{ class: ('active' if active == 'Champs') }
|
||||||
Champs
|
Champs
|
||||||
|
|
||||||
- unless @procedure.locked?
|
- unless @procedure.locked?
|
||||||
%a{ :href => "#{url_for admin_procedure_pieces_justificatives_path(@procedure)}", id: 'onglet-pieces' }
|
%a{ :href => "#{url_for admin_procedure_pieces_justificatives_path(@procedure)}", id: 'onglet-pieces' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Pieces')}
|
.procedure_list_element{ class: ('active' if active == 'Pieces') }
|
||||||
Pièces jointes
|
Pièces jointes
|
||||||
|
|
||||||
- unless @procedure.locked?
|
- unless @procedure.locked?
|
||||||
%a{ :href => "#{url_for admin_procedure_types_de_champ_private_path(@procedure)}", id: 'onglet-private-champs' }
|
%a{ :href => "#{url_for admin_procedure_types_de_champ_private_path(@procedure)}", id: 'onglet-private-champs' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Champs privés')}
|
.procedure_list_element{ class: ('active' if active == 'Champs privés') }
|
||||||
Champs privés
|
Champs privés
|
||||||
|
|
||||||
%a{ :href => "#{url_for admin_procedure_mail_templates_path(@procedure)}", id: 'onglet-inemailsfos' }
|
%a{ :href => "#{url_for admin_procedure_mail_templates_path(@procedure)}", id: 'onglet-inemailsfos' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'E-mails')}
|
.procedure_list_element{ class: ('active' if active == 'E-mails') }
|
||||||
E-mails
|
E-mails
|
||||||
|
|
||||||
%a{ :href => "#{url_for admin_procedure_previsualisation_path(@procedure)}", id: 'onglet-preview' }
|
%a{ :href => "#{url_for admin_procedure_previsualisation_path(@procedure)}", id: 'onglet-preview' }
|
||||||
%div.procedure_list_element{class: ('active' if active == 'Prévisualisation')}
|
.procedure_list_element{ class: ('active' if active == 'Prévisualisation') }
|
||||||
Prévisualisation
|
Prévisualisation
|
||||||
|
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
|
|
||||||
|
|
||||||
%div#infos-block
|
%div#infos-block
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
%div#first-block
|
%div#first-block
|
||||||
%div.dossiers-en-cours
|
.dossiers-en-cours
|
||||||
.count= @facade_data_view.total_dossier_follow
|
.count= @facade_data_view.total_dossier_follow
|
||||||
.text= "SUIVIS"
|
.text SUIVIS
|
||||||
%div.nouveaux-dossiers
|
.nouveaux-dossiers
|
||||||
.count= @facade_data_view.total_new_dossier
|
.count= @facade_data_view.total_new_dossier
|
||||||
.text= "NOUVEAUX"
|
.text NOUVEAUX
|
||||||
%div.nouvelles-notifications
|
.nouvelles-notifications
|
||||||
.count= @facade_data_view.dossiers_with_unread_notifications.count
|
.count= @facade_data_view.dossiers_with_unread_notifications.count
|
||||||
.text= "MODIFIÉS"
|
.text MODIFIÉS
|
||||||
|
|
||||||
%div#action-block
|
%div#action-block
|
||||||
|
|
||||||
%div#menu-block
|
%div#menu-block
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
#switch-buttons
|
#switch-buttons
|
||||||
#switch-procedures.active Procédures
|
#switch-procedures.active Procédures
|
||||||
#switch-notifications Notifications
|
#switch-notifications Notifications
|
||||||
|
|
||||||
%div#infos-block
|
%div#infos-block
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
#procedure_list
|
#procedure_list
|
||||||
- @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure|
|
- @facade_data_view.gestionnaire_procedures_name_and_id_list.each do |procedure|
|
||||||
|
|
||||||
= link_to backoffice_dossiers_procedure_path(procedure[:id]), { title: procedure[:libelle] } do
|
= link_to backoffice_dossiers_procedure_path(procedure[:id]), { title: procedure[:libelle] } do
|
||||||
%div.procedure_list_element{ class: ('active' if procedure[:id] == @facade_data_view.procedure.id rescue '') }
|
.procedure_list_element{ class: ('active' if procedure[:id] == @facade_data_view.procedure.id rescue '') }
|
||||||
= truncate(procedure[:libelle], length: 50)
|
= truncate(procedure[:libelle], length: 50)
|
||||||
- total_new = @facade_data_view.new_dossier_number procedure[:id]
|
- total_new = @facade_data_view.new_dossier_number procedure[:id]
|
||||||
- if total_new > 0
|
- if total_new > 0
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
= procedure[:unread_notifications]
|
= procedure[:unread_notifications]
|
||||||
#notifications_list.hidden
|
#notifications_list.hidden
|
||||||
- if @facade_data_view.dossiers_with_unread_notifications.empty?
|
- if @facade_data_view.dossiers_with_unread_notifications.empty?
|
||||||
.no-notification= "Aucune notification pour le moment."
|
.no-notification Aucune notification pour le moment.
|
||||||
- else
|
- else
|
||||||
- @facade_data_view.dossiers_with_unread_notifications.each do |dossier|
|
- @facade_data_view.dossiers_with_unread_notifications.each do |dossier|
|
||||||
= link_to backoffice_dossier_path(dossier.id) do
|
= link_to backoffice_dossier_path(dossier.id) do
|
||||||
|
|
|
@ -1,53 +1,53 @@
|
||||||
%div#cgu_menu_block
|
%div#cgu_menu_block
|
||||||
#procedure_list{ style: 'margin-top: 0;' }
|
#procedure_list{ style: 'margin-top: 0;' }
|
||||||
= link_to cgu_path(:anchor => "editeur") do
|
= link_to cgu_path(:anchor => "editeur") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Editeur
|
Editeur
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "ingenieurie_hebergement") do
|
= link_to cgu_path(:anchor => "ingenieurie_hebergement") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Ingénierie et hébergement informatique
|
Ingénierie et hébergement informatique
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "object_website") do
|
= link_to cgu_path(:anchor => "object_website") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Object du site internet
|
Object du site internet
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "acteurs") do
|
= link_to cgu_path(:anchor => "acteurs") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Acteurs de TPS
|
Acteurs de TPS
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "CNIL") do
|
= link_to cgu_path(:anchor => "CNIL") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Déclaration CNIL
|
Déclaration CNIL
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "data_collects") do
|
= link_to cgu_path(:anchor => "data_collects") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Données collectées et responsabilité des organismes utilisateurs
|
Données collectées et responsabilité des organismes utilisateurs
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "individual_data") do
|
= link_to cgu_path(:anchor => "individual_data") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Traitement des données à caractère personnel
|
Traitement des données à caractère personnel
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "entreprise_information") do
|
= link_to cgu_path(:anchor => "entreprise_information") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Règles relatives aux informations sur les entreprises mises à disposibition
|
Règles relatives aux informations sur les entreprises mises à disposibition
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "reproduction") do
|
= link_to cgu_path(:anchor => "reproduction") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Droit de reproduction
|
Droit de reproduction
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "propriete_intellectuelle") do
|
= link_to cgu_path(:anchor => "propriete_intellectuelle") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Propriété intellectuelle
|
Propriété intellectuelle
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "navigateurs") do
|
= link_to cgu_path(:anchor => "navigateurs") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Logiciels nécessaires à la consultation
|
Logiciels nécessaires à la consultation
|
||||||
|
|
||||||
= link_to cgu_path(:anchor => "conception") do
|
= link_to cgu_path(:anchor => "conception") do
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
Conception et Réalisation
|
Conception et Réalisation
|
||||||
|
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
|
|
||||||
%div.procedure_list_element
|
.procedure_list_element
|
||||||
|
|
|
@ -1,46 +1,46 @@
|
||||||
%div#first-block
|
%div#first-block
|
||||||
%div.en-cours
|
.en-cours
|
||||||
= dossier_count = current_user.dossiers.count
|
= dossier_count = current_user.dossiers.count
|
||||||
= ("Dossier".pluralize(dossier_count)).upcase
|
= ("Dossier".pluralize(dossier_count)).upcase
|
||||||
%br
|
%br
|
||||||
= "EN COURS"
|
EN COURS
|
||||||
|
|
||||||
%div#action-block
|
%div#action-block
|
||||||
|
|
||||||
%div#menu-block
|
%div#menu-block
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
#procedure_list
|
#procedure_list
|
||||||
- unless current_user.dossiers.count == 0
|
- unless current_user.dossiers.count == 0
|
||||||
%a{ :href => "#{url_for users_dossiers_path(liste: 'brouillon')}", 'data-toggle' => :tooltip, title: 'Les dossiers jamais proposés à la relecture.' }
|
%a{ :href => "#{url_for users_dossiers_path(liste: 'brouillon')}", 'data-toggle' => :tooltip, title: 'Les dossiers jamais proposés à la relecture.' }
|
||||||
%div.procedure_list_element{ class: @dossiers_list_facade.brouillon_class, id: 'brouillon' }
|
.procedure_list_element{ class: @dossiers_list_facade.brouillon_class, id: 'brouillon' }
|
||||||
= "Brouillons"
|
Brouillons
|
||||||
.badge.progress-bar-default
|
.badge.progress-bar-default
|
||||||
= @dossiers_list_facade.brouillon_total
|
= @dossiers_list_facade.brouillon_total
|
||||||
|
|
||||||
%a{ :href => "#{url_for users_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.' }
|
%a{ :href => "#{url_for users_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.' }
|
||||||
%div.procedure_list_element{ class: @dossiers_list_facade.en_construction_class, id: 'a_traiter' }
|
.procedure_list_element{ class: @dossiers_list_facade.en_construction_class, id: 'a_traiter' }
|
||||||
= "En construction"
|
En construction
|
||||||
.badge.progress-bar-danger
|
.badge.progress-bar-danger
|
||||||
= @dossiers_list_facade.en_construction_total
|
= @dossiers_list_facade.en_construction_total
|
||||||
|
|
||||||
%a{ :href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.' }
|
%a{ :href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.' }
|
||||||
%div.procedure_list_element{ class: @dossiers_list_facade.en_instruction_class, id: 'en_instruction' }
|
.procedure_list_element{ class: @dossiers_list_facade.en_instruction_class, id: 'en_instruction' }
|
||||||
="En instruction"
|
En instruction
|
||||||
.badge.progress-bar-default
|
.badge.progress-bar-default
|
||||||
= @dossiers_list_facade.en_instruction_total
|
= @dossiers_list_facade.en_instruction_total
|
||||||
|
|
||||||
%a{ :href => "#{url_for users_dossiers_path(liste: 'termine')}", 'data-toggle' => :tooltip, title: 'Les dossiers cloturés qui peuvent être "Accepté", "Refusé" ou "Sans suite".' }
|
%a{ :href => "#{url_for users_dossiers_path(liste: 'termine')}", 'data-toggle' => :tooltip, title: 'Les dossiers cloturés qui peuvent être "Accepté", "Refusé" ou "Sans suite".' }
|
||||||
%div.procedure_list_element{ class: @dossiers_list_facade.termine_class, id: 'termine' }
|
.procedure_list_element{ class: @dossiers_list_facade.termine_class, id: 'termine' }
|
||||||
= "Terminé"
|
Terminé
|
||||||
.badge.progress-bar-success
|
.badge.progress-bar-success
|
||||||
= @dossiers_list_facade.termine_total
|
= @dossiers_list_facade.termine_total
|
||||||
|
|
||||||
%a{ :href => "#{url_for users_dossiers_path(liste: 'invite')}" }
|
%a{ :href => "#{url_for users_dossiers_path(liste: 'invite')}" }
|
||||||
%div.procedure_list_element{ class: @dossiers_list_facade.invite_class, id: 'invite' }
|
.procedure_list_element{ class: @dossiers_list_facade.invite_class, id: 'invite' }
|
||||||
= "Invitation"
|
Invitation
|
||||||
.badge.progress-bar-warning
|
.badge.progress-bar-warning
|
||||||
= @dossiers_list_facade.invite_total
|
= @dossiers_list_facade.invite_total
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
|
|
||||||
|
|
||||||
%div#infos-block
|
%div#infos-block
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
%div#first-block
|
%div#first-block
|
||||||
%div.en-cours
|
.en-cours
|
||||||
%h2 Récapitulatif
|
%h2 Récapitulatif
|
||||||
%div.infos
|
.infos
|
||||||
%div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s
|
%div= t('dynamics.dossiers.numéro') + @facade.dossier.id.to_s
|
||||||
|
|
||||||
%div#menu-block
|
%div#menu-block
|
||||||
|
|
||||||
%div#infos-block
|
%div#infos-block
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
%div.dossier-state= @facade.dossier.display_state
|
.dossier-state= @facade.dossier.display_state
|
||||||
%div.split-hr-left
|
.split-hr-left
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
.col-xs-7.main-info
|
.col-xs-7.main-info
|
||||||
= @facade_data_view.procedure_id.nil? ? "Tous les dossiers" : @facade_data_view.procedure.libelle
|
= @facade_data_view.procedure_id.nil? ? "Tous les dossiers" : @facade_data_view.procedure.libelle
|
||||||
%div.col-lg-3.col-md-3.col-sm-3.col-xs-3.options
|
.col-lg-3.col-md-3.col-sm-3.col-xs-3.options
|
||||||
%div.row
|
.row
|
||||||
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
||||||
%a.button_navbar#pref_list_dossier_open_action{ href: '#', type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
|
%a.button_navbar#pref_list_dossier_open_action{ href: '#', type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
|
||||||
%i.fa.fa-pencil
|
%i.fa.fa-pencil
|
||||||
Modifier le tableau
|
Modifier le tableau
|
||||||
%span.caret-right
|
%span.caret-right
|
||||||
%div.row
|
.row
|
||||||
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
||||||
= render partial: "dossiers/download_dossiers"
|
= render partial: "dossiers/download_dossiers"
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
.col-xs-7.main-info
|
.col-xs-7.main-info
|
||||||
%span{ 'data-toggle' => :tooltip, "data-placement" => :bottom, title: @facade.dossier.procedure.libelle }
|
%span{ 'data-toggle' => :tooltip, "data-placement" => :bottom, title: @facade.dossier.procedure.libelle }
|
||||||
= @facade.dossier.procedure.libelle.truncate(60)
|
= @facade.dossier.procedure.libelle.truncate(60)
|
||||||
%div.col-lg-3.col-md-3.col-sm-3.col-xs-3.options
|
.col-lg-3.col-md-3.col-sm-3.col-xs-3.options
|
||||||
%div.row.centered-option
|
.row.centered-option
|
||||||
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
||||||
%div#invitations.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
|
%div#invitations.dropdown-toggle{ 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false }
|
||||||
%i.fa.fa-user
|
%i.fa.fa-user
|
||||||
= t('utils.involved')
|
= t('utils.involved')
|
||||||
.badge.progress-bar-info
|
.badge.progress-bar-info
|
||||||
= @facade.dossier.invites.count
|
= @facade.dossier.invites.count
|
||||||
%div.dropdown-menu.dropdown-menu-right.dropdown-pannel
|
.dropdown-menu.dropdown-menu-right.dropdown-pannel
|
||||||
%h4= t('dynamics.dossiers.followers.title')
|
%h4= t('dynamics.dossiers.followers.title')
|
||||||
%ul
|
%ul
|
||||||
- unless @facade.followers.empty?
|
- unless @facade.followers.empty?
|
||||||
|
|
53
app/views/stats/index.html.haml
Normal file
53
app/views/stats/index.html.haml
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
= javascript_include_tag 'https://code.highcharts.com/highcharts.js', 'chartkick'
|
||||||
|
|
||||||
|
.statistiques
|
||||||
|
|
||||||
|
%h1.new-h1 Statistiques
|
||||||
|
|
||||||
|
.stat-cards
|
||||||
|
|
||||||
|
.stat-card.stat-card-half.pull-left
|
||||||
|
%ul.segmented-control.pull-right
|
||||||
|
%li.segmented-control-item.segmented-control-item-active{ :onclick => "TPS.toggleChart(event, '.cumulative-procedures-chart');" }
|
||||||
|
Cumul
|
||||||
|
%li.segmented-control-item{ :onclick => "TPS.toggleChart(event, '.flux-procedures-chart');" }
|
||||||
|
Flux (30 jours)
|
||||||
|
%span.stat-card-title.pull-left Démarches dématérialisées
|
||||||
|
.clearfix
|
||||||
|
|
||||||
|
.chart-container
|
||||||
|
.chart.cumulative-procedures-chart
|
||||||
|
= area_chart @procedures_cumulative,
|
||||||
|
:colors => ["rgba(61, 149, 236, 1)"]
|
||||||
|
.chart.flux-procedures-chart.hidden
|
||||||
|
= line_chart @procedures_30_days_flow,
|
||||||
|
:colors => ["rgba(61, 149, 236, 1)"]
|
||||||
|
|
||||||
|
.stat-card.stat-card-half.pull-left
|
||||||
|
%ul.segmented-control.pull-right
|
||||||
|
%li.segmented-control-item.segmented-control-item-active{ :onclick => "TPS.toggleChart(event, '.cumulative-dossiers-chart');" }
|
||||||
|
Cumul
|
||||||
|
%li.segmented-control-item{ :onclick => "TPS.toggleChart(event, '.flux-dossiers-chart');" }
|
||||||
|
Flux (30 jours)
|
||||||
|
%span.stat-card-title.pull-left Dossiers déposés
|
||||||
|
.clearfix
|
||||||
|
|
||||||
|
.chart-container
|
||||||
|
.chart.cumulative-dossiers-chart
|
||||||
|
= area_chart @dossiers_cumulative,
|
||||||
|
:colors => ["rgba(61, 149, 236, 1)"]
|
||||||
|
.chart.flux-dossiers-chart.hidden
|
||||||
|
= line_chart @dossiers_30_days_flow,
|
||||||
|
:colors => ["rgba(61, 149, 236, 1)"]
|
||||||
|
|
||||||
|
.stat-card.stat-card-half.big-number-card.pull-left
|
||||||
|
%span.big-number-card-title TOTAL DÉMARCHES DÉMATÉRIALISÉES
|
||||||
|
%span.big-number-card-number
|
||||||
|
= @procedures_count
|
||||||
|
|
||||||
|
.stat-card.stat-card-half.big-number-card.pull-left
|
||||||
|
%span.big-number-card-title TOTAL DOSSIERS DÉPOSÉS
|
||||||
|
%span.big-number-card-number
|
||||||
|
= @dossiers_count
|
||||||
|
|
||||||
|
.clearfix
|
|
@ -1,17 +1,17 @@
|
||||||
.row#carto_page
|
.row#carto_page
|
||||||
.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
.col-lg-12.col-md-12.col-sm-12.col-xs-12
|
||||||
%h2
|
%h2
|
||||||
='Localisation'
|
Localisation
|
||||||
%h4.text-primary
|
%h4.text-primary
|
||||||
Positionnez-vous et dessinez sur la carte la zone d'action de votre demande.
|
Positionnez-vous et dessinez sur la carte la zone d'action de votre demande.
|
||||||
%br
|
%br
|
||||||
|
|
||||||
.content{style:'margin-bottom:60px'}
|
.content{ style: 'margin-bottom: 60px;' }
|
||||||
%button#new.btn.btn-md.btn-success{ type: 'button' }
|
%button#new.btn.btn-md.btn-success{ type: 'button' }
|
||||||
%i.fa.fa-pencil
|
%i.fa.fa-pencil
|
||||||
Ajouter une zone
|
Ajouter une zone
|
||||||
|
|
||||||
%span#search_by_address{style: 'margin-left: 20px'}
|
%span#search_by_address{ style: 'margin-left: 20px;' }
|
||||||
%input.form-control{ type: :address, placeholder: 'Rechercher une adresse' }
|
%input.form-control{ type: :address, placeholder: 'Rechercher une adresse' }
|
||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
.container#description_page
|
.container#description_page
|
||||||
- unless @dossier.procedure.lien_notice.blank?
|
- unless @dossier.procedure.lien_notice.blank?
|
||||||
#lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px; z-index: 200'}
|
#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.panel-info{ style: 'margin-bottom: 0;' }
|
||||||
.panel-body.center
|
.panel-body.center
|
||||||
.row
|
.row
|
||||||
.col-xs-1
|
.col-xs-1
|
||||||
.fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'}
|
.fa.fa-info-circle.text-info{ style: 'font-size: 2em; margin-top: 20%;' }
|
||||||
.col-xs-10{style:'padding-right: 0px'}
|
.col-xs-10{ style: 'padding-right: 0px;' }
|
||||||
%b
|
%b
|
||||||
= link_to 'Accéder au guide', @dossier.procedure.lien_notice, { target: '_blank' }
|
= link_to 'Accéder au guide', @dossier.procedure.lien_notice, { target: '_blank' }
|
||||||
pour remplir pour votre dossier
|
pour remplir pour votre dossier
|
||||||
|
@ -25,14 +25,15 @@
|
||||||
%h3 Pièces jointes
|
%h3 Pièces jointes
|
||||||
|
|
||||||
|
|
||||||
//TODO a refactorer
|
-# TODO a refactorer
|
||||||
.row
|
.row
|
||||||
.col-lg-8
|
.col-lg-8
|
||||||
= render partial: 'users/description/pieces_justificatives', locals: { dossier: @dossier }
|
= render partial: 'users/description/pieces_justificatives', locals: { dossier: @dossier }
|
||||||
|
|
||||||
-route = Rails.application.routes.recognize_path(request.referrer) # WTF ?
|
-# WTF ?
|
||||||
|
- route = Rails.application.routes.recognize_path(request.referrer)
|
||||||
- unless route[:controller].match('admin')
|
- unless route[:controller].match('admin')
|
||||||
%div{style: 'text-align:right'}
|
%div{ style: 'text-align: right;' }
|
||||||
%h6 Tous les champs portant un * sont obligatoires.
|
%h6 Tous les champs portant un * sont obligatoires.
|
||||||
|
|
||||||
- if !@dossier.can_be_initiated?
|
- if !@dossier.can_be_initiated?
|
||||||
|
@ -41,5 +42,5 @@
|
||||||
- elsif !@dossier.draft?
|
- elsif !@dossier.draft?
|
||||||
= render partial: '/layouts/modifications_terminees'
|
= render partial: '/layouts/modifications_terminees'
|
||||||
- else
|
- else
|
||||||
= submit_tag 'Soumettre mon dossier', id: 'suivant', name: 'submit[nouveaux]', class: 'btn btn btn-success', style: 'float:right', disabled: @procedure.archived?, data: { disable_with: 'Soumettre votre dossier', submit: true}
|
= submit_tag 'Soumettre mon dossier', id: 'suivant', name: 'submit[nouveaux]', class: 'btn btn btn-success', style: 'float: right;', disabled: @procedure.archived?, data: { disable_with: 'Soumettre votre dossier', submit: true }
|
||||||
= submit_tag 'Enregistrer un brouillon', id: 'brouillon', name: 'submit[brouillon]', class: 'btn btn-xs btn-default', style: 'float:right; margin-right: 10px; margin-top: 6px', disabled: @procedure.archived?, data: {disable_with: 'Enregistrer un brouillon', submit: true}
|
= submit_tag 'Enregistrer un brouillon', id: 'brouillon', name: 'submit[brouillon]', class: 'btn btn-xs btn-default', style: 'float: right; margin-right: 10px; margin-top: 6px;', disabled: @procedure.archived?, data: { disable_with: 'Enregistrer un brouillon', submit: true }
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
'data-provide' => champ.data_provide,
|
'data-provide' => champ.data_provide,
|
||||||
'data-date-format' => champ.data_date_format }
|
'data-date-format' => champ.data_date_format }
|
||||||
|
|
||||||
%select.form-control{name:"time_hour['#{champ.id}']", style: 'margin-left: 5px', id:"time_hour_#{champ.id}"}
|
%select.form-control{ name: "time_hour['#{champ.id}']", style: 'margin-left: 5px;', id: "time_hour_#{champ.id}" }
|
||||||
- (0..23).each do |num|
|
- (0..23).each do |num|
|
||||||
- num = "%.2i" %num
|
- num = "%.2i" %num
|
||||||
%option{ value: num, selected: (:selected if champ.same_hour?(num)) }
|
%option{ value: num, selected: (:selected if champ.same_hour?(num)) }
|
||||||
|
|
21
app/views/users/description/champs/_dossier_link.html.haml
Normal file
21
app/views/users/description/champs/_dossier_link.html.haml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
- dossier = Dossier.find_by(id: champ.value)
|
||||||
|
- show_procedure_libelle = dossier ? true : false
|
||||||
|
- show_warning = !show_procedure_libelle && champ.value.present?
|
||||||
|
- procedure_libelle = dossier.nil? ? '' : dossier.procedure.libelle
|
||||||
|
|
||||||
|
.dossier-link
|
||||||
|
%input.form-control{ name: "champs['#{ champ.id }']",
|
||||||
|
placeholder: champ.libelle,
|
||||||
|
id: "champs_#{ champ.id }",
|
||||||
|
value: champ.value,
|
||||||
|
type: 'number',
|
||||||
|
'autocomplete' => 'off',
|
||||||
|
'data-type' => 'dossier-link' }
|
||||||
|
|
||||||
|
.help-block
|
||||||
|
%p.text-info{ style: show_procedure_libelle ? nil : 'display: none;' }
|
||||||
|
ce dossier répond à la procédure :
|
||||||
|
%br
|
||||||
|
%span.procedureLibelle= procedure_libelle
|
||||||
|
%p.text-warning{ style: show_warning ? nil : 'display: none;' }
|
||||||
|
ce dossier est inconnu
|
|
@ -1,6 +1,7 @@
|
||||||
- if champ.drop_down_list && champ.drop_down_list.options.any?
|
- if champ.drop_down_list && champ.drop_down_list.options.any?
|
||||||
= select_tag("champs['#{champ.id}']",
|
= select_tag("champs['#{champ.id}']",
|
||||||
options_for_select(champ.drop_down_list.options, selected: champ.drop_down_list.selected_options(champ),
|
options_for_select(champ.drop_down_list.options,
|
||||||
|
selected: champ.drop_down_list.selected_options(champ),
|
||||||
disabled: champ.drop_down_list.disabled_options),
|
disabled: champ.drop_down_list.disabled_options),
|
||||||
multiple: champ.drop_down_list.multiple,
|
multiple: champ.drop_down_list.multiple,
|
||||||
class: champ.drop_down_list.multiple ? 'select2' : nil)
|
class: champ.drop_down_list.multiple ? 'select2' : nil)
|
||||||
|
|
|
@ -41,6 +41,9 @@
|
||||||
- elsif champ.type_champ == 'departements'
|
- elsif champ.type_champ == 'departements'
|
||||||
= render partial: 'users/description/champs/departements', locals: { champ: champ }
|
= render partial: 'users/description/champs/departements', locals: { champ: champ }
|
||||||
|
|
||||||
|
- elsif champ.type_champ == 'dossier_link'
|
||||||
|
= render partial: 'users/description/champs/dossier_link', locals: { champ: champ }
|
||||||
|
|
||||||
- elsif champ.type_champ == 'explication'
|
- elsif champ.type_champ == 'explication'
|
||||||
|
|
||||||
- else
|
- else
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#state_description.row{style:'width: 55%; margin-left: auto; margin-right: auto'}
|
#state_description.row{ style: 'width: 55%; margin-left: auto; margin-right: auto;' }
|
||||||
.panel.panel-info
|
.panel.panel-info
|
||||||
.panel-body.center
|
.panel-body.center
|
||||||
.row
|
.row
|
||||||
.col-md-1.col-lg-1.col-sm-1.col-xs-1
|
.col-md-1.col-lg-1.col-sm-1.col-xs-1
|
||||||
.fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'}
|
.fa.fa-info-circle.text-info{ style: 'font-size: 2em; margin-top: 20%;' }
|
||||||
.col-xs-11
|
.col-xs-11
|
||||||
- if dossiers_list_facade.liste == 'brouillon'
|
- if dossiers_list_facade.liste == 'brouillon'
|
||||||
Les dossiers présents dans cette liste
|
Les dossiers présents dans cette liste
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
#users_index
|
#users_index
|
||||||
.default_data_block.default_visible
|
.default_data_block.default_visible
|
||||||
%div.row.show-block#new_dossiers
|
.row.show-block#new_dossiers
|
||||||
%div.header
|
.header
|
||||||
%div.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
|
.col-lg-10.col-md-10.col-sm-10.col-xs-10.title
|
||||||
%div.carret-right
|
.carret-right
|
||||||
%div.carret-down
|
.carret-down
|
||||||
Dossiers
|
Dossiers
|
||||||
%div.col-lg-2.col-md-2.col-sm-2.col-xs-2.count
|
.col-lg-2.col-md-2.col-sm-2.col-xs-2.count
|
||||||
-# 0
|
-# 0
|
||||||
-# dossiers
|
-# dossiers
|
||||||
%div.body
|
.body
|
||||||
= smart_listing_render :dossiers
|
= smart_listing_render :dossiers
|
||||||
|
|
||||||
= render partial: 'state_description', locals: { dossiers_list_facade: @dossiers_list_facade }
|
= render partial: 'state_description', locals: { dossiers_list_facade: @dossiers_list_facade }
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12#users_recapitulatif_dossier_show
|
.col-lg-12.col-md-12.col-sm-12.col-xs-12#users_recapitulatif_dossier_show
|
||||||
= render partial: "dossiers/dossier_show"
|
= render partial: "dossiers/dossier_show"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
- if @dossier
|
- if @dossier
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-body
|
.panel-body
|
||||||
= link_to 'X', users_no_procedure_url, class: 'btn btn-xs', style:'float: right'
|
= link_to 'X', users_no_procedure_url, class: 'btn btn-xs', style: 'float: right;'
|
||||||
|
|
||||||
- if @dossier.procedure.euro_flag
|
- if @dossier.procedure.euro_flag
|
||||||
#euro_flag.flag
|
#euro_flag.flag
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
database:
|
database:
|
||||||
override:
|
override:
|
||||||
- bundle exec rake db:drop db:create db:migrate RAILS_ENV=test
|
- cp config/database.yml.ci config/database.yml
|
||||||
|
- bundle exec rake db:create db:schema:load db:migrate RAILS_ENV=test
|
||||||
|
|
||||||
|
test:
|
||||||
|
override:
|
||||||
|
- bundle exec rspec
|
||||||
|
- bundle exec haml-lint app/views/
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
staging:
|
staging:
|
||||||
|
|
|
@ -23,7 +23,6 @@ module TPS
|
||||||
|
|
||||||
config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/validators #{config.root}/app/facades)
|
config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/validators #{config.root}/app/facades)
|
||||||
config.assets.paths << Rails.root.join('app', 'assets', 'javascript')
|
config.assets.paths << Rails.root.join('app', 'assets', 'javascript')
|
||||||
config.assets.precompile += %w( application_split2.css )
|
|
||||||
|
|
||||||
if Rails.env.production?
|
if Rails.env.production?
|
||||||
URL = "https://tps.apientreprise.fr/"
|
URL = "https://tps.apientreprise.fr/"
|
||||||
|
|
|
@ -4,12 +4,14 @@ development:
|
||||||
database: tps_development
|
database: tps_development
|
||||||
host: localhost
|
host: localhost
|
||||||
pool: 5
|
pool: 5
|
||||||
username: tps
|
username: tps_development
|
||||||
password: lol
|
password: tps_development
|
||||||
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
adapter: sqlite3
|
adapter: postgresql
|
||||||
|
encoding: unicode
|
||||||
|
database: tps_test
|
||||||
|
host: localhost
|
||||||
pool: 5
|
pool: 5
|
||||||
timeout: 5000
|
username: tps_test
|
||||||
database: db/test.sqlite3
|
password: tps_test
|
||||||
|
|
6
config/database.yml.ci
Normal file
6
config/database.yml.ci
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
test:
|
||||||
|
adapter: postgresql
|
||||||
|
database: app_test
|
||||||
|
pool: 5
|
||||||
|
username:
|
||||||
|
password:
|
|
@ -24,3 +24,4 @@ fr:
|
||||||
header_section: 'Titre de section'
|
header_section: 'Titre de section'
|
||||||
explication: 'Explication'
|
explication: 'Explication'
|
||||||
multiple_drop_down_list: 'Menu déroulant à choix multiples'
|
multiple_drop_down_list: 'Menu déroulant à choix multiples'
|
||||||
|
dossier_link: 'Lien vers un autre dossier'
|
||||||
|
|
|
@ -45,14 +45,14 @@ Rails.application.routes.draw do
|
||||||
authenticate :administration do
|
authenticate :administration do
|
||||||
resources :administrations, only: [:index, :create]
|
resources :administrations, only: [:index, :create]
|
||||||
namespace :administrations do
|
namespace :administrations do
|
||||||
resources :stats, only: [:index]
|
|
||||||
|
|
||||||
require 'sidekiq/web'
|
require 'sidekiq/web'
|
||||||
require 'sidekiq/cron/web'
|
require 'sidekiq/cron/web'
|
||||||
mount Sidekiq::Web => '/sidekiq'
|
mount Sidekiq::Web => '/sidekiq'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :stats, only: [:index]
|
||||||
|
|
||||||
namespace :france_connect do
|
namespace :france_connect do
|
||||||
get 'particulier' => 'particulier#login'
|
get 'particulier' => 'particulier#login'
|
||||||
get 'particulier/callback' => 'particulier#callback'
|
get 'particulier/callback' => 'particulier#callback'
|
||||||
|
@ -94,6 +94,8 @@ Rails.application.routes.draw do
|
||||||
|
|
||||||
post '/siret_informations' => 'dossiers#siret_informations'
|
post '/siret_informations' => 'dossiers#siret_informations'
|
||||||
put '/change_siret' => 'dossiers#change_siret'
|
put '/change_siret' => 'dossiers#change_siret'
|
||||||
|
|
||||||
|
get 'procedure_libelle' => 'dossiers#procedure_libelle'
|
||||||
end
|
end
|
||||||
resource :dossiers
|
resource :dossiers
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
class ChangeDateCreationTypeToEntreprise < ActiveRecord::Migration
|
class ChangeDateCreationTypeToEntreprise < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
if Rails.env.test?
|
|
||||||
change_column :entreprises, :date_creation, "timestamp"
|
|
||||||
else
|
|
||||||
change_column :entreprises, :date_creation, "timestamp USING to_timestamp(date_creation) at time zone 'UTC-2'"
|
change_column :entreprises, :date_creation, "timestamp USING to_timestamp(date_creation) at time zone 'UTC-2'"
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def down
|
def down
|
||||||
change_column :entreprises, :date_creation, "integer USING extract(epoch from date_creation::timestamp with time zone)::integer"
|
change_column :entreprises, :date_creation, "integer USING extract(epoch from date_creation::timestamp with time zone)::integer"
|
||||||
|
|
|
@ -9,7 +9,7 @@ class CreateSearches < ActiveRecord::Migration
|
||||||
add_index :individuals, :dossier_id
|
add_index :individuals, :dossier_id
|
||||||
add_index :pieces_justificatives, :dossier_id
|
add_index :pieces_justificatives, :dossier_id
|
||||||
add_index :rna_informations, :entreprise_id
|
add_index :rna_informations, :entreprise_id
|
||||||
create_view :searches unless Rails.env.test? #, materialized: true
|
create_view :searches
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
|
@ -22,6 +22,6 @@ class CreateSearches < ActiveRecord::Migration
|
||||||
remove_index :individuals, :dossier_id
|
remove_index :individuals, :dossier_id
|
||||||
remove_index :pieces_justificatives, :dossier_id
|
remove_index :pieces_justificatives, :dossier_id
|
||||||
remove_index :rna_informations, :entreprise_id
|
remove_index :rna_informations, :entreprise_id
|
||||||
drop_view :searches unless Rails.env.test? #, materialized: true
|
drop_view :searches
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
class UpdateSearchesToVersion2 < ActiveRecord::Migration
|
class UpdateSearchesToVersion2 < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
replace_view :searches, version: 2 unless Rails.env.test?
|
replace_view :searches, version: 2
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
replace_view :searches, version: 1 unless Rails.env.test?
|
replace_view :searches, version: 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
43
spec/controllers/stats_controller_spec.rb
Normal file
43
spec/controllers/stats_controller_spec.rb
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe StatsController, type: :controller do
|
||||||
|
describe '#thirty_days_flow_hash' do
|
||||||
|
before do
|
||||||
|
FactoryGirl.create(:procedure, :created_at => 45.days.ago)
|
||||||
|
FactoryGirl.create(:procedure, :created_at => 15.days.ago)
|
||||||
|
FactoryGirl.create(:procedure, :created_at => 1.day.ago)
|
||||||
|
|
||||||
|
@expected_hash = {}
|
||||||
|
(30.days.ago.to_date..Time.now.to_date).each do |day|
|
||||||
|
if [15.days.ago.to_date, 1.day.ago.to_date].include?(day)
|
||||||
|
@expected_hash[day] = 1
|
||||||
|
else
|
||||||
|
@expected_hash[day] = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
let (:association) { Procedure.all }
|
||||||
|
|
||||||
|
subject { StatsController.new.send(:thirty_days_flow_hash, association) }
|
||||||
|
|
||||||
|
it { expect(subject).to eq(@expected_hash) }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#cumulative_hash' do
|
||||||
|
before do
|
||||||
|
FactoryGirl.create(:procedure, :created_at => 45.days.ago)
|
||||||
|
FactoryGirl.create(:procedure, :created_at => 15.days.ago)
|
||||||
|
FactoryGirl.create(:procedure, :created_at => 15.days.ago)
|
||||||
|
end
|
||||||
|
|
||||||
|
let (:association) { Procedure.all }
|
||||||
|
|
||||||
|
subject { StatsController.new.send(:cumulative_hash, association) }
|
||||||
|
|
||||||
|
it { expect(subject).to eq({
|
||||||
|
45.days.ago.beginning_of_month => 1,
|
||||||
|
15.days.ago.beginning_of_month => 3
|
||||||
|
}) }
|
||||||
|
end
|
||||||
|
end
|
|
@ -164,7 +164,7 @@ shared_examples 'carte_controller_spec' do
|
||||||
subject { Cadastre.last }
|
subject { Cadastre.last }
|
||||||
|
|
||||||
it { expect(subject.surface_intersection).to eq('0.0006') }
|
it { expect(subject.surface_intersection).to eq('0.0006') }
|
||||||
it { expect(subject.surface_parcelle).to eq(11252.692583090324) }
|
it { expect(subject.surface_parcelle).to eq(11252.6925830903) }
|
||||||
it { expect(subject.numero).to eq('0013') }
|
it { expect(subject.numero).to eq('0013') }
|
||||||
it { expect(subject.feuille).to eq(1) }
|
it { expect(subject.feuille).to eq(1) }
|
||||||
it { expect(subject.section).to eq('CD') }
|
it { expect(subject.section).to eq('CD') }
|
||||||
|
|
|
@ -554,4 +554,28 @@ describe Users::DossiersController, type: :controller do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'Get #procedure_libelle' do
|
||||||
|
let!(:dossier) { create(:dossier, procedure: procedure) }
|
||||||
|
|
||||||
|
context 'when user is connected' do
|
||||||
|
before { sign_in user }
|
||||||
|
|
||||||
|
context 'when the dossier exist' do
|
||||||
|
before { get :procedure_libelle, params: { dossier_id: dossier.id } }
|
||||||
|
it 'returns the procedure name' do
|
||||||
|
expect(JSON.parse(response.body)).to eq('procedureLibelle' => procedure.libelle)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the dossier does not exist' do
|
||||||
|
before { get :procedure_libelle, params: { dossier_id: 666 } }
|
||||||
|
it { expect(response.code).to eq('404') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user is not connected' do
|
||||||
|
before { get :procedure_libelle, params: { dossier_id: dossier.id } }
|
||||||
|
it { expect(response.code).to eq('302') }
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -67,7 +67,7 @@ feature 'As an administrateur I wanna create a new procedure', js: true do
|
||||||
|
|
||||||
page.find_by_id('onglet-preview').trigger('click')
|
page.find_by_id('onglet-preview').trigger('click')
|
||||||
expect(page).to have_current_path(admin_procedure_previsualisation_path(Procedure.first.id.to_s))
|
expect(page).to have_current_path(admin_procedure_previsualisation_path(Procedure.first.id.to_s))
|
||||||
expect(page.find_by_id('champs_1')['placeholder']).to eq('libelle de champ')
|
expect(page.find("input[type='text']")['placeholder']).to eq('libelle de champ')
|
||||||
expect(page.first('.piece-libelle').text).to eq('libelle de piece')
|
expect(page.first('.piece-libelle').text).to eq('libelle de piece')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,13 +15,24 @@ feature 'drawing a zone with freedraw' do
|
||||||
expect(page).to have_css('#login_user')
|
expect(page).to have_css('#login_user')
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when he enter login information' do
|
scenario 'he logs in and he is redirected to carte page', vcr: { cassette_name: 'drawing_a_zone_with_freedraw_redirected_to_carte_page' } do
|
||||||
before do
|
|
||||||
within('#new_user') do
|
within('#new_user') do
|
||||||
page.find_by_id('user_email').set user.email
|
page.find_by_id('user_email').set user.email
|
||||||
page.find_by_id('user_password').set user.password
|
page.find_by_id('user_password').set user.password
|
||||||
page.click_on 'Se connecter'
|
page.click_on 'Se connecter'
|
||||||
end
|
end
|
||||||
|
expect(page).to have_css('.content #map')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user is logged in' do
|
||||||
|
before do
|
||||||
|
login_as user, scope: :user
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when he is visiting the map page' do
|
||||||
|
before do
|
||||||
|
visit users_dossier_carte_path dossier_id: dossier.id
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when procedure have api carto activated' do
|
context 'when procedure have api carto activated' do
|
||||||
|
@ -41,33 +52,6 @@ feature 'drawing a zone with freedraw' do
|
||||||
expect(page).to have_content('Le status de votre dossier n\'autorise pas cette URL')
|
expect(page).to have_content('Le status de votre dossier n\'autorise pas cette URL')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when draw a zone on #map', js: true, vcr: { cassette_name: 'drawing_a_zone_with_freedraw_when_draw_a_zone_on_map' } do
|
|
||||||
context 'when module quartiers prioritaires is activated' do
|
|
||||||
let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) }
|
|
||||||
|
|
||||||
before do
|
|
||||||
allow(ModuleApiCartoService).
|
|
||||||
to receive(:generate_qp).
|
|
||||||
and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "Quartier de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}})
|
|
||||||
|
|
||||||
page.execute_script('freeDraw.fire("markers", {latLngs: []});')
|
|
||||||
wait_for_ajax
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'div #map .qp is present' do
|
|
||||||
expect(page).to have_css('.content #map.qp')
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'QP name is present on page' do
|
|
||||||
expect(page).to have_content('Quartier de test')
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'Commune is present on page' do
|
|
||||||
expect(page).to have_content('Paris')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
feature 'user access to the list of his dossier' do
|
feature 'user access to the list of his dossier' do
|
||||||
|
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let!(:last_updated_dossier) { create(:dossier, :with_entreprise, user: user, state: 'replied')}
|
let!(:last_updated_dossier) { create(:dossier, :with_entreprise, user: user, state: 'replied')}
|
||||||
let!(:dossier1) { create(:dossier, :with_entreprise, user: user, state: 'replied') }
|
let!(:dossier1) { create(:dossier, :with_entreprise, user: user, state: 'replied') }
|
||||||
|
|
|
@ -1,143 +0,0 @@
|
||||||
---
|
|
||||||
http_interactions:
|
|
||||||
- request:
|
|
||||||
method: post
|
|
||||||
uri: https://auth.cloud.ovh.net/v2.0/tokens
|
|
||||||
body:
|
|
||||||
encoding: UTF-8
|
|
||||||
string: '{"auth":{"passwordCredentials":{"username":"ovh_fake_username","password":"ovh_fake_password"},"tenantName":"ovh_fake_tenant_name"}}'
|
|
||||||
headers:
|
|
||||||
User-Agent:
|
|
||||||
- fog/1.38.0 fog-core/1.38.0
|
|
||||||
Content-Type:
|
|
||||||
- application/json
|
|
||||||
response:
|
|
||||||
status:
|
|
||||||
code: 200
|
|
||||||
message: ''
|
|
||||||
headers:
|
|
||||||
Vary:
|
|
||||||
- X-Auth-Token
|
|
||||||
Content-Type:
|
|
||||||
- application/json
|
|
||||||
Content-Length:
|
|
||||||
- '7079'
|
|
||||||
Date:
|
|
||||||
- Thu, 12 May 2016 14:05:17 GMT
|
|
||||||
Connection:
|
|
||||||
- close
|
|
||||||
body:
|
|
||||||
encoding: UTF-8
|
|
||||||
string: '{"access": {"token": {"issued_at": "2016-05-12T14:05:17.214079", "expires":
|
|
||||||
"2016-05-13T14:05:17Z", "id": "ff665d4700654b6d9c94964dfc1a262f", "tenant":
|
|
||||||
{"id": "a24c37ed11a84896914514384898c34b", "enabled": true, "name": "2627898119540674",
|
|
||||||
"description": "apientreprise"}, "audit_ids": ["Y2ixVCRJQe-D6IN-cPQQsw"]},
|
|
||||||
"serviceCatalog": [{"endpoints": [{"adminURL": "https://compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "GRA1", "internalURL": "https://compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "17f6ef1cc63e492ab8d3f2bda8428cb0", "publicURL": "https://compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "BHS1", "internalURL": "https://compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "21fdd202afd04470bbaf84f9396d0dcc", "publicURL": "https://compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "SBG1", "internalURL": "https://compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "a707bffedf1c4b80a124c585c67c1639", "publicURL": "https://compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}],
|
|
||||||
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
|
|
||||||
"https://network.compute.gra1.cloud.ovh.net/", "region": "GRA1", "internalURL":
|
|
||||||
"https://network.compute.gra1.cloud.ovh.net/", "id": "26a339a8c7d5463f89ca937068ebbcd4",
|
|
||||||
"publicURL": "https://network.compute.gra1.cloud.ovh.net/"}, {"adminURL":
|
|
||||||
"https://network.compute.bhs1.cloud.ovh.net/", "region": "BHS1", "internalURL":
|
|
||||||
"https://network.compute.bhs1.cloud.ovh.net/", "id": "3fe2326789ec4e37af2e6b2c80a90876",
|
|
||||||
"publicURL": "https://network.compute.bhs1.cloud.ovh.net/"}, {"adminURL":
|
|
||||||
"https://network.compute.sbg1.cloud.ovh.net/", "region": "SBG1", "internalURL":
|
|
||||||
"https://network.compute.sbg1.cloud.ovh.net/", "id": "075839111e7a41f1bb458926e5f04cec",
|
|
||||||
"publicURL": "https://network.compute.sbg1.cloud.ovh.net/"}], "endpoints_links":
|
|
||||||
[], "type": "network", "name": "neutron"}, {"endpoints": [{"adminURL": "https://volume.compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "GRA1", "internalURL": "https://volume.compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "7231957fdf0346e5adebe860ac5e5e57", "publicURL": "https://volume.compute.gra1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://volume.compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "BHS1", "internalURL": "https://volume.compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "2f5b68f95d7b4b1fad1a683dac8e8ca3", "publicURL": "https://volume.compute.bhs1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://volume.compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "SBG1", "internalURL": "https://volume.compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "021b61bd7313479e8f8d77d21c7b434a", "publicURL": "https://volume.compute.sbg1.cloud.ovh.net/v2/a24c37ed11a84896914514384898c34b"}],
|
|
||||||
"endpoints_links": [], "type": "volumev2", "name": "cinderv2"}, {"endpoints":
|
|
||||||
[{"adminURL": "https://image.compute.gra1.cloud.ovh.net/", "region": "GRA1",
|
|
||||||
"internalURL": "https://image.compute.gra1.cloud.ovh.net/", "id": "56795c82f1744e47b7782f1fc2407212",
|
|
||||||
"publicURL": "https://image.compute.gra1.cloud.ovh.net/"}, {"adminURL": "https://image.compute.bhs1.cloud.ovh.net/",
|
|
||||||
"region": "BHS1", "internalURL": "https://image.compute.bhs1.cloud.ovh.net/",
|
|
||||||
"id": "5eaa4cbe80354ea482f2b0477c9c16f0", "publicURL": "https://image.compute.bhs1.cloud.ovh.net/"},
|
|
||||||
{"adminURL": "https://image.compute.sbg1.cloud.ovh.net/", "region": "SBG1",
|
|
||||||
"internalURL": "https://image.compute.sbg1.cloud.ovh.net/", "id": "15758b246d1340e887a2170bd3399071",
|
|
||||||
"publicURL": "https://image.compute.sbg1.cloud.ovh.net/"}], "endpoints_links":
|
|
||||||
[], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL": "https://volume.compute.gra1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "GRA1", "internalURL": "https://volume.compute.gra1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "a6936c8876c1490cbf91d0707e78d350", "publicURL": "https://volume.compute.gra1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://volume.compute.bhs1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "BHS1", "internalURL": "https://volume.compute.bhs1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "43bc107cf78448faa9e5a6b3a5ca48dd", "publicURL": "https://volume.compute.bhs1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://volume.compute.sbg1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b",
|
|
||||||
"region": "SBG1", "internalURL": "https://volume.compute.sbg1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "2be04ee1ddb148c19e91d3da5934fa55", "publicURL": "https://volume.compute.sbg1.cloud.ovh.net/v1/a24c37ed11a84896914514384898c34b"}],
|
|
||||||
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
|
|
||||||
[{"adminURL": "https://storage.gra1.cloud.ovh.net", "region": "GRA1", "internalURL":
|
|
||||||
"http://127.0.0.1:8888/v1/AUTH_a24c37ed11a84896914514384898c34b", "id": "c96f61d071a74e36bd3c07e53d241ce3",
|
|
||||||
"publicURL": "https://storage.gra1.cloud.ovh.net/v1/AUTH_a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://storage.bhs1.cloud.ovh.net:8888/", "region": "BHS1",
|
|
||||||
"internalURL": "http://127.0.0.1:8888/v1/AUTH_a24c37ed11a84896914514384898c34b",
|
|
||||||
"id": "3327534a1a824389aae5d663b9821d67", "publicURL": "https://storage.bhs1.cloud.ovh.net/v1/AUTH_a24c37ed11a84896914514384898c34b"},
|
|
||||||
{"adminURL": "https://storage.sbg1.cloud.ovh.net", "region": "SBG1", "internalURL":
|
|
||||||
"http://127.0.0.1:8888/v1/AUTH_a24c37ed11a84896914514384898c34b", "id": "2af96b87ad484cb7879a9ea554d5418c",
|
|
||||||
"publicURL": "https://storage.sbg1.cloud.ovh.net/v1/AUTH_a24c37ed11a84896914514384898c34b"}],
|
|
||||||
"endpoints_links": [], "type": "object-store", "name": "swift"}, {"endpoints":
|
|
||||||
[{"adminURL": "https://auth.cloud.ovh.net:35357/v2.0", "region": "GRA1", "internalURL":
|
|
||||||
"http://127.0.0.1:5000/v2.0", "id": "62101e498fc3404dbc18ec80888992cb", "publicURL":
|
|
||||||
"https://auth.cloud.ovh.net/v2.0"}, {"adminURL": "https://auth.cloud.ovh.net:35357/v2.0",
|
|
||||||
"region": "BHS1", "internalURL": "http://127.0.0.1:5000/v2.0", "id": "00e403276b3246c4a5c54dc7133f9f0a",
|
|
||||||
"publicURL": "https://auth.cloud.ovh.net/v2.0"}, {"adminURL": "https://auth.cloud.ovh.net:35357/v2.0",
|
|
||||||
"region": "SBG1", "internalURL": "http://127.0.0.1:5000/v2.0", "id": "6094ef2ed9f240ed9b648dfcc0d9f923",
|
|
||||||
"publicURL": "https://auth.cloud.ovh.net/v2.0"}], "endpoints_links": [], "type":
|
|
||||||
"identity", "name": "keystone"}], "user": {"username": "MhsuDbK4DsPr", "roles_links":
|
|
||||||
[], "id": "43914cf4645747ba90d075c62ebb5018", "roles": [{"name": "_member_"}],
|
|
||||||
"name": "MhsuDbK4DsPr"}, "metadata": {"is_admin": 0, "roles": ["9fe2ff9ee4384b1894a90878d3e92bab"]}}}'
|
|
||||||
http_version:
|
|
||||||
recorded_at: Thu, 12 May 2016 14:05:17 GMT
|
|
||||||
- request:
|
|
||||||
method: get
|
|
||||||
uri: http://api-adresse.data.gouv.fr/search?limit=1&q=6%20RUE%20RAOUL%20NORDLING%20IMMEUBLE%20BORA%2092270%20BOIS%20COLOMBES
|
|
||||||
body:
|
|
||||||
encoding: US-ASCII
|
|
||||||
string: ''
|
|
||||||
headers:
|
|
||||||
Accept:
|
|
||||||
- "*/*; q=0.5, application/xml"
|
|
||||||
Accept-Encoding:
|
|
||||||
- gzip, deflate
|
|
||||||
User-Agent:
|
|
||||||
- Ruby
|
|
||||||
response:
|
|
||||||
status:
|
|
||||||
code: 200
|
|
||||||
message: OK
|
|
||||||
headers:
|
|
||||||
Server:
|
|
||||||
- nginx/1.6.2
|
|
||||||
Date:
|
|
||||||
- Thu, 12 May 2016 14:13:15 GMT
|
|
||||||
Content-Type:
|
|
||||||
- application/json; charset=utf-8
|
|
||||||
Content-Length:
|
|
||||||
- '189'
|
|
||||||
Connection:
|
|
||||||
- keep-alive
|
|
||||||
Access-Control-Allow-Origin:
|
|
||||||
- "*"
|
|
||||||
Access-Control-Allow-Headers:
|
|
||||||
- X-Requested-With
|
|
||||||
body:
|
|
||||||
encoding: UTF-8
|
|
||||||
string: '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL
|
|
||||||
1.0", "query": "6 RUE RAOUL NORDLING IMMEUBLE BORA 92270 BOIS COLOMBES", "type":
|
|
||||||
"FeatureCollection", "features": []}'
|
|
||||||
http_version:
|
|
||||||
recorded_at: Thu, 12 May 2016 14:13:16 GMT
|
|
||||||
recorded_with: VCR 3.0.1
|
|
|
@ -14,6 +14,33 @@ shared_examples 'champ_spec' do
|
||||||
it { is_expected.to delegate_method(:order_place).to(:type_de_champ) }
|
it { is_expected.to delegate_method(:order_place).to(:type_de_champ) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'mandatory_and_blank?' do
|
||||||
|
let(:type_de_champ) { TypeDeChamp.new(mandatory: mandatory) }
|
||||||
|
let(:champ) { Champ.new(type_de_champ: type_de_champ, value: value) }
|
||||||
|
let(:value) { '' }
|
||||||
|
let(:mandatory) { true }
|
||||||
|
|
||||||
|
context 'when mandatory and blank' do
|
||||||
|
it { expect(champ.mandatory_and_blank?).to be(true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when not blank' do
|
||||||
|
let(:value) { 'yop' }
|
||||||
|
it { expect(champ.mandatory_and_blank?).to be(false) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when not mandatory' do
|
||||||
|
let(:mandatory) { false }
|
||||||
|
it { expect(champ.mandatory_and_blank?).to be(false) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when not mandatory or blank' do
|
||||||
|
let(:value) { 'u' }
|
||||||
|
let(:mandatory) { false }
|
||||||
|
it { expect(champ.mandatory_and_blank?).to be(false) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'data_provide' do
|
describe 'data_provide' do
|
||||||
let(:champ) { create :champ }
|
let(:champ) { create :champ }
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue