have js-code to initially set values of dependent filters

pull/6827/head
Philipp Tessenow 14 years ago
parent 90f56ad7c0
commit c3ebfe08f6
  1. 42
      assets/javascripts/reporting/filters.js

@ -351,6 +351,43 @@ Reporting.Filters = {
} }
} }
); );
},
// This is called the first time the report loads.
// Params:
// elements: Array of visible filter-select-boxes that have dependents
// (and possibly are dependents themselfes)
initialize_load_dependent_filters: function(elements) {
var filters_to_load, dependent_filters;
dependent_filters = elements.findAll(function (select) { return select.value == '<<inactive>>' });
filters_to_load = elements.reject( function (select) { return select.value == '<<inactive>>' });
// Filters which are <<inactive>> are probably dependents themselfes, so remove and forget them for now.
// This is OK as they get reloaded later
dependent_filters.each(function(select) {
Reporting.Filters.remove_filter(select.up('tr').getAttribute("data-filter-name"));
});
// For each dependent filter we reload its dependent chain
filters_to_load.each(function(selectBox) {
var sources, selected_values;
Reporting.Filters.activate_dependents(selectBox, function() {
sources = Reporting.Filters.get_dependents(selectBox).collect(function(field) {
return $('tr_' + field).select('select').first();
});
sources.each(function(source) {
if (source.hasAttribute('data-initially-selected')) {
selected_values = source.getAttribute('data-initially-selected').replace(/'/g, '"').evalJSON(true);
Reporting.Filters.select_values(source, selected_values);
Reporting.Filters.value_changed(source.up('tr').getAttribute("data-filter-name"));
}
});
if (sources.reject( function (select) { return select.value == '<<inactive>>' }).size() == 0) {
Reporting.Filters.activate_dependents(selectBox);
}
else {
Reporting.Filters.initialize_load_dependent_filters(sources);
}
});
});
} }
}; };
@ -389,4 +426,9 @@ Reporting.onload(function () {
$$('.filters-select[data-dependents]').each(function (dependency) { $$('.filters-select[data-dependents]').each(function (dependency) {
dependency.observe("change", Reporting.Filters.activate_dependents); dependency.observe("change", Reporting.Filters.activate_dependents);
}); });
// on first loading restore values of dependent filters
Reporting.Filters.initialize_load_dependent_filters($$('.filters-select[data-dependents]').findAll(function(select) {
return select.up('tr').visible()
}));
}); });

Loading…
Cancel
Save