Allow switching to non-form view even if no record is selected
Closes #13511 (grafted from 532aa26b3fa2e4f67078bcb8a300bb6d7610e67d) --HG-- branch : 7.0
This commit is contained in:
1 parent
6370264f6e
commit
7ad3a78f88
4 files changed
+33
-2
No files matched your search
@@ -926,6 +926,18 @@
|
||||
get number_of_views() {
|
||||
return this.views.length + this.view_to_load.length;
|
||||
},
|
||||
get view_index() {
|
||||
return this.views.indexOf(this.current_view);
|
||||
},
|
||||
get next_view_type() {
|
||||
var views = this.views.concat(this.view_to_load)
|
||||
var next_view_index = (this.view_index + 1) % views.length;
|
||||
var next_view = views[next_view_index];
|
||||
if (typeof next_view != 'string') {
|
||||
next_view = next_view.view_type;
|
||||
}
|
||||
return next_view;
|
||||
},
|
||||
switch_view: function(
|
||||
view_type=null, view_id=null, creatable=null, display=true) {
|
||||
if (view_id !== null) {
|
||||
|
||||
+4
-1
@@ -1452,6 +1452,7 @@
|
||||
}
|
||||
}
|
||||
const view_type = this.screen.current_view.view_type;
|
||||
var next_view_type = this.screen.next_view_type;
|
||||
const has_views = this.screen.number_of_views > 1;
|
||||
var buttons = ['print', 'relate', 'email', 'attach'];
|
||||
for (const button_id of buttons) {
|
||||
@@ -1472,7 +1473,9 @@
|
||||
set_sensitive(button_id, position && can_be_sensitive);
|
||||
}
|
||||
set_sensitive(
|
||||
'switch_', (position || (view_type == 'form')) && has_views);
|
||||
'switch_',
|
||||
(position || (view_type == 'form') || (next_view_type != 'form')) &&
|
||||
has_views);
|
||||
set_sensitive('delete_', this.screen.deletable);
|
||||
set_sensitive('previous', this.screen.has_previous());
|
||||
set_sensitive('next', this.screen.has_next());
|
||||
|
||||
@@ -578,6 +578,7 @@ class Form(TabContent):
|
||||
name = str(position) if position else '_'
|
||||
selected = len(self.screen.selected_records)
|
||||
view_type = self.screen.current_view.view_type
|
||||
next_view_type = self.screen.next_view_type
|
||||
has_views = self.screen.number_of_views > 1
|
||||
if selected > 1:
|
||||
name += '#%i' % selected
|
||||
@@ -593,7 +594,9 @@ class Form(TabContent):
|
||||
for b in self.screen.get_buttons())
|
||||
set_sensitive(button_id, bool(position) and can_be_sensitive)
|
||||
set_sensitive(
|
||||
'switch', (position or view_type == 'form') and has_views)
|
||||
'switch',
|
||||
(position or view_type == 'form' or next_view_type != 'form')
|
||||
and has_views)
|
||||
set_sensitive('remove', self.screen.deletable)
|
||||
set_sensitive('previous', self.screen.has_prev())
|
||||
set_sensitive('next', self.screen.has_next())
|
||||
|
||||
@@ -536,6 +536,19 @@ class Screen:
|
||||
def number_of_views(self):
|
||||
return len(self.views) + len(self.view_to_load)
|
||||
|
||||
@property
|
||||
def view_index(self):
|
||||
return self.__current_view
|
||||
|
||||
@property
|
||||
def next_view_type(self):
|
||||
views = self.views + self.view_to_load
|
||||
next_view_index = (self.view_index + 1) % len(views)
|
||||
next_view = views[next_view_index]
|
||||
if not isinstance(next_view, str):
|
||||
next_view = next_view.view_type
|
||||
return next_view
|
||||
|
||||
def switch_view(
|
||||
self, view_type=None, view_id=None, creatable=None, display=True):
|
||||
if view_id is not None:
|
||||
|
||||
Reference in new issue
Block a user