aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/assets/stylesheets/main/exports.css.scss80
-rw-r--r--app/assets/stylesheets/main/imports.css.scss17
-rw-r--r--app/controllers/exports_controller.rb39
-rw-r--r--app/controllers/imports_controller.rb3
-rw-r--r--app/helpers/exports_helper.rb9
-rw-r--r--app/helpers/progress_bar_helper.rb1
-rw-r--r--app/models/export.rb63
-rw-r--r--app/models/export_report.rb24
-rw-r--r--app/models/export_service.rb2
-rw-r--r--app/models/import.rb10
-rw-r--r--app/views/exports/_export.erb10
-rw-r--r--app/views/exports/index.html.erb3
-rw-r--r--app/views/exports/show.html.erb1
-rw-r--r--app/views/exports/show.js.coffee2
-rw-r--r--app/views/imports/_import.erb7
-rw-r--r--app/views/imports/show.html.erb1
-rw-r--r--config/locales/exports.en.yml46
-rw-r--r--config/locales/exports.fr.yml78
-rw-r--r--config/locales/imports.fr.yml2
-rw-r--r--config/routes.rb3
20 files changed, 237 insertions, 164 deletions
diff --git a/app/assets/stylesheets/main/exports.css.scss b/app/assets/stylesheets/main/exports.css.scss
index 6b11e8b7f..dd5a38f48 100644
--- a/app/assets/stylesheets/main/exports.css.scss
+++ b/app/assets/stylesheets/main/exports.css.scss
@@ -7,46 +7,60 @@
}
#workspace.exports.show {
- table {
- th {
- font-style: italic;
+ .resume {
+ &:after{
+ content: " ";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
}
- th.severity {
- width: 30px;
- }
- th.created_at {
- text-align: center;
- width: 100px;
+
+ #files_statistics { height: 225px; }
+ #objects_statistics { height: 225px; }
+
+ .caption {
+ text-align :center;
+ font-weight: bold;
}
- th.position {
- padding-right: 5px;
- text-align: right;
- width: 40px;
+ }
+
+ .report {
+ margin-top: 20px;
+
+ .files {
+ img {
+ margin-right: 5px;
+ }
+
+ .file_name{
+ font-weight: bold;
+ margin-right: 30px;
+ }
}
- td.severity {
- text-align: center;
+
+ .files_error{
+ color: #e22b1b;
+ display: none;
}
- td.created_at {
- padding-right: 3px;
+
+ .files_ignored{
+ color: #898e7f;
+ display: none;
}
- td.position {
- padding-right: 5px;
- text-align: right;
+
+ .files_ok{
+ color: #8fc861;
+ display: none;
}
- }
-}
-#workspace.exports.new #workspace.exports.create form.new_export {
- padding: 0.5em 0;
- margin-top: -0.5em;
- margin-bottom: 1em;
+ .lines{
+ display: none;
+
+ th, td{
+ text-align: center;
+ }
- label {
- display: block;
- width: 25%;
- float: left;
- }
- select {
- width: 25%;
+ }
}
}
diff --git a/app/assets/stylesheets/main/imports.css.scss b/app/assets/stylesheets/main/imports.css.scss
index 93fb499f9..8ac7314ff 100644
--- a/app/assets/stylesheets/main/imports.css.scss
+++ b/app/assets/stylesheets/main/imports.css.scss
@@ -68,25 +68,10 @@
.lines{
display: none;
- td{
+ th, td{
text-align: center;
}
}
}
}
-
-#workspace.imports.new #workspace.imports.create form.import_new {
- padding: 0.5em 0;
- margin-top: -0.5em;
- margin-bottom: 1em;
-
- label {
- display: block;
- width: 25%;
- float: left;
- }
- select {
- width: 25%;
- }
-}
diff --git a/app/controllers/exports_controller.rb b/app/controllers/exports_controller.rb
index 0fb66294d..ae8aa1b75 100644
--- a/app/controllers/exports_controller.rb
+++ b/app/controllers/exports_controller.rb
@@ -1,15 +1,13 @@
require 'will_paginate/array'
+require 'open-uri'
class ExportsController < ChouetteController
defaults :resource_class => Export
- respond_to :xml, :json
- respond_to :html, :only => [:show, :index, :new, :create, :delete]
+ respond_to :html, :only => [:show, :index, :destroy, :exported_file]
respond_to :js, :only => [:show, :index]
belongs_to :referential
- #curl -F "file=@corolis.zip;filename=corolis_gtfs.zip" -F "file=@parameters.json;filename=parameters.json" http://localhost:8080/chouette_iev/referentials/corolis/exporter/gtfs
-
def index
begin
index! do
@@ -33,37 +31,20 @@ class ExportsController < ChouetteController
redirect_to referential_path(@referential)
end
end
-
- def new
- begin
- new! do
- puts "OK"
- end
- rescue Ievkit::Error => error
- logger.error("Iev failure : #{error.message}")
- flash[:error] = t('iev.failure')
- redirect_to referential_path(@referential)
- end
- end
-
- def create
+
+ def destroy
begin
- create! do
- puts "OK"
- end
+ destroy!
rescue Ievkit::Error => error
logger.error("Iev failure : #{error.message}")
flash[:error] = t('iev.failure')
redirect_to referential_path(@referential)
end
end
-
- def delete
+
+ def exported_file
begin
- delete! do
- export_service.delete(@export.id)
- redirect_to referential_exports_path(@referential)
- end
+ send_file open(resource.file_path), { :type => "application/#{resource.filename_extension}", :disposition => "attachment", :filename => resource.filename }
rescue Ievkit::Error => error
logger.error("Iev failure : #{error.message}")
flash[:error] = t('iev.failure')
@@ -76,10 +57,6 @@ class ExportsController < ChouetteController
def export_service
ExportService.new(@referential)
end
-
- def build_resource(attributes = {})
- @export ||= ExportTask.new
- end
def resource
@export ||= export_service.find( params[:id] )
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index e09fdfec5..a8a1636c7 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -34,8 +34,7 @@ class ImportsController < ChouetteController
def destroy
begin
- destroy! do
- end
+ destroy!
rescue Ievkit::Error => error
logger.error("Iev failure : #{error.message}")
flash[:error] = t('iev.failure')
diff --git a/app/helpers/exports_helper.rb b/app/helpers/exports_helper.rb
index cb1f42f36..21fec001f 100644
--- a/app/helpers/exports_helper.rb
+++ b/app/helpers/exports_helper.rb
@@ -24,13 +24,4 @@ module ExportsHelper
end
end
- def export_progress_bar_tag(export)
- div_class = ""
- content_tag :div, :class => "progress" do
- content_tag :div, :class => div_class, role: "progressbar", :'aria-valuenow' => "#{export.percentage_progress}", :'aria-valuemin' => "0", :'aria-valuemax' => "100", :style => "width: #{export.percentage_progress}%;" do
- "#{export.percentage_progress}% " + I18n.t("export_tasks.statuses.#{export.status}")
- end
- end
- end
-
end
diff --git a/app/helpers/progress_bar_helper.rb b/app/helpers/progress_bar_helper.rb
index 9a4bbfc9c..e4102027a 100644
--- a/app/helpers/progress_bar_helper.rb
+++ b/app/helpers/progress_bar_helper.rb
@@ -11,6 +11,7 @@ module ProgressBarHelper
end
def progress_bar_tag(object_model)
+ puts object_model.report
report = object_model.report
percentage_progress = percentage_progress(object_model, report)
diff --git a/app/models/export.rb b/app/models/export.rb
index 95317504a..b9cef12e0 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -10,8 +10,16 @@ class Export
@datas = response
end
+ def links
+ {}.tap do |links|
+ datas.links.each do |link|
+ links[link["rel"]] = link["href"]
+ end
+ end
+ end
+
def report
- report_path = datas.links.select{ |link| link["rel"] == "action_report"}.first.href
+ report_path = links["action_report"]
if report_path
response = Ievkit.get(report_path)
ExportReport.new(response)
@@ -20,31 +28,16 @@ class Export
end
end
- def compliance_check
- compliance_check_path = datas.links.select{ |link| link["rel"] == "validation_report"}.first.href
- if compliance_check_path
- response = Ievkit.get(compliance_check_path)
- ComplianceCheck.new(response)
- else
- raise Ievkit::Error("Impossible to access compliance check path link for export")
- end
- end
-
- def delete
- delete_path = datas.links.select{ |link| link["rel"] == "delete"}.first.href
+ def destroy
+ delete_path = links["delete"]
+ cancel_path = links["cancel"]
+
if delete_path
Ievkit.delete(delete_path)
- else
- raise Ievkit::Error("Impossible to access delete path link for export")
- end
- end
-
- def cancel
- cancel_path = datas.links.select{ |link| link["rel"] == "cancel"}.first.href
- if cancel_path
+ elsif cancel_path
Ievkit.delete(cancel_path)
else
- raise Ievkit::Error("Impossible to access cancel path link for export")
+ raise Ievkit::Error("Impossible to access delete or cancel path link for import")
end
end
@@ -53,7 +46,7 @@ class Export
end
def status
- datas.status
+ datas.status.downcase
end
def format
@@ -68,16 +61,6 @@ class Export
File.extname(filename) if filename
end
- def percentage_progress
- if %w{created}.include? status
- 0
- elsif %w{ terminated canceled aborted }.include? status
- 100
- else
- 20
- end
- end
-
def referential_name
datas.referential
end
@@ -90,19 +73,11 @@ class Export
datas.action_parameters.user_name
end
- def created_at?
- datas.created?
- end
-
- def created_at
- Time.at(datas.created.to_i / 1000) if created_at?
+ def created_at
+ Time.at(datas.created.to_i / 1000) if datas.created
end
- def updated_at?
- datas.updated?
- end
-
def updated_at
- Time.at(datas.updated.to_i / 1000) if updated_at?
+ Time.at(datas.updated.to_i / 1000) if datas.updated
end
end
diff --git a/app/models/export_report.rb b/app/models/export_report.rb
index a843d8148..6b3530437 100644
--- a/app/models/export_report.rb
+++ b/app/models/export_report.rb
@@ -3,12 +3,30 @@ class ExportReport
extend ActiveModel::Translation
include ActiveModel::Model
- attr_reader :datas, :errors, :metadatas
+ attr_reader :datas
def initialize(response)
@datas = response.action_report
- @errors = response.errors
- @metadatas = response.metadatas
+ end
+
+ def current_level
+ datas.progression.current_step if datas.progression
+ end
+
+ def last_step
+ datas.progression.steps.last if datas.progression
+ end
+
+ def current_step_name
+ last_step.step if last_step
+ end
+
+ def current_step
+ last_step.realized if last_step
+ end
+
+ def total_steps
+ last_step.total if last_step
end
def error_files
diff --git a/app/models/export_service.rb b/app/models/export_service.rb
index d41c045d1..2dbe0d7b3 100644
--- a/app/models/export_service.rb
+++ b/app/models/export_service.rb
@@ -8,7 +8,7 @@ class ExportService
# Find an export whith his id
def find(id)
- Export.new(Ievkit.scheduled_job(referential.slug, id, { :action => "exporter" }))
+ Export.new( Ievkit.scheduled_job(referential.slug, id, { :action => "exporter" }) )
end
# Find all exports
diff --git a/app/models/import.rb b/app/models/import.rb
index f596fe82a..13e76823f 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -3,17 +3,11 @@ class Import
extend ActiveModel::Naming
extend ActiveModel::Translation
include ActiveModel::Model
-
- # enumerize :status, in: %w{started scheduled terminated canceled aborted}, default: "created", predicates: true
- # enumerize :format, in: %w{neptune netex gtfs}, default: "neptune", predicates: true
attr_reader :datas
def initialize( response )
@datas = response
- Validation.new(response)
- # @status = @datas.status.downcase if @datas.status?
- # @format = @datas.type.downcase if @datas.type?
end
def links
@@ -57,7 +51,7 @@ class Import
elsif cancel_path
Ievkit.delete(cancel_path)
else
- raise Ievkit::Error("Impossible to access delete path link for import")
+ raise Ievkit::Error("Impossible to access delete or cancel path link for import")
end
end
@@ -70,7 +64,7 @@ class Import
end
def format
- datas.type
+ datas.format
end
def filename
diff --git a/app/views/exports/_export.erb b/app/views/exports/_export.erb
index c5d8b7002..ac39466c5 100644
--- a/app/views/exports/_export.erb
+++ b/app/views/exports/_export.erb
@@ -2,17 +2,15 @@
<div class="panel-heading">
<div class="panel-title clearfix">
<span class="pull-right">
- <% location = export.datas.links.select { |link| link["rel"] == "location" } %>
- <% location = location.first if location %>
- <% location = location.href if location %>
- <%= link_to "#{location}", :method => :delete, :data => {:confirm => t('exports.actions.destroy_confirm')}, :class => "btn btn-danger btn-sm" do %>
+ <% location = export.datas.links.select { |link| link["rel"] == "location" }.first.href %>
+ <%= link_to referential_export_path(@referential, export.id), :method => :delete, :data => {:confirm => t('exports.actions.destroy_confirm')}, :class => "btn btn-danger btn-sm" do %>
<span class="fa fa-trash-o"></span>
<% end %>
</span>
<h5>
<%= link_to( referential_export_path(@referential, export.id), :class => "preview", :title => "#{Export.model_name.human.capitalize} #{export.name}") do %>
<span class="name">
- <i class="fa fa-save"></i> <%= truncate(export.name, :length => 20) %>
+ <%= truncate(export.name, :length => 20) %>
</span>
<% end %>
</h5>
@@ -21,7 +19,7 @@
<div class="panel-body">
</div>
<div class="panel-footer">
- <%= export_progress_bar_tag(export) %>
+ <%= progress_bar_tag(export) %>
<div class="history">
<%= l export.created_at, :format => "%d/%m/%Y %H:%M" %> | <%= export.user_name %>
</div>
diff --git a/app/views/exports/index.html.erb b/app/views/exports/index.html.erb
index a0310e6d1..df66225fa 100644
--- a/app/views/exports/index.html.erb
+++ b/app/views/exports/index.html.erb
@@ -6,7 +6,6 @@
<% content_for :sidebar do %>
<ul class="actions">
- <li><%= link_to t('exports.actions.new'), new_referential_export_task_path(@referential), :class => "add" %></li>
- <li><%= link_to t('rule_parameter_sets.actions.index'), referential_rule_parameter_sets_path(@referential), :class => "link" %></li>
+ <li><%= link_to t('exports.actions.new'), new_referential_export_task_path(@referential), :class => "add" %></li>
</ul>
<% end %>
diff --git a/app/views/exports/show.html.erb b/app/views/exports/show.html.erb
index dc278b11e..9278447c1 100644
--- a/app/views/exports/show.html.erb
+++ b/app/views/exports/show.html.erb
@@ -1,5 +1,4 @@
<div class="test">
- <% title = "<i class='fa fa-save'></i>" %>
<%= title_tag "#{title} #{@export.name} <span class='status status_#{@export.status}'>#{ t('exports.statuses.'+ @export.status) }</span>" %>
</div>
diff --git a/app/views/exports/show.js.coffee b/app/views/exports/show.js.coffee
index de9ce8744..25d4b7432 100644
--- a/app/views/exports/show.js.coffee
+++ b/app/views/exports/show.js.coffee
@@ -42,4 +42,4 @@ jQuery ->
padding: 40,
hideHover: true
}).on('click', update = (i, row) ->
- get_export_results( $(".report"), $(".lines")) ) \ No newline at end of file
+ get_export_results( $(".report"), $(".lines")) )
diff --git a/app/views/imports/_import.erb b/app/views/imports/_import.erb
index 14e29cb32..b6ec16e7b 100644
--- a/app/views/imports/_import.erb
+++ b/app/views/imports/_import.erb
@@ -2,10 +2,7 @@
<div class="panel-heading">
<div class="panel-title clearfix">
<span class="pull-right">
- <% location = import.datas.links.select { |link| link["rel"] == "location" } %>
- <% location = location.first if location %>
- <% location = location.href if location %>
- <%= link_to referential_import_path(@referential, import.id), :method => :delete, :data => {:confirm => t('import_tasks.actions.destroy_confirm')}, :class => "btn btn-danger btn-sm" do %>
+ <%= link_to referential_import_path(@referential, import.id), :method => :delete, :data => {:confirm => t('imports.actions.destroy_confirm')}, :class => "btn btn-danger btn-sm" do %>
<span class="fa fa-trash-o"></span>
<% end %>
</span>
@@ -24,7 +21,7 @@
<div class="panel-footer">
<%= progress_bar_tag(import) %>
<div class="history">
- <%= l(import.created_at, :format => :short) if import.created_at %> | <%= import.user_name %>
+ <%= l(import.created_at, :format => "%d/%m/%Y %H:%M") if import.created_at %> | <%= import.user_name %>
</div>
</div>
</div>
diff --git a/app/views/imports/show.html.erb b/app/views/imports/show.html.erb
index 0e3a6a6cb..796f7981e 100644
--- a/app/views/imports/show.html.erb
+++ b/app/views/imports/show.html.erb
@@ -1,5 +1,4 @@
<div class="test">
- <% title = @import.no_save ? "": "<i class='fa fa-save'></i>" %>
<%= title_tag "#{title} #{@import.name} <span class='status status_#{@import.status}'>#{ t('imports.statuses.'+ @import.status) }</span>" %>
</div>
diff --git a/config/locales/exports.en.yml b/config/locales/exports.en.yml
new file mode 100644
index 000000000..8e70b9c0b
--- /dev/null
+++ b/config/locales/exports.en.yml
@@ -0,0 +1,46 @@
+en:
+ exports:
+ actions:
+ new: "New export"
+ destroy: "Destroy"
+ destroy_confirm: "Are you sure you want destroy this export?"
+ new:
+ title: "New export"
+ all: "All"
+ flash: "Export task on queue, refresh page to see progression"
+ index:
+ title: "Exports"
+ warning: ""
+ show:
+ report: "Report"
+ statuses:
+ started: "Started"
+ scheduled: "Processing ..."
+ terminated: "Completed"
+ canceled: "Canceled"
+ aborted: "Failed"
+ severities:
+ info: "Information"
+ uncheck: "Unchecked"
+ ok: "Ok"
+ warning: "Warning"
+ error: "Error"
+ fatal: "Fatal"
+ activemodel:
+ models:
+ export:
+ zero: "export"
+ one: "export"
+ other: "exports"
+ neptune_export:
+ zero: "export"
+ one: "Neptune export"
+ other: "exports"
+ gtfs_export:
+ zero: "export"
+ one: "GTFS export"
+ other: "exports"
+ netex_export:
+ zero: "export"
+ one: "NeTEx export"
+ other: "exports" \ No newline at end of file
diff --git a/config/locales/exports.fr.yml b/config/locales/exports.fr.yml
new file mode 100644
index 000000000..4e9bf1cd5
--- /dev/null
+++ b/config/locales/exports.fr.yml
@@ -0,0 +1,78 @@
+fr:
+ exports:
+ actions:
+ new: "Nouvel export"
+ destroy: "Supprimer cet export"
+ destroy_confirm: "Etes vous sûr de supprimer cet export ?"
+ new:
+ title: "Nouvel export"
+ all: "Toutes"
+ flash: "La demande d'export est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression"
+ index:
+ title: "Exports"
+ warning: ""
+ show:
+ report: "Rapport"
+ graph:
+ files:
+ title_zip: "Résultat d'import des fichiers du zip"
+ title_default: "Résultat d'import du fichier %{extension}"
+ error: "Erreurs"
+ ignored: "Ignorés"
+ ok: "Succès"
+ lines:
+ title: "Volume de données lues par type de donnée"
+ objects_label: "Quantité lue"
+ lines_stats: "Lignes"
+ routes_stats: "Séquences d'arrêts"
+ connection_links_stats: "Correspondances"
+ time_tables_stats: "Calendriers"
+ stop_areas_stats: "Zones d'arrèt"
+ access_points_stats: "Accès"
+ vehicle_journeys_stats: "Courses"
+ journey_patterns_stats: "Missions"
+ table:
+ line:
+ name: "Nom"
+ save: "Sauvegarde"
+ routes: "Séquences d'arrêts"
+ connection_links: "Correspondances"
+ time_tables: "Calendriers"
+ stop_areas: "Zones d'arrèt"
+ access_points: "Accès"
+ vehicle_journeys: "Courses"
+ journey_patterns: "Missions"
+ not_saved: "Non Sauvé"
+ saved: "Sauvé"
+ save_error: "Sauvegarde en erreur"
+ statuses:
+ started: "En file d'attente..."
+ scheduled: "En cours..."
+ terminated: "Achevé"
+ canceled: "Annulé"
+ aborted: "Echoué"
+ severities:
+ info: "Information"
+ uncheck: "Non disponible"
+ ok: "Ok"
+ warning: "Alerte"
+ error: "Erreur"
+ fatal: "Fatal"
+ activemodel:
+ models:
+ export:
+ zero: "export"
+ one: "export"
+ other: "exports"
+ neptune_export:
+ zero: "export"
+ one: "export neptune"
+ other: "exports"
+ gtfs_export:
+ zero: "export"
+ one: "export GTFS"
+ other: "exports"
+ netex_export:
+ zero: "export"
+ one: "export NeTEx"
+ other: "exports" \ No newline at end of file
diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml
index aae91976c..ed350be5a 100644
--- a/config/locales/imports.fr.yml
+++ b/config/locales/imports.fr.yml
@@ -43,7 +43,7 @@ fr:
saved: "Sauvé"
save_error: "Sauvegarde en erreur"
statuses:
- created: "En file d'attente..."
+ started: "En file d'attente..."
scheduled: "En cours..."
terminated: "Achevé"
canceled: "Annulé"
diff --git a/config/routes.rb b/config/routes.rb
index ed8fad125..ded013eb4 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -91,6 +91,9 @@ ChouetteIhm::Application.routes.draw do
collection do
get 'references'
end
+ member do
+ get "exported_file"
+ end
end
resources :compliance_check_tasks do