##// END OF EJS Templates
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment

File last commit:

r367:9e304f85f976
r367:9e304f85f976
Show More
SelectFilter2.js
218 lines | 11.1 KiB | application/javascript | JavascriptLexer
/ static / admin / js / SelectFilter2.js
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 /*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/
/*
SelectFilter2 - Turns a multiple-select box into a filter interface.
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 Requires core.js and SelectBox.js.
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 */
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 'use strict';
{
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 window.SelectFilter = {
init: function(field_id, field_name, is_stacked) {
if (field_id.match(/__prefix__/)) {
// Don't initialize on empty forms.
return;
}
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const from_box = document.getElementById(field_id);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 from_box.id += '_from'; // change its ID
from_box.className = 'filtered';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 for (const p of from_box.parentNode.getElementsByTagName('p')) {
if (p.classList.contains("info")) {
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 // Remove <p class="info">, because it just gets in the way.
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 from_box.parentNode.removeChild(p);
} else if (p.classList.contains("help")) {
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 // Move help text up to the top so it isn't below the select
// boxes or wrapped off on the side to the right of the add
// button:
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 }
}
// <div class="selector"> or <div class="selector stacked">
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const selector_div = quickElement('div', from_box.parentNode);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 selector_div.className = is_stacked ? 'selector stacked' : 'selector';
// <div class="selector-available">
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const selector_available = quickElement('div', selector_div);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 selector_available.className = 'selector-available';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 quickElement(
'span', title_available, '',
'class', 'help help-tooltip help-icon',
'title', interpolate(
gettext(
'This is the list of available %s. You may choose some by ' +
'selecting them in the box below and then clicking the ' +
'"Choose" arrow between the two boxes.'
),
[field_name]
)
);
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 filter_p.className = 'selector-filter';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338
quickElement(
'span', search_filter_label, '',
'class', 'help-tooltip search-label-icon',
'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name])
);
filter_p.appendChild(document.createTextNode(' '));
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter"));
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 filter_input.id = field_id + '_input';
selector_available.appendChild(from_box);
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 choose_all.className = 'selector-chooseall';
// <ul class="selector-chooser">
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const selector_chooser = quickElement('ul', selector_div);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 selector_chooser.className = 'selector-chooser';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', '#', 'id', field_id + '_add_link');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 add_link.className = 'selector-add';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', '#', 'id', field_id + '_remove_link');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 remove_link.className = 'selector-remove';
// <div class="selector-chosen">
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const selector_chosen = quickElement('div', selector_div);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 selector_chosen.className = 'selector-chosen';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 quickElement(
'span', title_chosen, '',
'class', 'help help-tooltip help-icon',
'title', interpolate(
gettext(
'This is the list of chosen %s. You may remove some by ' +
'selecting them in the box below and then clicking the ' +
'"Remove" arrow between the two boxes.'
),
[field_name]
)
);
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', '', 'size', from_box.size, 'name', from_box.name);
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 to_box.className = 'filtered';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_remove_all_link');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 clear_all.className = 'selector-clearall';
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 from_box.name = from_box.name + '_old';
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338
// Set up the JavaScript event handlers for the select box filter interface
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const move_selection = function(e, elem, move_func, from, to) {
if (elem.classList.contains('active')) {
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 move_func(from, to);
SelectFilter.refresh_icons(field_id);
}
e.preventDefault();
};
choose_all.addEventListener('click', function(e) {
move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to');
});
add_link.addEventListener('click', function(e) {
move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to');
});
remove_link.addEventListener('click', function(e) {
move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from');
});
clear_all.addEventListener('click', function(e) {
move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from');
});
filter_input.addEventListener('keypress', function(e) {
SelectFilter.filter_key_press(e, field_id);
});
filter_input.addEventListener('keyup', function(e) {
SelectFilter.filter_key_up(e, field_id);
});
filter_input.addEventListener('keydown', function(e) {
SelectFilter.filter_key_down(e, field_id);
});
selector_div.addEventListener('change', function(e) {
if (e.target.tagName === 'SELECT') {
SelectFilter.refresh_icons(field_id);
}
});
selector_div.addEventListener('dblclick', function(e) {
if (e.target.tagName === 'OPTION') {
if (e.target.closest('select').id === field_id + '_to') {
SelectBox.move(field_id + '_to', field_id + '_from');
} else {
SelectBox.move(field_id + '_from', field_id + '_to');
}
SelectFilter.refresh_icons(field_id);
}
});
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 from_box.closest('form').addEventListener('submit', function() {
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 SelectBox.select_all(field_id + '_to');
});
SelectBox.init(field_id + '_from');
SelectBox.init(field_id + '_to');
// Move selected from_box options to to_box
SelectBox.move(field_id + '_from', field_id + '_to');
// Initial icon refresh
SelectFilter.refresh_icons(field_id);
},
any_selected: function(field) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 // Temporarily add the required attribute and check validity.
field.required = true;
const any_selected = field.checkValidity();
field.required = false;
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 return any_selected;
},
refresh_icons: function(field_id) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const from = document.getElementById(field_id + '_from');
const to = document.getElementById(field_id + '_to');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 // Active if at least one item is selected
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 document.getElementById(field_id + '_add_link').classList.toggle('active', SelectFilter.any_selected(from));
document.getElementById(field_id + '_remove_link').classList.toggle('active', SelectFilter.any_selected(to));
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 // Active if the corresponding box isn't empty
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 document.getElementById(field_id + '_add_all_link').classList.toggle('active', from.querySelector('option'));
document.getElementById(field_id + '_remove_all_link').classList.toggle('active', to.querySelector('option'));
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 },
filter_key_press: function(event, field_id) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const from = document.getElementById(field_id + '_from');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 // don't submit form if user pressed Enter
if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) {
from.selectedIndex = 0;
SelectBox.move(field_id + '_from', field_id + '_to');
from.selectedIndex = 0;
event.preventDefault();
}
},
filter_key_up: function(event, field_id) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const from = document.getElementById(field_id + '_from');
const temp = from.selectedIndex;
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);
from.selectedIndex = temp;
},
filter_key_down: function(event, field_id) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const from = document.getElementById(field_id + '_from');
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 // right arrow -- move across
if ((event.which && event.which === 39) || (event.keyCode && event.keyCode === 39)) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 const old_index = from.selectedIndex;
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 SelectBox.move(field_id + '_from', field_id + '_to');
from.selectedIndex = (old_index === from.length) ? from.length - 1 : old_index;
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 return;
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 }
// down arrow -- wrap around
if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) {
from.selectedIndex = (from.length === from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;
}
// up arrow -- wrap around
if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) {
from.selectedIndex = (from.selectedIndex === 0) ? from.length - 1 : from.selectedIndex - 1;
}
}
};
window.addEventListener('load', function(e) {
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 document.querySelectorAll('select.selectfilter, select.selectfilterstacked').forEach(function(el) {
const data = el.dataset;
SelectFilter.init(el.id, data.fieldName, parseInt(data.isStacked, 10));
Nueva plantilla, prueba comunicacion y nuevos campos ddsrest
r338 });
});
Renato-TUF
Se logró solucionar el problema del ID replicado al momento de crear un campaña con template experiment
r367 }