mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-12-26 09:42:46 +08:00
Add logic for preparing wizard data for report [SCI-5593]
This commit is contained in:
parent
57b133d0fc
commit
101d46956c
7 changed files with 102 additions and 23 deletions
|
@ -968,6 +968,74 @@ function reportHandsonTableConverter() {
|
||||||
}
|
}
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
function getReportData() {
|
||||||
|
var reportData = {};
|
||||||
|
|
||||||
|
// Report name
|
||||||
|
reportData.name = $('.report-name').val();
|
||||||
|
|
||||||
|
// Project
|
||||||
|
reportData.project_id = dropdownSelector.getValues('#projectSelector');
|
||||||
|
|
||||||
|
// Template
|
||||||
|
reportData.template_id = dropdownSelector.getValues('#templateSelector');
|
||||||
|
|
||||||
|
// Template values
|
||||||
|
reportData.template_values = {};
|
||||||
|
$.each($('.report-template-values-container').find('.sci-input-field, select'), function(i, field) {
|
||||||
|
reportData.template_values[field.name] = field.value;
|
||||||
|
});
|
||||||
|
|
||||||
|
$.each($('.report-template-values-container .sci-checkbox'), function(i, checkbox) {
|
||||||
|
if (checkbox.name.includes('[]')) {
|
||||||
|
let name = checkbox.name.replace('[]', '');
|
||||||
|
if (!reportData.template_values[name]) {
|
||||||
|
reportData.template_values[name] = {};
|
||||||
|
}
|
||||||
|
reportData
|
||||||
|
.template_values[name][checkbox.value] = checkbox.checked;
|
||||||
|
} else {
|
||||||
|
reportData.template_values[checkbox.name] = checkbox.checked;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Project content
|
||||||
|
reportData.project_content = [];
|
||||||
|
$.each($('.project-contents-container .experiment-element'), function(i, experiment) {
|
||||||
|
let experimentHash = {};
|
||||||
|
|
||||||
|
if (!$(experiment).find('.report-experiment-checkbox').prop('checked')) return;
|
||||||
|
|
||||||
|
experimentHash.experiment_id = $(experiment).find('.report-experiment-checkbox').val();
|
||||||
|
experimentHash.my_modules = [];
|
||||||
|
$.each($(experiment).find('.report-my-module-checkbox:checked'), function(j, myModule) {
|
||||||
|
experimentHash.my_modules.push(myModule.value);
|
||||||
|
});
|
||||||
|
reportData.project_content.push(experimentHash);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Settings
|
||||||
|
reportData.settings = { task: { protocol: {} } };
|
||||||
|
reportData.settings.all_tasks = $('.task-contents-container .select-all-task-contents').prop('checked');
|
||||||
|
$.each($('.task-contents-container .content-element .protocol-setting'), function(i, e) {
|
||||||
|
reportData.settings.task.protocol[e.value] = e.checked;
|
||||||
|
});
|
||||||
|
$.each($('.task-contents-container .content-element .task-setting'), function(i, e) {
|
||||||
|
reportData.settings.task[e.value] = e.checked;
|
||||||
|
});
|
||||||
|
reportData.settings.task.result_order = dropdownSelector.getValues('#taskResultsOrder');
|
||||||
|
|
||||||
|
return reportData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function initGenerateButton() {
|
||||||
|
$('.reports-new').on('click', '.generate-button', function() {
|
||||||
|
$.post(this.dataset.createUrl, getReportData(), function() {
|
||||||
|
// TODO
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function initReportWizard() {
|
function initReportWizard() {
|
||||||
function nextStep() {
|
function nextStep() {
|
||||||
var currentStep = parseInt($('.reports-new-footer').attr('data-step'), 10);
|
var currentStep = parseInt($('.reports-new-footer').attr('data-step'), 10);
|
||||||
|
@ -996,17 +1064,19 @@ function reportHandsonTableConverter() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.reports-new-body [href="#new-report-step-2"]').on('show.bs.tab', function() {
|
$('.reports-new-body [href="#new-report-step-2"]').on('show.bs.tab', function() {
|
||||||
var projectId = dropdownSelector.getValues('#projectSelector');
|
|
||||||
var projectContents = $('#new-report-step-2').find('.project-contents');
|
var projectContents = $('#new-report-step-2').find('.project-contents');
|
||||||
animateSpinner('.reports-new-body');
|
if (projectContents.is(':empty')) {
|
||||||
$.get(projectContents.data('project-content-url'), { project_id: projectId }, function(data) {
|
let projectId = dropdownSelector.getValues('#projectSelector');
|
||||||
animateSpinner('.reports-new-body', false);
|
animateSpinner('.reports-new-body');
|
||||||
projectContents.html(data.html);
|
$.get(projectContents.data('project-content-url'), { project_id: projectId }, function(data) {
|
||||||
if ($('.select-all-my-modules-checkbox').prop('checked')) {
|
animateSpinner('.reports-new-body', false);
|
||||||
$('.select-all-my-modules-checkbox').trigger('change');
|
projectContents.html(data.html);
|
||||||
}
|
if ($('.select-all-my-modules-checkbox').prop('checked')) {
|
||||||
$('.experiment-contents').sortable();
|
$('.select-all-my-modules-checkbox').trigger('change');
|
||||||
});
|
}
|
||||||
|
$('.experiment-contents').sortable();
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.reports-new-body [href="#new-report-step-3"]').on('show.bs.tab', function() {
|
$('.reports-new-body [href="#new-report-step-3"]').on('show.bs.tab', function() {
|
||||||
|
@ -1093,6 +1163,7 @@ function reportHandsonTableConverter() {
|
||||||
closeOnSelect: true,
|
closeOnSelect: true,
|
||||||
selectAppearance: 'simple',
|
selectAppearance: 'simple',
|
||||||
onChange: function() {
|
onChange: function() {
|
||||||
|
$('#new-report-step-2 .project-contents').empty();
|
||||||
$('.continue-button').attr('disabled', false);
|
$('.continue-button').attr('disabled', false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1136,6 +1207,7 @@ function reportHandsonTableConverter() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
initGenerateButton();
|
||||||
initReportWizard();
|
initReportWizard();
|
||||||
initDropdowns();
|
initDropdowns();
|
||||||
initTaskContents();
|
initTaskContents();
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<div>
|
<div>
|
||||||
<%= check_box_tag @name, true %>
|
<div class="sci-checkbox-container">
|
||||||
|
<%= check_box_tag @name, true, false, class: 'sci-checkbox' %>
|
||||||
|
<span class="sci-checkbox-label"></span>
|
||||||
|
</div>
|
||||||
<%= @label %>
|
<%= @label %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
<ul>
|
<ul>
|
||||||
<% @items.each do |key, value| %>
|
<% @items.each do |key, value| %>
|
||||||
<li>
|
<li>
|
||||||
<%= check_box_tag "#{@name}[]", key %>
|
<div class="sci-checkbox-container">
|
||||||
|
<%= check_box_tag "#{@name}[]", key, false ,class: 'sci-checkbox' %>
|
||||||
|
<span class="sci-checkbox-label"></span>
|
||||||
|
</div>
|
||||||
<%= value %>
|
<%= value %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -48,6 +48,7 @@ class Report < ApplicationRecord
|
||||||
table_results: true,
|
table_results: true,
|
||||||
text_results: true,
|
text_results: true,
|
||||||
result_comments: true,
|
result_comments: true,
|
||||||
|
result_order: "atoz",
|
||||||
activities: true
|
activities: true
|
||||||
}
|
}
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
<button class="btn btn-primary continue-button" disabled>
|
<button class="btn btn-primary continue-button" disabled>
|
||||||
<%= t("projects.reports.new.continue_button") %>
|
<%= t("projects.reports.new.continue_button") %>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-primary generate-button">
|
<button class="btn btn-primary generate-button" data-create-url="<%= reports_path %>">
|
||||||
<%= t("projects.reports.new.generate_button") %>
|
<%= t("projects.reports.new.generate_button") %>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<ul class="protocol-contents collapse in" id="protocolContents">
|
<ul class="protocol-contents collapse in" id="protocolContents">
|
||||||
<li>
|
<li>
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="protocol_description" <%= 'checked' if report.settings.dig(:task, :protocol, :description) %>/>
|
<input type="checkbox" class="sci-checkbox protocol-setting" value="description" <%= 'checked' if report.settings.dig(:task, :protocol, :description) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.protocol_description") %>
|
<%= t("projects.reports.wizard.third_step.protocol_description") %>
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
<% %i(completed_steps uncompleted_steps step_checklists step_files step_tables step_comments).each do |step_content| %>
|
<% %i(completed_steps uncompleted_steps step_checklists step_files step_tables step_comments).each do |step_content| %>
|
||||||
<li>
|
<li>
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="<%= step_content %>" <%= 'checked' if report.settings.dig(:task, :protocol, step_content) %> />
|
<input type="checkbox" class="sci-checkbox protocol-setting" value="<%= step_content %>" <%= 'checked' if report.settings.dig(:task, :protocol, step_content) %> />
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.#{step_content}") %>
|
<%= t("projects.reports.wizard.third_step.#{step_content}") %>
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
<label>
|
<label>
|
||||||
<%= t("projects.reports.wizard.third_step.order_results") %>
|
<%= t("projects.reports.wizard.third_step.order_results") %>
|
||||||
</label>
|
</label>
|
||||||
<select class="order-results">
|
<select class="order-results" id="taskResultsOrder">
|
||||||
<option value="atoz"><%= t("projects.reports.wizard.third_step.atoz") %></option>
|
<option value="atoz"><%= t("projects.reports.wizard.third_step.atoz") %></option>
|
||||||
<option value="ztoa"><%= t("projects.reports.wizard.third_step.ztoa") %></option>
|
<option value="ztoa"><%= t("projects.reports.wizard.third_step.ztoa") %></option>
|
||||||
<option value="new"><%= t("projects.reports.wizard.third_step.new_results") %></option>
|
<option value="new"><%= t("projects.reports.wizard.third_step.new_results") %></option>
|
||||||
|
@ -79,14 +79,14 @@
|
||||||
<li>
|
<li>
|
||||||
<div class="file-result-title-container">
|
<div class="file-result-title-container">
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="file_results" <%= 'checked' if report.settings.dig(:task, :file_results) %>/>
|
<input type="checkbox" class="sci-checkbox task-setting" value="file_results" <%= 'checked' if report.settings.dig(:task, :file_results) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
<%= t("projects.reports.wizard.third_step.file_results") %>
|
<%= t("projects.reports.wizard.third_step.file_results") %>
|
||||||
<div class="include-pages-container">
|
<div class="include-pages-container">
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox skip-select-all" value="include_file_pages" <%= 'checked' if report.settings.dig(:task, :file_results_previews) %>/>
|
<input type="checkbox" class="sci-checkbox task-setting skip-select-all" value="file_results_previews" <%= 'checked' if report.settings.dig(:task, :file_results_previews) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.insert_pages_from_pdf") %><br>
|
<%= t("projects.reports.wizard.third_step.insert_pages_from_pdf") %><br>
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="table_results" <%= 'checked' if report.settings.dig(:task, :table_results) %>/>
|
<input type="checkbox" class="sci-checkbox task-setting " value="table_results" <%= 'checked' if report.settings.dig(:task, :table_results) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.table_results") %>
|
<%= t("projects.reports.wizard.third_step.table_results") %>
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="text_results " <%= 'checked' if report.settings.dig(:task, :text_results) %>/>
|
<input type="checkbox" class="sci-checkbox task-setting" value="text_results" <%= 'checked' if report.settings.dig(:task, :text_results) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.text_results") %>
|
<%= t("projects.reports.wizard.third_step.text_results") %>
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="result_comments" <%= 'checked' if report.settings.dig(:task, :result_comments) %>/>
|
<input type="checkbox" class="sci-checkbox task-setting" value="result_comments" <%= 'checked' if report.settings.dig(:task, :result_comments) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.results_comments") %>
|
<%= t("projects.reports.wizard.third_step.results_comments") %>
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
<li>
|
<li>
|
||||||
<div class="select-all-container">
|
<div class="select-all-container">
|
||||||
<span class="sci-checkbox-container">
|
<span class="sci-checkbox-container">
|
||||||
<input type="checkbox" class="sci-checkbox" value="activities" <%= 'checked' if report.settings.dig(:task, :activities) %>/>
|
<input type="checkbox" class="sci-checkbox task-setting" value="activities" <%= 'checked' if report.settings.dig(:task, :activities) %>/>
|
||||||
<span class="sci-checkbox-label"></span>
|
<span class="sci-checkbox-label"></span>
|
||||||
</span>
|
</span>
|
||||||
<%= t("projects.reports.wizard.third_step.task_activity") %>
|
<%= t("projects.reports.wizard.third_step.task_activity") %>
|
||||||
|
|
|
@ -194,7 +194,7 @@ Rails.application.routes.draw do
|
||||||
via: [:get, :post, :put, :patch]
|
via: [:get, :post, :put, :patch]
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :reports, only: [:index, :new] do
|
resources :reports, only: [:index, :new, :create] do
|
||||||
member do
|
member do
|
||||||
get :document_preview
|
get :document_preview
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue