Skip to content
Snippets Groups Projects
Commit 215f969f authored by Benoit Alessandroni's avatar Benoit Alessandroni
Browse files

Merge branch 'bugfix/improve-resource-creation-edition-script' into 'master'

Bugfix/improve resource creation edition script

See merge request !170
parents 83471a44 d9c38ca8
No related branches found
No related tags found
1 merge request!170Bugfix/improve resource creation edition script
Pipeline #5995 failed with stage
in 1 hour
......@@ -107,7 +107,7 @@ container.block_list
hidden
i.fas.fa-spinner.fa-spin
sib-display#circles-list(
sib-display(
loader-id="resources-loader-step1"
data-src=`${endpoints.steps}1/`,
fields='name'
......@@ -165,7 +165,7 @@ container.block_list
//Step 2
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}2/`,
fields='name'
class="accordion"
......@@ -220,7 +220,7 @@ container.block_list
)
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}3/`,
fields='name'
class="accordion"
......@@ -275,7 +275,7 @@ container.block_list
//Step 4
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}4/`,
fields='name'
class="accordion"
......@@ -332,7 +332,7 @@ container.block_list
//Step 5
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}5/`,
fields='name'
class="accordion"
......@@ -388,7 +388,7 @@ container.block_list
//Step 6
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}6/`,
fields='name'
class="accordion"
......
......@@ -99,7 +99,7 @@ container.block_list.flex.flex_espace
div#resources-loader-step1-browse-database
hidden
i.fas.fa-spinner.fa-spin
sib-display#circles-list(
sib-display(
loader-id="resources-loader-step1-browse-database"
data-src=`${endpoints.steps}1/`,
fields='name'
......@@ -156,7 +156,7 @@ container.block_list.flex.flex_espace
//Step 2
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}2/`,
fields='name'
class="accordion"
......@@ -212,7 +212,7 @@ container.block_list.flex.flex_espace
//Step 3
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}3/`,
fields='name'
class="accordion"
......@@ -269,7 +269,7 @@ container.block_list.flex.flex_espace
//Step 4
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}4/`,
fields='name'
class="accordion"
......@@ -326,7 +326,7 @@ container.block_list.flex.flex_espace
//Step 5
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}5/`,
fields='name'
class="accordion"
......@@ -382,7 +382,7 @@ container.block_list.flex.flex_espace
//Step 6
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}6/`,
fields='name'
class="accordion"
......
......@@ -92,7 +92,7 @@ container.block_list.flex.flex_espace
div#resources-loader-step1-public
hidden
i.fas.fa-spinner.fa-spin
sib-display#circles-list(
sib-display(
loader-id="resources-loader-step1-public"
data-src=`${endpoints.steps}1/`,
fields='name'
......@@ -150,7 +150,7 @@ container.block_list.flex.flex_espace
//Step 2
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}2/`,
fields='name'
class="accordion"
......@@ -207,7 +207,7 @@ container.block_list.flex.flex_espace
//Step 3
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}3/`,
fields='name'
class="accordion"
......@@ -264,7 +264,7 @@ container.block_list.flex.flex_espace
//Step 4
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}4/`,
fields='name'
class="accordion"
......@@ -322,7 +322,7 @@ container.block_list.flex.flex_espace
//Step 5
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}5/`,
fields='name'
class="accordion"
......@@ -378,7 +378,7 @@ container.block_list.flex.flex_espace
)
//Step 6
div.step
sib-display#circles-list(
sib-display(
data-src=`${endpoints.steps}6/`,
fields='name'
class="accordion"
......
......@@ -184,7 +184,8 @@ function selectHiddenManagement(select_hidden, option_selected) {
//Removing the selected attribute from previous selection
option_hidden.removeAttribute("selected");
if (option_hidden.value == option_selected.value) {
option_hidden.setAttribute("selected", "selected");
select_hidden.setAttribute("value", option_selected.value);
//Actually selecting the option if it is the good one
select_hidden.value = option_selected.value;
break;
......@@ -235,6 +236,8 @@ function selectHiddenManagementForType(tab, form) {
//Actually selecting the option if it is the good one
option_hidden.setAttribute("selected", "selected");
select_hidden.setAttribute("value", option_hidden.value);
select_hidden.value = option_hidden.value;
break;
}
}
......@@ -257,26 +260,30 @@ function InitManagementForType() {
forms.forEach(form => {
form.addEventListener("populate", e => {
let type_hidden_field = form.querySelectorAll('select[name="type"]');
type_hidden_field.forEach(function(select_hidden) {
options_hidden = select_hidden.getElementsByTagName("option");
for (let option_hidden of options_hidden) {
option_hidden.removeAttribute("selected");
str = option_hidden.value
if (str.substr(str.length - 10) == 'types/1/"}') {
//Actually selecting the option if it is the good one
option_hidden.setAttribute("selected", "selected");
select_hidden.setAttribute("value", option_hidden.value);
setTimeout(function() {
let type_hidden_field = form.querySelectorAll('select[name="type"]');
type_hidden_field.forEach(function(select_hidden) {
options_hidden = select_hidden.getElementsByTagName("option");
for (let option_hidden of options_hidden) {
option_hidden.removeAttribute("selected");
str = option_hidden.value
if (str.substr(str.length - 10) == 'types/1/"}') {
//Actually selecting the option if it is the good one
option_hidden.setAttribute("selected", "selected");
select_hidden.setAttribute("value", option_hidden.value);
select_hidden.value = option_hidden.value;
break;
}
}
}
//Trigerring a reload of the associated form
let parent_form = select_hidden.closest("sib-form");
parent_form.component.inputChange();
parent_form.dispatchEvent(new CustomEvent('formChange'));
refreshPagination();
});
//Trigerring a reload of the associated form
let parent_form = select_hidden.closest("sib-form");
parent_form.component.inputChange();
parent_form.dispatchEvent(new CustomEvent('formChange'));
refreshPagination();
});
}, 3000);
});
});
}
......@@ -477,6 +484,35 @@ async function refreshRequestList(formId, listId) {
});
}
/**
* Generic method to add filters events listeners to hidden search forms
* @param {String} baseElement - Id of the sumitted form
* @param {Element} filterForm - Id of the list to refresh
* @param {String} fieldName - Id of the list to refresh
*/
function addEventListenersToSearchFormFields(baseElement, filterForm, fieldName) {
//To retrieve format
setTimeout(function() {
let filter_field = filterForm.querySelector(
`select[name="${fieldName}"]`
);
if (filter_field) {
filter_field.addEventListener('change', function() {
let option_selected = filter_field.querySelector(
"option:checked"
);
let hidden_fields = baseElement.querySelectorAll(
`hidden-widget[name="more_criterias_hidden"] select[name="${fieldName}"]`
);
hidden_fields.forEach(function(select_hidden) {
selectHiddenManagement(select_hidden, option_selected);
});
});
}
}, 5000);
}
/**
* For entrepreneur dashboard only :
* As we cannot have multiple imbricated filtering with the native sib-display, we manage it manually.
......@@ -484,172 +520,78 @@ async function refreshRequestList(formId, listId) {
*/
function addProperFilterToSearchComponents(targetId) {
var baseElement = document.getElementById(targetId);
// Adding default type management
var forms = baseElement.querySelectorAll(".resource_by_step");
forms.forEach(form => {
form.addEventListener("populate", e => {
//Manage the pagination
refreshPagination();
//SEARCH BY KEYWORD
//To retrieve keyword
//https://git.happy-dev.fr/startinblox/framework/sib-core/issues/379
//TODO: Wait for a solution to filter with multiple value with "OR" instead of "AND".
let keyword_form = baseElement.querySelectorAll(".search-by-keyword")[0];
let keyword_field = keyword_form.querySelector(
`input[name="name_keyword"]`
);
if (keyword_field) {
let keyword_submit = baseElement.querySelectorAll(" .keyword_submit")[0];
let keyword_hidden_fields = baseElement.querySelectorAll(
'hidden-widget[name="search_for_a_resource"] input'
);
keyword_submit.addEventListener("click", function() {
keyword_hidden_fields.forEach(hidden_field => {
hidden_field.setAttribute("value", keyword_field.value);
hidden_field.value = keyword_field.value;
let parent_form = hidden_field.closest("sib-form");
parent_form.component.inputChange();
parent_form.dispatchEvent(new CustomEvent('formChange'));
refreshPagination();
});
let tabs = baseElement.getElementsByClassName("filter_by_type");
for (let tab of tabs) {
tab.addEventListener("click", function() {
selectHiddenManagementForType(tab, form);
});
}
});
});
//MORE CRITERIAS
const more_criterias_form = baseElement.querySelectorAll(
".more_criterias"
)[0];
more_criterias_form.addEventListener("populate", e => {
//SEARCH BY KEYWORD
//To retrieve keyword
//https://git.happy-dev.fr/startinblox/framework/sib-core/issues/379
//TODO: Wait for a solution to filter with multiple value with "OR" instead of "AND".
let keyword_form = baseElement.querySelectorAll(".search-by-keyword")[0];
let keyword_field = keyword_form.querySelector(
`input[name="name_keyword"]`
);
//SEARCH IN DATABASE INSTANCE ONLY
let instance_only = baseElement.querySelectorAll(
".instance_database_only"
)[0];
if (instance_only) {
let checkbox_instance_only = instance_only.querySelector("input");
if (checkbox_instance_only) {
checkbox_instance_only.onclick = function() {
if (this.checked) {
//We have to retrieve all data-scr needed to make them pointed only on the instance.
//How to?
}
};
}
}
//MORE CRITERIAS
const more_criterias_form = baseElement.querySelectorAll(
".more_criterias"
)[0];
// https://git.happy-dev.fr/startinblox/framework/sib-core/issues/453
window.setTimeout(() => {
//Manage fake tabs for type
let tabs = baseElement.getElementsByClassName("filter_by_type");
for (let tab of tabs) {
tab.addEventListener("click", function() {
selectHiddenManagementForType(tab, form);
});
}
//To retrieve format
let format_field_search = more_criterias_form.querySelector(
`select[name="format"]`
);
let format_hidden_field = baseElement.querySelectorAll(
'hidden-widget[name="more_criterias_hidden"] select[name="format"]'
);
//TODO: The first time the event is not call.
if (format_field_search) {
format_field_search.onchange = function() {
let option_selected = format_field_search.querySelector(
"option:checked"
);
format_hidden_field.forEach(function(select_hidden) {
selectHiddenManagement(select_hidden, option_selected);
});
};
}
//To retrieve language
let language_field_search = more_criterias_form.querySelector(
`select[name="language"]`
);
let language_hidden_field = baseElement.querySelectorAll(
'hidden-widget[name="more_criterias_hidden"] select[name="language"]'
);
if (language_field_search) {
language_field_search.onchange = function() {
let option_selected = language_field_search.querySelector(
"option:checked"
);
language_hidden_field.forEach(function(select_hidden) {
selectHiddenManagement(select_hidden, option_selected);
});
};
}
if (keyword_field) {
let keyword_submit = baseElement.querySelectorAll(" .keyword_submit")[0];
let keyword_hidden_fields = baseElement.querySelectorAll(
'hidden-widget[name="search_for_a_resource"] input'
);
//To retrieve field
let field_field_search = more_criterias_form.querySelector(
`select[name="fields"]`
);
let field_hidden_field = baseElement.querySelectorAll(
'hidden-widget[name="more_criterias_hidden"] select[name="fields"]'
);
keyword_submit.addEventListener("click", function() {
keyword_hidden_fields.forEach(hidden_field => {
hidden_field.setAttribute("value", keyword_field.value);
hidden_field.value = keyword_field.value;
if (field_field_search) {
field_field_search.onchange = function() {
let option_selected = field_field_search.querySelector(
"option:checked"
);
let parent_form = hidden_field.closest("sib-form");
parent_form.component.inputChange();
parent_form.dispatchEvent(new CustomEvent('formChange'));
refreshPagination();
});
});
}
field_hidden_field.forEach(function(select_hidden) {
selectHiddenManagement(select_hidden, option_selected);
});
};
}
// https://git.happy-dev.fr/startinblox/framework/sib-core/issues/453
//Manage fake tabs for type
addEventListenersToSearchFormFields(baseElement, more_criterias_form, 'format');
addEventListenersToSearchFormFields(baseElement, more_criterias_form, 'languages');
addEventListenersToSearchFormFields(baseElement, more_criterias_form, 'fields');
addEventListenersToSearchFormFields(baseElement, more_criterias_form, 'country');
//To retrieve year of publication
//WARNING: If the user want to select "20" to get 21century made, he will get no result.
//I think it is a UX problem.
let year_field_search = more_criterias_form.querySelector(
`input[name="publication_year"]`
);
//To retrieve year of publication
//WARNING: If the user want to select "20" to get 21century made, he will get no result.
//I think it is a UX problem.
let year_field_search = more_criterias_form.querySelector(
`input[name="publication_year"]`
);
if (year_field_search) {
year_field_search.addEventListener("input", function() {
let year_hidden_fields = baseElement.querySelectorAll(
'hidden-widget[name="more_criterias_hidden"] input[name="publication_year"]'
);
if (year_field_search) {
year_field_search.addEventListener("input", function() {
year_hidden_fields.forEach(field => {
inputHiddenManagement(field, year_field_search, form);
});
});
}
//To retrieve the country
let country_field_search = more_criterias_form.querySelector(
`select[name="country"]`
);
let country_hidden_fields = baseElement.querySelectorAll(
'hidden-widget[name="more_criterias_hidden"] select[name="country"]'
);
if (country_field_search) {
country_field_search.onchange = function() {
let option_selected = country_field_search.querySelector(
"option:checked"
);
country_hidden_fields.forEach(function(select_hidden) {
selectHiddenManagement(select_hidden, option_selected);
});
};
}
}, 1000);
});
year_hidden_fields.forEach(field => {
inputHiddenManagement(field, year_field_search, form);
});
});
}
});
}
......@@ -696,7 +638,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX ON LOAD XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
jQuery(document).ready(function($) {
document.addEventListener("DOMContentLoaded", event => {
Sentry.init({ dsn: 'https://a95ca890079d4602a2096a64ca56c9d3@o383270.ingest.sentry.io/5213278' });
window.addEventListener('requestNavigation', function(e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment