bugfix e ottimizzazione. ddok non veniva salvato
parent
bb6a45e560
commit
0dbe8f2b6d
|
|
@ -5,6 +5,61 @@
|
||||||
$.fn.djangoAdminSelect2 = function() {
|
$.fn.djangoAdminSelect2 = function() {
|
||||||
$.each(this, function(i, element) {
|
$.each(this, function(i, element) {
|
||||||
const select2_config = {};
|
const select2_config = {};
|
||||||
|
let filtered_by_fields;
|
||||||
|
let reset_on_something = false;
|
||||||
|
const reset_on_excluded = [];
|
||||||
|
const reset_on_included = [];
|
||||||
|
|
||||||
|
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
||||||
|
|
||||||
|
if (element.dataset.hasOwnProperty('reset_on_included')) {
|
||||||
|
reset_on_included.push(...JSON.parse(element.dataset.reset_on_included));
|
||||||
|
reset_on_something = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.dataset.hasOwnProperty('filtered_by')) {
|
||||||
|
filtered_by_fields = JSON.parse(element.dataset.filtered_by);
|
||||||
|
if (element.dataset.hasOwnProperty('reset_on_excluded')) {
|
||||||
|
reset_on_excluded.push(...JSON.parse(element.dataset.reset_on_excluded));
|
||||||
|
reset_on_something = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (reset_on_something) {
|
||||||
|
element.drilldown_items = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
select2_config.templateResult = (item, container)=>{
|
||||||
|
let styleClass = '';
|
||||||
|
|
||||||
|
element.classList.add('drilldown');
|
||||||
|
|
||||||
|
if (item.ddok === 1) {
|
||||||
|
styleClass = 'drilldown_ok';
|
||||||
|
} else {
|
||||||
|
styleClass = 'drilldown_ko';
|
||||||
|
}
|
||||||
|
|
||||||
|
container.classList.add(styleClass);
|
||||||
|
if (reset_on_something) {
|
||||||
|
element.drilldown_items[item.id] = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.hasOwnProperty('autoselect')) {
|
||||||
|
const includedOnly = element.dataset.included_only ?? false;
|
||||||
|
const dataLength = $(element).select2('data').length;
|
||||||
|
|
||||||
|
if (includedOnly || dataLength == 0) {
|
||||||
|
$(element).select2("trigger", "select", {
|
||||||
|
data: item
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(`<span class="${styleClass}"></span>`).text(item.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
select2_config.ajax = {
|
select2_config.ajax = {
|
||||||
data: (params)=>{
|
data: (params)=>{
|
||||||
const {fieldName, appLabel, modelName} = element.dataset;
|
const {fieldName, appLabel, modelName} = element.dataset;
|
||||||
|
|
@ -18,8 +73,12 @@
|
||||||
|
|
||||||
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
||||||
|
|
||||||
|
if (reset_on_something && (params.page ?? 1) < 2) {
|
||||||
|
element.drilldown_items = {};
|
||||||
|
}
|
||||||
|
|
||||||
if (element.dataset.hasOwnProperty('filtered_by')) {
|
if (element.dataset.hasOwnProperty('filtered_by')) {
|
||||||
const filtered_by_fields = JSON.parse(element.dataset.filtered_by)
|
|
||||||
const filtered_by_dict = {};
|
const filtered_by_dict = {};
|
||||||
let some_obj = false;
|
let some_obj = false;
|
||||||
|
|
||||||
|
|
@ -47,61 +106,18 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
|
||||||
select2_config.templateResult = (item,container)=>{
|
|
||||||
let styleClass = '';
|
|
||||||
|
|
||||||
element.classList.add('drilldown');
|
|
||||||
|
|
||||||
if (item.ddok === 1) {
|
|
||||||
styleClass = 'drilldown_ok';
|
|
||||||
} else {
|
|
||||||
styleClass = 'drilldown_ko';
|
|
||||||
}
|
|
||||||
|
|
||||||
container.classList.add(styleClass);
|
|
||||||
|
|
||||||
if (item.hasOwnProperty('autoselect')) {
|
|
||||||
const includedOnly = element.dataset.included_only ?? false;
|
|
||||||
const dataLength = $(element).select2('data').length;
|
|
||||||
|
|
||||||
if (includedOnly || dataLength == 0) {
|
|
||||||
$(element).select2("trigger", "select", {
|
|
||||||
data: item
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $(`<span class="${styleClass}"></span>`).text(item.text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$(element).select2(select2_config);
|
$(element).select2(select2_config);
|
||||||
|
|
||||||
const reset_on_excluded = [];
|
|
||||||
const reset_on_included = [];
|
|
||||||
let all_fields_to_reset;
|
|
||||||
let reset_on_something = false;
|
|
||||||
|
|
||||||
if (element.dataset.hasOwnProperty('reset_on_excluded')) {
|
|
||||||
reset_on_excluded.push(...JSON.parse(element.dataset.reset_on_excluded));
|
|
||||||
reset_on_something = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (element.dataset.hasOwnProperty('reset_on_included')) {
|
|
||||||
reset_on_included.push(...JSON.parse(element.dataset.reset_on_included));
|
|
||||||
reset_on_something = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reset_on_something) {
|
if (reset_on_something) {
|
||||||
$(element).on('select2:select', (ev) => {
|
$(element).on('select2:select', (ev) => {
|
||||||
const data = $(element).select2('data');
|
const data = $(element).select2('data');
|
||||||
|
|
||||||
if (Array.isArray(data) && data.length > 0) {
|
if (element.hasOwnProperty("drilldown_items") && Array.isArray(data) && data.length > 0) {
|
||||||
const ddok = data[0].ddok;
|
const item = element.drilldown_items[data[0].id];
|
||||||
|
const ddok = item !== undefined ? item.ddok : undefined;
|
||||||
|
|
||||||
if (ddok !== undefined) {
|
if (ddok !== undefined) {
|
||||||
all_fields_to_reset = ddok ? reset_on_included : reset_on_excluded;
|
let all_fields_to_reset = ddok ? reset_on_included : reset_on_excluded;
|
||||||
|
|
||||||
if (all_fields_to_reset.length > 0) {
|
if (all_fields_to_reset.length > 0) {
|
||||||
all_fields_to_reset.forEach((field_to_reset)=>{
|
all_fields_to_reset.forEach((field_to_reset)=>{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue