opzione reset_on_excluded ora attiva e funzionante
parent
6e8b725ba7
commit
4a1d96cf11
|
|
@ -134,11 +134,16 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
|
||||||
if "widget" not in kwargs:
|
if "widget" not in kwargs:
|
||||||
daf = self.get_drilldown_autocomplete_fields(request)
|
daf = self.get_drilldown_autocomplete_fields(request)
|
||||||
if db_field.name in daf:
|
if db_field.name in daf:
|
||||||
attrs = {}
|
attrs = {'data-drilldown_enabled': 1}
|
||||||
attrs["data-linkedfields"] = json.dumps(
|
if 'linked' in daf[db_field.name]:
|
||||||
list(daf[db_field.name]['linked'].keys()))
|
attrs["data-linkedfields"] = json.dumps(
|
||||||
if daf[db_field.name].get('included_only', False):
|
list(daf[db_field.name]['linked'].keys()))
|
||||||
attrs['data-included_only'] = 1
|
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(
|
kwargs["widget"] = DrillDownAutocompleteSelect(
|
||||||
db_field, self.admin_site, attrs=attrs, using=db
|
db_field, self.admin_site, attrs=attrs, using=db
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -15,31 +15,33 @@
|
||||||
model_name: element.dataset.modelName,
|
model_name: element.dataset.modelName,
|
||||||
field_name: field_name
|
field_name: field_name
|
||||||
};
|
};
|
||||||
if (element.dataset.hasOwnProperty('linkedfields')) {
|
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
||||||
out.drilldown = 1;
|
out.drilldown = 1;
|
||||||
var linkedfields = JSON.parse(element.dataset.linkedfields)
|
if (element.dataset.hasOwnProperty('linkedfields')) {
|
||||||
var linkedfields_obj = {};
|
var linkedfields = JSON.parse(element.dataset.linkedfields)
|
||||||
var some_obj = false;
|
var linkedfields_obj = {};
|
||||||
for (var i in linkedfields) {
|
var some_obj = false;
|
||||||
if (linkedfields.hasOwnProperty(i)) {
|
for (var i in linkedfields) {
|
||||||
var remote_field = linkedfields[i];
|
if (linkedfields.hasOwnProperty(i)) {
|
||||||
var field_id = element.dataset.select2Id;
|
var remote_field = linkedfields[i];
|
||||||
var remote_id = field_id.slice(0, field_id.length - field_name.length) + remote_field;
|
var field_id = element.dataset.select2Id;
|
||||||
var value = document.querySelectorAll('[data-select2-id=' + remote_id + '].admin-autocomplete')[0].value;
|
var remote_id = field_id.slice(0, field_id.length - field_name.length) + remote_field;
|
||||||
if (value !== '') {
|
var value = document.querySelectorAll('[data-select2-id=' + remote_id + '].admin-autocomplete')[0].value;
|
||||||
linkedfields_obj[remote_field] = value;
|
if (value !== '') {
|
||||||
some_obj = true;
|
linkedfields_obj[remote_field] = value;
|
||||||
|
some_obj = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (some_obj) {
|
||||||
if (some_obj) {
|
out['linkedfields'] = JSON.stringify(linkedfields_obj);
|
||||||
out['linkedfields'] = JSON.stringify(linkedfields_obj);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (element.dataset.hasOwnProperty('linkedfields')) {
|
if (element.dataset.hasOwnProperty('drilldown_enabled')) {
|
||||||
select2_config.templateResult = (item,container)=>{
|
select2_config.templateResult = (item,container)=>{
|
||||||
var styleClass = '';
|
var styleClass = '';
|
||||||
|
|
||||||
|
|
@ -62,6 +64,29 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$(element).select2(select2_config);
|
$(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;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue