mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-21 07:26:15 +08:00
Add repositories settings to report wizard [SCI-5648] (#3269)
* Add repositories settings to report wizard [SCI-5648] * Move repositories from report settings to content [SCI-5648]
This commit is contained in:
parent
fe48e35cf0
commit
7c75f170d0
|
@ -1014,35 +1014,31 @@ function reportHandsonTableConverter() {
|
|||
});
|
||||
|
||||
// Project content
|
||||
reportData.project_content = [];
|
||||
reportData.project_content = { experiments: {}, repositories: [] };
|
||||
$.each($('.project-contents-container .experiment-element'), function(i, experiment) {
|
||||
let experimentHash = {};
|
||||
let expCheckbox = $(experiment).find('.report-experiment-checkbox');
|
||||
if (!expCheckbox.prop('checked') && !expCheckbox.prop('indeterminate')) return;
|
||||
|
||||
experimentHash.experiment_id = $(experiment).find('.report-experiment-checkbox').val();
|
||||
experimentHash.my_modules = [];
|
||||
let experimentId = $(experiment).find('.report-experiment-checkbox').val();
|
||||
reportData.project_content.experiments[experimentId] = [];
|
||||
$.each($(experiment).find('.report-my-module-checkbox:checked'), function(j, myModule) {
|
||||
experimentHash.my_modules.push(myModule.value);
|
||||
reportData.project_content.experiments[experimentId].push(myModule.value);
|
||||
});
|
||||
reportData.project_content.push(experimentHash);
|
||||
});
|
||||
$.each($('.task-contents-container .repositories-contents .sci-checkbox:checked'), function(i, e) {
|
||||
reportData.project_content.repositories.push(parseInt(e.value, 10));
|
||||
});
|
||||
|
||||
// Settings
|
||||
if ($('.project-contents-container .select-all-my-modules-checkbox').prop('checked')) {
|
||||
reportData.report.settings.all_tasks = $('.project-contents-container .select-all-my-modules-checkbox')
|
||||
.prop('checked');
|
||||
}
|
||||
$.each($('.task-contents-container .content-element .protocol-setting'), function(i, e) {
|
||||
if (e.checked) {
|
||||
reportData.report.settings.task.protocol[e.value] = e.checked;
|
||||
}
|
||||
});
|
||||
$.each($('.task-contents-container .content-element .task-setting'), function(i, e) {
|
||||
if (e.checked) {
|
||||
reportData.report.settings.task[e.value] = e.checked;
|
||||
}
|
||||
});
|
||||
|
||||
reportData.report.settings.task.result_order = dropdownSelector.getValues('#taskResultsOrder');
|
||||
|
||||
return reportData;
|
||||
|
@ -1050,8 +1046,12 @@ function reportHandsonTableConverter() {
|
|||
|
||||
function initGenerateButton() {
|
||||
$('.reports-new').on('click', '.generate-button', function() {
|
||||
$.post(this.dataset.createUrl, getReportData(), function() {
|
||||
// TODO
|
||||
$.ajax({
|
||||
url: this.dataset.createUrl,
|
||||
type: 'POST',
|
||||
data: JSON.stringify(getReportData()),
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
success: function() {}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1059,8 +1059,13 @@ function reportHandsonTableConverter() {
|
|||
var params = getReportData();
|
||||
params.report.name = 'New ' + params.report.name;
|
||||
e.preventDefault();
|
||||
$.post(this.dataset.createUrl, params, function() {
|
||||
// TODO
|
||||
$.ajax({
|
||||
url: this.dataset.createUrl,
|
||||
type: 'POST',
|
||||
data: JSON.stringify(getReportData()),
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
|
||||
success: function() {}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1070,7 +1075,9 @@ function reportHandsonTableConverter() {
|
|||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: this.dataset.updateUrl,
|
||||
data: getReportData()
|
||||
contentType: 'application/json; charset=utf-8',
|
||||
data: JSON.stringify(getReportData()),
|
||||
success: function() {}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -1248,6 +1255,19 @@ function reportHandsonTableConverter() {
|
|||
disableSearch: true
|
||||
});
|
||||
|
||||
function SelectAllRepositoriesStatus() {
|
||||
var selectAll = $('.task-contents-container .select-all-repositories');
|
||||
var all = $('.repositories-contents .sci-checkbox').length;
|
||||
var checked = $('.repositories-contents .sci-checkbox:checked').length;
|
||||
selectAll.prop('indeterminate', false);
|
||||
if (all === checked) {
|
||||
selectAll.prop('checked', true);
|
||||
} else {
|
||||
selectAll.prop('checked', false);
|
||||
if (checked > 0) selectAll.prop('indeterminate', true);
|
||||
}
|
||||
}
|
||||
|
||||
$('.task-contents-container')
|
||||
.on('change', '.select-all-task-contents', function() {
|
||||
$('.content-element .sci-checkbox:not(.skip-select-all)')
|
||||
|
@ -1260,7 +1280,16 @@ function reportHandsonTableConverter() {
|
|||
.on('change', '.all-results-checkbox', function() {
|
||||
$('.results-type-contents .sci-checkbox:not(.skip-select-all)')
|
||||
.prop('checked', this.checked);
|
||||
})
|
||||
.on('change', '.select-all-repositories', function() {
|
||||
$('.repositories-contents .sci-checkbox')
|
||||
.prop('checked', this.checked);
|
||||
})
|
||||
.on('change', '.repositories-contents .sci-checkbox', function() {
|
||||
SelectAllRepositoriesStatus();
|
||||
});
|
||||
|
||||
SelectAllRepositoriesStatus();
|
||||
}
|
||||
|
||||
initGenerateButton();
|
||||
|
|
|
@ -488,6 +488,16 @@
|
|||
}
|
||||
}
|
||||
|
||||
.repositories-items-description {
|
||||
@include font-button;
|
||||
display: inline-block;
|
||||
margin-top: 1em;
|
||||
|
||||
.fas {
|
||||
color: $brand-focus;
|
||||
}
|
||||
}
|
||||
|
||||
.all-results-container {
|
||||
align-items: flex-start;
|
||||
display: flex;
|
||||
|
|
|
@ -51,6 +51,7 @@ class ReportsController < ApplicationController
|
|||
# Report grouped by modules
|
||||
def new
|
||||
@templates = Extends::REPORT_TEMPLATES
|
||||
@repositories = Repository.accessible_by_teams(current_team).active.select(:id, :name)
|
||||
@report = current_team.reports.new
|
||||
end
|
||||
|
||||
|
@ -107,9 +108,12 @@ class ReportsController < ApplicationController
|
|||
def edit
|
||||
@edit = true
|
||||
@templates = Extends::REPORT_TEMPLATES
|
||||
@repositories = Repository.accessible_by_teams(current_team).active.select(:id, :name)
|
||||
|
||||
@project_contents = {
|
||||
experiments: @report.report_elements.where(type_of: 'experiment').pluck(:experiment_id),
|
||||
my_modules: @report.report_elements.where(type_of: 'my_module').pluck(:my_module_id)
|
||||
my_modules: @report.report_elements.where(type_of: 'my_module').pluck(:my_module_id),
|
||||
repositories: @report.report_elements.where(type_of: 'my_module_repository').pluck(:repository_id).uniq
|
||||
}
|
||||
render :new
|
||||
end
|
||||
|
|
|
@ -43,17 +43,17 @@ module ReportActions
|
|||
private
|
||||
|
||||
def generate_content
|
||||
@content.each do |_i, exp|
|
||||
generate_experiment_content(exp)
|
||||
@content['experiments'].each do |exp_id, my_modules|
|
||||
generate_experiment_content(exp_id, my_modules)
|
||||
end
|
||||
end
|
||||
|
||||
def generate_experiment_content(exp)
|
||||
experiment = Experiment.find_by(id: exp[:experiment_id])
|
||||
def generate_experiment_content(exp_id, my_modules)
|
||||
experiment = Experiment.find_by(id: exp_id)
|
||||
return if !experiment && !can_read_experiment?(experiment, @user)
|
||||
|
||||
experiment_element = save_element({ 'experiment_id' => experiment.id }, :experiment, nil)
|
||||
generate_my_modules_content(experiment, experiment_element, exp[:my_modules])
|
||||
generate_my_modules_content(experiment, experiment_element, my_modules)
|
||||
end
|
||||
|
||||
def generate_my_modules_content(experiment, experiment_element, selected_my_modules)
|
||||
|
@ -78,6 +78,8 @@ module ReportActions
|
|||
end
|
||||
|
||||
my_module.experiment.project.assigned_repositories_and_snapshots.each do |repository|
|
||||
next unless @content['repositories'].include?(repository.id)
|
||||
|
||||
save_element(
|
||||
{ 'my_module_id' => my_module.id, 'repository_id' => repository.id },
|
||||
:my_module_repository,
|
||||
|
|
|
@ -47,6 +47,39 @@
|
|||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="content-element">
|
||||
<i class="fas fa-caret-down " data-toggle="collapse" href="#resultContents" aria-expanded="false"></i>
|
||||
<span class="content-element-title">
|
||||
<%= t("projects.reports.wizard.third_step.assigned_items") %>
|
||||
</span><br>
|
||||
<span class="repositories-items-description">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
<%= t("projects.reports.wizard.third_step.assigned_items_description") %>
|
||||
</span>
|
||||
<div class="divider"></div>
|
||||
<ul class="collapse in" id="resultContents">
|
||||
<li>
|
||||
<span class="sci-checkbox-container">
|
||||
<input type="checkbox" class="sci-checkbox select-all-repositories"/>
|
||||
<span class="sci-checkbox-label"></span>
|
||||
</span>
|
||||
<%= t("projects.reports.wizard.third_step.include_all_assigned_iitems") %>
|
||||
<div class="divider"></div>
|
||||
<ul class="repositories-contents">
|
||||
<% @repositories.each do |repository| %>
|
||||
<li>
|
||||
<span class="sci-checkbox-container">
|
||||
<input type="checkbox" class="sci-checkbox repositories-setting" value="<%= repository.id %>" <%= 'checked' if report.new_record? || @project_contents[:repositories].include?(repository.id) %> />
|
||||
<span class="sci-checkbox-label"></span>
|
||||
</span>
|
||||
<%= repository.name %>
|
||||
<div class="divider"></div>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="content-element">
|
||||
<i class="fas fa-caret-down " data-toggle="collapse" href="#resultContents" aria-expanded="false"></i>
|
||||
<span class="content-element-title">
|
||||
|
|
|
@ -558,6 +558,9 @@ en:
|
|||
step_files: "Step files"
|
||||
step_tables: "Step tables"
|
||||
step_comments: "Step comments"
|
||||
assigned_items: "Assigned items"
|
||||
assigned_items_description: "Inventories selected below will only contain the items that you assigned to the tasks directly."
|
||||
include_all_assigned_iitems: "Include all assigned items from the following inventories"
|
||||
results: "Results"
|
||||
all_results: "Include all results"
|
||||
order_results: "Order results"
|
||||
|
|
Loading…
Reference in a new issue