/* This file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. */ (function() { 'use strict'; Sao.Tab = Sao.class_(Object, { init: function() { Sao.Tab.tabs.push(this); this.buttons = {}; this.menu_buttons = {}; this.id = 'tab-' + Sao.Tab.counter++; this.name = ''; this.name_el = jQuery(''); this.view_prm = jQuery.when(); }, menu_def: function() { return [ { id: 'switch_', icon: 'glyphicon-list-alt', label: Sao.i18n.gettext('Switch'), tooltip: Sao.i18n.gettext('Switch view'), }, { id: 'previous', icon: 'glyphicon-chevron-left', label: Sao.i18n.gettext('Previous'), tooltip: Sao.i18n.gettext('Previous Record') }, { id: 'next', icon: 'glyphicon-chevron-right', label: Sao.i18n.gettext('Next'), tooltip: Sao.i18n.gettext('Next Record'), }, { id: 'search', icon: 'glyphicon-search', label: Sao.i18n.gettext('Search'), }, null, { id: 'new_', icon: 'glyphicon-edit', label: Sao.i18n.gettext('New'), tooltip: Sao.i18n.gettext('Create a new record'), }, { id: 'save', icon: 'glyphicon-save', label: Sao.i18n.gettext('Save'), tooltip: Sao.i18n.gettext('Save this record'), }, { id: 'reload', icon: 'glyphicon-refresh', label: Sao.i18n.gettext('Reload/Undo'), tooltip: Sao.i18n.gettext('Reload'), }, { id: 'copy', icon: 'glyphicon-duplicate', label: Sao.i18n.gettext('Duplicate'), }, { id: 'delete_', icon: 'glyphicon-trash', label: Sao.i18n.gettext('Delete'), }, null, { id: 'logs', icon: 'glyphicon-time', label: Sao.i18n.gettext('View Logs...'), }, { id: (this.screen && Sao.common.MODELHISTORY.contains(this.screen.model_name)) ? 'revision': null, icon: 'glyphicon-time', label: Sao.i18n.gettext('Show revisions...'), }, null, { id: 'attach', icon: 'glyphicon-paperclip', label: Sao.i18n.gettext('Attachment'), tooltip: Sao.i18n.gettext('Add an attachment to the record'), }, { id: 'note', icon: 'glyphicon-comment', label: Sao.i18n.gettext('Note'), tooltip: Sao.i18n.gettext('Add a note to the record'), }, { id: 'action', icon: 'glyphicon-cog', label: Sao.i18n.gettext('Action'), }, null, { id: 'relate', icon: 'glyphicon-share-alt', label: Sao.i18n.gettext('Relate'), }, { id: 'print', icon: 'glyphicon-print', label: Sao.i18n.gettext('Print'), }, null, { id: 'export', icon: 'glyphicon-export', label: Sao.i18n.gettext('Export'), }, { id: 'import', icon: 'glyphicon-import', label: Sao.i18n.gettext('Import'), }, null, { id: 'close', icon: 'glyphicon-remove', label: Sao.i18n.gettext('Close Tab'), }, ]; }, create_tabcontent: function() { this.el = jQuery('
', { 'class': this.class_ }); var toolbar = this.create_toolbar().appendTo(this.el); this.title = toolbar.find('.title'); this.content = jQuery('
').appendTo(this.el); if (this.info_bar) { this.el.append(this.info_bar.el); } }, set_menu: function(menu) { var previous; this.menu_def().forEach(function(item) { var menuitem; if (item) { if (!this[item.id]) { return; } menuitem = jQuery('
  • ', { 'role': 'presentation' }); var link = jQuery('', { 'id': item.id, 'role': 'menuitem', 'href': '#', 'tabindex': -1 }).append(jQuery('', { 'class': 'glyphicon ' + item.icon, 'aria-hidden': 'true' })).append(' ' + item.label).appendTo(menuitem); this.menu_buttons[item.id] = menuitem; link.click(function() { this[item.id](); }.bind(this)); } else if (!item && previous) { menuitem = jQuery('
  • ', { 'role': 'separator', 'class': 'divider hidden-xs', }); } else { return; } previous = menuitem; menuitem.appendTo(menu); }.bind(this)); }, create_toolbar: function() { var toolbar = jQuery('