opzione reset_on_excluded ora attiva e funzionante

my-submodulepoetico
Guido Longoni 2023-07-05 20:28:41 +02:00
parent 6e8b725ba7
commit 4a1d96cf11
2 changed files with 52 additions and 22 deletions

View File

@ -134,11 +134,16 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
if "widget" not in kwargs:
daf = self.get_drilldown_autocomplete_fields(request)
if db_field.name in daf:
attrs = {}
attrs = {'data-drilldown_enabled': 1}
if 'linked' in daf[db_field.name]:
attrs["data-linkedfields"] = json.dumps(
list(daf[db_field.name]['linked'].keys()))
if daf[db_field.name].get('included_only', False):
attrs['data-included_only'] = 1
else:
if 'reset_on_excluded' in daf[db_field.name]:
attrs['data-reset_on_excluded'] = json.dumps(
list(daf[db_field.name]['reset_on_excluded']))
kwargs["widget"] = DrillDownAutocompleteSelect(
db_field, self.admin_site, attrs=attrs, using=db
)

View File

@ -15,8 +15,9 @@
model_name: element.dataset.modelName,
field_name: field_name
};
if (element.dataset.hasOwnProperty('linkedfields')) {
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
out.drilldown = 1;
if (element.dataset.hasOwnProperty('linkedfields')) {
var linkedfields = JSON.parse(element.dataset.linkedfields)
var linkedfields_obj = {};
var some_obj = false;
@ -36,10 +37,11 @@
out['linkedfields'] = JSON.stringify(linkedfields_obj);
}
}
}
return out
}
};
if (element.dataset.hasOwnProperty('linkedfields')) {
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
select2_config.templateResult = (item,container)=>{
var styleClass = '';
@ -62,6 +64,29 @@
}
}
$(element).select2(select2_config);
if (element.dataset.hasOwnProperty('reset_on_excluded')) {
$(element).on('select2:select', ev=>{
var data = $(element).select2('data');
if (Array.isArray(data) && data.length > 0) {
var ddok = data[0].ddok;
if (!(ddok ?? true)) {
var reset_on_excluded = JSON.parse(element.dataset.reset_on_excluded);
for (var i in reset_on_excluded) {
if (reset_on_excluded.hasOwnProperty(i)) {
var field_name = element.dataset.fieldName
var remote_field = reset_on_excluded[i];
var field_id = element.dataset.select2Id;
var remote_id = field_id.slice(0, field_id.length - field_name.length) + remote_field;
var remote_element = document.querySelectorAll('[data-select2-id=' + remote_id + '].admin-autocomplete')[0];
$(remote_element).val(null).trigger("change");
}
}
}
}
}
);
}
});
return this;
}