mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[ADD] adding module web_invalid_tab to highlights a tab when fields inside are invalid
This commit is contained in:
3
web_invalid_tab/static/src/css/view_form.css
Normal file
3
web_invalid_tab/static/src/css/view_form.css
Normal file
@@ -0,0 +1,3 @@
|
||||
li > a.oe_form_tab_invalid {
|
||||
border: 1px solid #D00 !important;
|
||||
}
|
||||
62
web_invalid_tab/static/src/js/view_form.js
Normal file
62
web_invalid_tab/static/src/js/view_form.js
Normal file
@@ -0,0 +1,62 @@
|
||||
openerp.web_invalid_tab = function(instance) {
|
||||
|
||||
var tab_selector = 'div[role="tabpanel"]';
|
||||
|
||||
function tab_link(tab) {
|
||||
return $("a[href='#" + tab.attr('id') + "']");
|
||||
}
|
||||
|
||||
function is_visible(tab, element) {
|
||||
if ($(element).hasClass('oe_form_invisible') || element.style.display == 'none') {
|
||||
return false;
|
||||
}
|
||||
else if (element.parentNode && element.parentNode != tab) {
|
||||
return is_visible(tab, element.parentNode);
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
instance.web.form.AbstractField.include({
|
||||
_check_css_flags: function() {
|
||||
if (this.field.translate) {
|
||||
this.$el.find('.oe_field_translate').toggle(this.field_manager.get('actual_mode') !== "create");
|
||||
}
|
||||
if (!this.disable_utility_classes) {
|
||||
if (this.field_manager.get('display_invalid_fields')) {
|
||||
this.$el.toggleClass('oe_form_invalid', !this.is_valid());
|
||||
this._check_invalid_tab();
|
||||
}
|
||||
}
|
||||
},
|
||||
_check_invalid_tab: function() {
|
||||
var tab = this.$el.closest(tab_selector);
|
||||
if (tab && tab.attr('id')) {
|
||||
if (this.is_valid()) {
|
||||
if (tab.find('.oe_form_invalid').length == 0) {
|
||||
tab_link(tab).removeClass('oe_form_tab_invalid');
|
||||
}
|
||||
}
|
||||
else if (is_visible(tab.get(0), this.$el.get(0)) === true) {
|
||||
tab_link(tab).addClass('oe_form_tab_invalid');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
instance.web.FormView.include({
|
||||
on_form_changed: function() {
|
||||
this._super();
|
||||
$(tab_selector).each(function(i, tab) {
|
||||
var invalid = _.detect($(tab).find('.oe_form_invalid'), function(x) {
|
||||
return is_visible(tab, x);
|
||||
});
|
||||
if (!invalid) {
|
||||
tab_link($(tab)).removeClass('oe_form_tab_invalid');
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user