Merge pull request #272 from odoo-dev/master-inline-searchview-ged

[MERGP] Inline Searchview

This task split the searchview in two parts: SearchView and SearchViewDrawer. The drawer is displayed inside the main view and the searchview stays in place.  It also changes the scrolling behavior of the web client: the main view area can scroll without affecting the UI (so the various menus stays in place)

Because of this, other large changes have been made:

the drawer has been redesigned,
the Custom Filter widget has been split in two (Custom Report and SaveCurrentFilter),
the main view is now scrollable, so the UI stays in place and only the view can change
The text 'Group By...' has been changed into 'Group By' (most addons had to be modified)
bootstrap classes are used when it makes sense (for example, badge)
the left menu is also scrollable (separately from the main view)

It is likely that some stupid bugs have been introduced.  Please don't hurt me.
This commit is contained in:
ged-odoo 2014-06-12 16:27:11 +02:00
commit 74168c4e9d
117 changed files with 910 additions and 744 deletions

View File

@ -462,7 +462,7 @@
<field name="period_id" string="Period"/>
<separator/>
<filter domain="[('user_id','=',uid)]" help="My Invoices"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_by_partner_id" string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter name="commercial_partner_id" string="Commercial Partner" domain="[]" context="{'group_by':'commercial_partner_id'}"/>
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>

View File

@ -61,7 +61,7 @@
<filter string="Open" domain="[('state','=','draft')]" icon="terp-camera_test"/>
<filter string="Closed" domain="[('state','=','done')]" icon="terp-dialog-close"/>
<field name="state"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Status" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
</group>
</search>
@ -232,7 +232,7 @@
<filter icon="terp-sale" string="Receivable Accounts" domain="[('type','=','receivable')]"/>
<filter icon="terp-purchase" string="Payable Accounts" domain="[('type','=','payable')]"/>
<field name="user_type"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Parent Account" icon="terp-folder-orange" domain="" context="{'group_by':'parent_id'}"/>
<filter string="Account Type" icon="terp-stock_symbol-selection" domain="" context="{'group_by':'user_type'}"/>
<filter string="Internal Type" icon="terp-stock_symbol-selection" domain="" context="{'group_by':'type'}"/>
@ -381,7 +381,7 @@
<filter domain="['|', ('type', '=', 'cash'), ('type', '=', 'bank')]" string="Liquidity" icon="terp-dolar"/>
<filter domain="['|', ('type', '=', 'general'), ('type', '=', 'situation')]" string="Others" icon="terp-stock"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" context="{'group_by':'user_id'}" icon="terp-personal"/>
<filter string="Type" context="{'group_by':'type'}" icon="terp-stock_symbol-selection"/>
<filter string="Company" context="{'group_by':'company_id'}" icon="terp-go-home" groups="base.group_multi_company"/>
@ -507,7 +507,7 @@
<filter string="Open" name="state_open" domain="[('state','=','open')]" icon="terp-check"/>
<filter string="Confirmed" name="state_confirmed" domain="[('state','=','confirm')]" icon="terp-camera_test"/>
<field name="journal_id" domain="[('type', '=', 'cash')]" />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
<filter string="Status" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
@ -544,7 +544,7 @@
<filter string="Confirmed" domain="[('state','=','confirm')]" icon="terp-camera_test"/>
<field name="period_id"/>
<field name="journal_id" domain="[('type', '=', 'bank')]" />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
<filter string="Status" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
@ -979,7 +979,7 @@
<field name="company_id" groups="base.group_multi_company"/>
<filter string="Sale" domain="[('type_tax_use','=','sale')]" />
<filter string="Purchase" domain="[('type_tax_use','=','purchase')]" />
<group string="Group By...">
<group string="Group By">
<filter string="Company" domain="[]" context="{'group_by':'company_id'}"/>
<filter string="Tax Application" domain="[]" context="{'group_by':'type_tax_use'}"/>
</group>
@ -1258,7 +1258,7 @@
<field name="partner_id"/>
<field name="journal_id" context="{'journal_id':self}" widget="selection"/> <!-- it's important to keep widget='selection' in this filter viewbecause without that the value passed in the context is not the ID but the textual value (name) of the selected journal -->
<field name="period_id" context="{'period_id':self}" widget="selection"/> <!-- it's important to keep the widget='selection' in this field, for the same reason as explained above -->
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Account" icon="terp-folder-green" context="{'group_by':'account_id'}"/>
@ -1491,7 +1491,7 @@
<field name="partner_id"/>
<field name="journal_id"/>
<field name="period_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="States" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
@ -1648,7 +1648,7 @@
<filter string="Purchase" icon="terp-purchase" domain="[('journal_id.type', '=', 'purchase')]"/>
<field name="journal_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
</group>
</search>
@ -1782,7 +1782,7 @@
<filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Draft Subscription"/>
<filter icon="terp-camera_test" string="Running" domain="[('state','=','running')]" help="Running Subscription"/>
<field name="model_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Model" icon="terp-folder-orange" domain="[]" context="{'group_by':'model_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
</group>
@ -1939,7 +1939,7 @@
<field name="parent_id"/>
<field name="user_type"/>
<field name="type"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Internal Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
<filter string="Account Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'user_type'}"/>
</group>
@ -2018,7 +2018,7 @@
<field name="name" string="Account Template"/>
<field name="account_root_id"/>
<field name="bank_account_view_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Root Account" icon="terp-folder-orange" domain="[]" context="{'group_by':'account_root_id'}"/>
<filter string="Bank Account" icon="terp-folder-orange" domain="[]" context="{'group_by':'bank_account_view_id'}"/>
<filter string="Receivable Account" icon="terp-sale" domain="[]" context="{'group_by':'property_account_receivable'}"/>
@ -2161,7 +2161,7 @@
<search string="Search tax template">
<field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Tax Template"/>
<field name="parent_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Parent Code" icon="terp-folder-orange" domain="[]" context="{'group_by':'parent_id'}"/>
</group>
</search>
@ -2568,7 +2568,7 @@
<field name="name" string="Account Report"/>
<field name="type"/>
<field name="account_report_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Parent Report" icon="terp-folder-orange" domain="" context="{'group_by':'parent_id'}"/>
<filter string="Report Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
</group>

View File

@ -37,7 +37,7 @@
<field name="user_id"/>
<filter string="Open" domain="[('state','=','open')]" help="Current Accounts"/>
<filter string="Pending" domain="[('state','=','pending')]" help="Pending Accounts"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Associated Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Type" domain="[]" context="{'group_by':'type'}"/>
<filter string="Template" domain="[]" context="{'group_by':'template_id'}"/>
@ -198,7 +198,7 @@
<filter string="My Entries" domain="[('user_id','=',uid)]"/>
<field name="account_id"/>
<field name="user_id"/>
<group string="Group By..." expand="0">
<group string="Group By" expand="0">
<filter string="Analytic Account" context="{'group_by':'account_id'}"/>
<filter string="Fin. Account" context="{'group_by':'general_account_id'}"/>
<filter string="Journal" context="{'group_by':'journal_id'}" name="group_journal"/>
@ -306,7 +306,7 @@
<search string="Analytic Journals">
<field name="name" filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]" string="Analytic Journal"/>
<field name="type"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
</group>
</search>

View File

@ -11,7 +11,7 @@
<field name="account_id" groups="analytic.group_analytic_accounting"/>
<field name="product_id" />
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
<filter string="Account" name="Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>

View File

@ -83,7 +83,7 @@
<field name="partner_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':['product_id','product_uom_id'], 'quantity_visible':1}"/>
<filter string="Currency" name="group_currency" icon="terp-dolar" context="{'group_by':'currency_id', 'currency_id_visible':1, 'amount_currency_visible':1}"/>

View File

@ -35,7 +35,7 @@
<field name="partner_id"/>
<field name="user_id" />
<field name="categ_id" filter_domain="[('categ_id', 'child_of', self)]"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Partner" name="partner_id" context="{'group_by':'partner_id','residual_visible':True}"/>
<filter string="Commercial Partner" name="commercial_partner_id" context="{'group_by':'commercial_partner_id','residual_visible':True}"/>
<filter string="Commercial Partner's Country" name="country_id" context="{'group_by':'country_id'}"/>

View File

@ -236,7 +236,7 @@
<filter string="Customer Contracts" help="Contracts assigned to a customer." name="has_partner" domain="[('partner_id', '!=', False)]"/>
<filter string="Contracts not assigned" help="Contracts that are not assigned to an account manager." domain="[('manager_id', '=', False)]"/>
<separator/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Account Manager" domain="[]" context="{'group_by':'manager_id'}"/>
<filter string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>

View File

@ -49,7 +49,7 @@
<field name="partner_id"/>
<field name="user_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" icon="terp-personal" context="{'group_by':'user_id'}" help="User"/>
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}" help="Partner"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}" help="Product" />

View File

@ -33,7 +33,7 @@
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Asset" name="asset" context="{'group_by':'asset_id'}"/>
<filter string="Asset Category" name="asset_category" icon="terp-stock_symbol-selection" context="{'group_by':'asset_category_id'}"/>
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>

View File

@ -119,7 +119,7 @@
<field name="globalisation_amount" string="Glob. Amount"/>
<field name="note"/>
</group>
<group string="Group By..." expand="1">
<group string="Group By" expand="1">
<filter string="Journal" context="{'group_by':'journal_id'}" icon="terp-folder-green"/>
<filter string="Statement" context="{'group_by':'statement_id'}" icon="terp-folder-orange"/>
</group>

View File

@ -51,7 +51,7 @@
<filter string="My Follow-ups" domain="[('payment_responsible_id','=', uid)]" name="my"/>
</group>
</search>
<group string="Group By..." position="inside">
<group string="Group By" position="inside">
<filter string="Follow-up Responsible" context="{'group_by':'payment_responsible_id'}"/>
<filter string="Followup Level" context="{'group_by':'latest_followup_level_id'}"/>
</group>

View File

@ -26,7 +26,7 @@
help = "Including journal entries marked as a litigation"/>
<field name="partner_id"/>
<field name="balance"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}" />
<filter string="Litigation" icon="terp-camera_test" context="{'group_by':'blocked'}" />
<filter string="Follow-up Level" icon="terp-stock_effects-object-colorize" name="followup_level" context="{'group_by':'followup_id'}" />

View File

@ -12,7 +12,7 @@
<field name="name" string="Payment Mode"/>
<field name="journal"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal'}"/>
</group>
</search>
@ -177,7 +177,7 @@
<filter string="Done" domain="[('state','=','done')]" icon="terp-dialog-close"/>
<field name="mode"/>
<field name="state"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Payment Mode" context="{'group_by': 'mode'}" icon="terp-dolar"/>
<filter string="Status" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
</group>

View File

@ -132,7 +132,7 @@
<field name="partner_id" filter_domain="[('partner_id', 'child_of', self)]"/>
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" /> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
<field name="period_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>

View File

@ -57,7 +57,7 @@
<field name="pay_now"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Partner" name="partner" icon="terp-partner" context="{'group_by':'partner_id'}"/>
<filter string="Salesperson" name='user' icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>

View File

@ -14,7 +14,7 @@
<field name="partner_id" string="Customer" filter_domain="[('partner_id','child_of',self)]"/>
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('bank','cash'))]"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
<field name="period_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>
@ -37,7 +37,7 @@
<field name="partner_id" string="Supplier" filter_domain="[('partner_id','child_of',self)]"/>
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('bank','cash'))]"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
<field name="period_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Supplier" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>

View File

@ -13,7 +13,7 @@
<field name="partner_id" string="Supplier" filter_domain="[('partner_id','child_of',self)]"/>
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('purchase','purchase_refund'))]"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
<field name="period_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Supplier" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>
@ -35,7 +35,7 @@
<field name="partner_id" string="Customer" filter_domain="[('partner_id','child_of',self)]"/>
<field name="journal_id" widget="selection" context="{'journal_id': self, 'set_visible':False}" domain="[('type','in',('sale','sale_refund'))]"/> <!-- Keep widget=selection on this field to pass numeric `self` value, which is not the case for regular m2o widgets! -->
<field name="period_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/>
<filter string="Period" icon="terp-go-month" domain="[]" context="{'group_by':'period_id','visible':True}"/>

View File

@ -366,15 +366,13 @@ instance.board.AddToDashboard = instance.web.search.Input.extend({
},
add_dashboard: function(){
var self = this;
var getParent = this.getParent();
var view_parent = this.getParent().getParent();
if (! view_parent.action || ! this.$el.find("select").val()) {
if (! this.view.view_manager.action || ! this.$el.find("select").val()) {
this.do_warn("Can't find dashboard action");
return;
}
var data = getParent.build_search_data();
var context = new instance.web.CompoundContext(getParent.dataset.get_context() || []);
var domain = new instance.web.CompoundDomain(getParent.dataset.get_domain() || []);
var data = this.view.build_search_data();
var context = new instance.web.CompoundContext(this.view.dataset.get_context() || []);
var domain = new instance.web.CompoundDomain(this.view.dataset.get_domain() || []);
_.each(data.contexts, context.add, context);
_.each(data.domains, domain.add, domain);
@ -394,10 +392,10 @@ instance.board.AddToDashboard = instance.web.search.Input.extend({
this.rpc('/board/add_to_dashboard', {
menu_id: this.$el.find("select").val(),
action_id: view_parent.action.id,
action_id: this.view.view_manager.action.id,
context_to_save: c,
domain: d,
view_mode: view_parent.active_view,
view_mode: this.view.view_manager.active_view,
name: this.$el.find("input").val()
}).done(function(r) {
if (r === false) {
@ -412,12 +410,12 @@ instance.board.AddToDashboard = instance.web.search.Input.extend({
this.$el.toggleClass('oe_opened');
if (! this.$el.hasClass('oe_opened'))
return;
this.$("input").val(this.getParent().fields_view.name || "" );
this.$("input").val(this.view.fields_view.name || "" );
}
});
instance.web.SearchView.include({
instance.web.SearchViewDrawer.include({
add_common_inputs: function() {
this._super();
var vm = this.getParent().getParent();

View File

@ -260,7 +260,7 @@
<separator/>
<filter icon="terp-check" string="Confirmed" domain="[('state','=','confirmed')]" help="Confirmed Events"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Availability" icon="terp-camera_test" domain="[]" context="{'group_by':'show_as'}"/>
<filter string="Privacy" icon="terp-locked" domain="[]" context="{'group_by':'class'}"/>

View File

@ -260,7 +260,7 @@
<filter string="My Meetings" help="My Meetings" name="mymeetings" context='{"mymeetings": 1}'/>
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
<separator/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Availability" icon="terp-camera_test" domain="[]" context="{'group_by':'show_as'}"/>
<filter string="Privacy" icon="terp-locked" domain="[]" context="{'group_by':'class'}"/>

View File

@ -349,7 +349,7 @@
name='not_opt_out' domain="[('opt_out', '=', False)]"
help="Leads that did not ask not to be included in mass mailing campaigns"/>
<separator />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>
@ -571,7 +571,7 @@
help="Opportunities that are assigned to any sales teams I am member of" groups="base.group_multi_salesteams"/>
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
<separator/>
<group expand="0" string="Group By..." colspan="16">
<group expand="0" string="Group By" colspan="16">
<filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Stage" domain="[]" context="{'group_by':'stage_id'}"/>

View File

@ -186,7 +186,7 @@
<field name="opportunity_id"/>
<field name="section_id" string="Sales Team"
groups="base.group_multi_salesteams"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Creation" icon="terp-go-month" help="Creation Date" domain="[]" context="{'group_by':'create_date'}"/>

View File

@ -79,7 +79,7 @@
<field name="opening_date"/>
<field name="date_closed"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Sales Team" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Partner" context="{'group_by':'partner_id'}" />

View File

@ -45,7 +45,7 @@
<field name="opening_date"/>
<field name="date_closed"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" name="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_id'}" />

View File

@ -193,7 +193,7 @@
<filter string="Unassigned Claims" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Claims" />
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" help="Partner" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-personal" domain="[]" help="Responsible User" context="{'group_by':'user_id'}"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>

View File

@ -44,7 +44,7 @@
<field name="date_closed" />
<field name="date_deadline" />
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" name="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Partner" name="partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}" />

View File

@ -143,7 +143,7 @@
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
<field name="user_id"/>
<field name="section_id" string="Sales Team" groups="base.group_multi_salesteams"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" help="Partner" context="{'group_by':'partner_id'}" />
<filter string="Responsible" icon="terp-personal" domain="[]" help="Responsible User" context="{'group_by':'user_id'}" />
<filter string="Sales Team" icon="terp-personal+" domain="[]" help="Sales Team" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>

View File

@ -42,7 +42,7 @@
<field name="create_date"/>
<field name="date_closed" string="Close Date"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}" />

View File

@ -22,7 +22,7 @@
<field name="opening_date"/>
<field name="date_closed"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" name="user" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Partner" icon="terp-partner" context="{'group_by':'partner_assigned_id'}" />

View File

@ -12,7 +12,7 @@
<field name="user_id"/>
<field name="grade_id"/>
<field name="activation"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" name="user" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Country" icon="terp-go-home" name="group_country" context="{'group_by':'country_id'}" />

View File

@ -110,7 +110,7 @@
<filter string="Resources" icon="terp-personal" domain="[('type','=','ressource')]"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="user_id" />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Owner" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
<filter string="Company" domain="[]" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>

View File

@ -280,7 +280,7 @@
<filter string="Upcoming" name="upcoming" domain="[('date_begin','&gt;=', time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Upcoming events from today" />
<field name="type"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Responsible" context="{'group_by': 'user_id'}"/>
<filter string="Event Type" context="{'group_by':'type'}"/>
<filter string="Status" context="{'group_by':'state'}"/>
@ -436,7 +436,7 @@
<field name="event_id"/>
<field name="user_id"/>
<field name="partner_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Responsible" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Event" name="group_event" domain="[]" context="{'group_by':'event_id'}"/>

View File

@ -32,7 +32,7 @@
<field name="event_date"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Participant / Contact" icon="terp-personal" context="{'group_by':'name_registration'}" help="Registration contact"/>
<filter string="Register" icon="terp-personal" context="{'group_by':'user_id_registration'}" help="Registration contact" groups="base.group_no_one"/>
<filter string="Event Responsible" name="user_id" icon="terp-personal" context="{'group_by': 'user_id'}"/>

View File

@ -61,7 +61,7 @@
<field name="arch" type="xml">
<search string="Vehicles costs" >
<field name="brand_id" />
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter name="groupby_brand" context="{'group_by' : 'brand_id'}" string="Brand"/>
</group>
</search>
@ -329,7 +329,7 @@
<field name="location"/>
<field name="state_id" />
<filter name="alert_true" domain="['|',('contract_renewal_due_soon','=',True),('contract_renewal_overdue','=',True)]" string="Has Alert(s)"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter name="groupby_status" context="{'group_by' : 'state_id'}" string="Status"/>
<filter name="groupby_model" context="{'group_by' : 'model_id'}" string="Model"/>
</group>
@ -610,7 +610,7 @@
<field name="value"/>
<field name="unit"/>
<field name="date"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="groupby_vehicle" context="{'group_by' : 'vehicle_id'}" string="Vehicle"/>
</group>
</search>
@ -716,7 +716,7 @@
<field name="purchaser_id" />
<field name="liter" />
<field name="amount" sum="Price"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="groupby_vehicle" context="{'group_by' : 'vehicle_id'}" string="Vehicle"/>
</group>
</search>
@ -924,7 +924,7 @@
<field name="parent_id"/>
<filter name="parent_false" domain="[('parent_id','=',False)]" string="Effective Costs"/>
<filter name="parent_true" domain="[('parent_id','!=',False)]" string="Indicative Costs"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter name="groupby_year" context="{'group_by' : 'year'}" string="Year"/>
<filter name="groupby_date" context="{'group_by' : 'date'}" string="Vehicle Costs Month" help="Vehicle Costs by Month"/>
<filter name="groupby_cost_type" context="{'group_by' : 'cost_type'}" string="Cost Type"/>

View File

@ -223,7 +223,7 @@
<filter name="hr_challenges" string="HR Challenges"
domain="[('category', '=', 'hr')]"/>
<field name="name"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="State" domain="[]" context="{'group_by':'state'}"/>
<filter string="Period" domain="[]" context="{'group_by':'period'}"/>
</group>

View File

@ -110,7 +110,7 @@
<field name="user_id"/>
<field name="definition_id"/>
<field name="challenge_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_by_user" string="User" domain="[]" context="{'group_by':'user_id'}"/>
<filter name="group_by_definition" string="Goal Definition" domain="[]" context="{'group_by':'definition_id'}"/>
<filter string="State" domain="[]" context="{'group_by':'state'}"/>
@ -274,7 +274,7 @@
<field name="name"/>
<field name="model_id"/>
<field name="field_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Model" domain="[]" context="{'group_by':'model_id'}"/>
<filter string="Computation Mode" domain="[]" context="{'group_by':'computation_mode'}"/>
</group>

View File

@ -42,7 +42,7 @@ openerp.google_spreadsheet = function(instance) {
});
},
});
instance.web.SearchView.include({
instance.web.SearchViewDrawer.include({
add_common_inputs: function() {
this._super();
var vm = this.getParent().getParent();

View File

@ -121,7 +121,7 @@
<field name="name" string="Employees" filter_domain="['|',('work_email','ilike',self),('name','ilike',self)]"/>
<field name="department_id" />
<field name="category_ids" groups="base.group_hr_user"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Manager" icon="terp-personal" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="Coach" icon="terp-personal" domain="[]" context="{'group_by':'coach_id'}"/>
<filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/>
@ -394,7 +394,7 @@
<filter domain="[('state','=','open')]" string="In Position"/>
<filter domain="[('state','=','recruit')]" string="In Recruitment" name="in_recruitment"/>
<field name="department_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Department" domain="[]" context="{'group_by':'department_id'}"/>
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Company" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>

View File

@ -56,7 +56,7 @@
<separator/>
<filter icon="terp-stock_align_left_24" string="My Attendance" domain="[('employee_id.user_id.id', '=', uid)]" />
<field name="employee_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="employee" string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
<filter name="name" string="Date" icon="terp-personal" domain="[]" context="{'group_by':'name'}"/>
</group>

View File

@ -62,7 +62,7 @@
<field name="date_end"/>
<field name="working_hours"/>
<field name="employee_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
<filter string="Working Schedule" icon="terp-go-week" domain="[]" context="{'group_by':'working_hours'}"/>
<filter string="Job" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'job_id'}"/>

View File

@ -9,7 +9,7 @@
<search string="Appraisal Plan">
<field name="name" string="Appraisal Plans"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By..." groups="base.group_multi_company">
<group expand="0" string="Group By" groups="base.group_multi_company">
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}"/>
</group>
</search>
@ -333,7 +333,7 @@
<filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','waiting_answer')]"/>
<field name="user_to_review_id"/>
<field name="user_id" string="Interviewer"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Interviewer" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Survey" icon="terp-stock_align_left_24" domain="[]" context="{'group_by':'survey_id'}"/>
<filter string="Status" name="group_state" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>

View File

@ -30,7 +30,7 @@
<field name="state"/>
<field name="create_date"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Employee" name="employee" icon="terp-personal" context="{'group_by':'employee_id'}"/>
<filter string="Plan" icon="terp-stock_align_left_24" context="{'group_by':'plan_id'}"/>
<filter string="Appreciation" icon="terp-face-plain" context="{'group_by':'rating'}"/>

View File

@ -162,7 +162,7 @@
<filter domain="[('user_id', '=', uid)]" string="My Expenses"/>
<field name="employee_id"/>
<field name="department_id" string="Department" context="{'invisible_department': False}"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
<filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/>
<filter string="Expenses Month" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" help="Expenses by Month"/>

View File

@ -35,7 +35,7 @@
<field name="date_confirm"/>
<field name="date_valid"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Employee" name="employee" icon="terp-personal" context="{'group_by':'employee_id'}"/>
<filter string="Validation User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Department" icon="terp-personal+" context="{'group_by':'department_id'}"/>

View File

@ -20,7 +20,7 @@
<field name="employee_id"/>
<field name="department_id"/>
<field name="holiday_status_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_name" string="Description" domain="[]" context="{'group_by':'name'}"/>
<filter name="group_date_from" string="Start Month" icon="terp-personal" domain="[]" context="{'group_by':'date_from'}"/>
<filter name="group_employee" string="Employee" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>

View File

@ -171,7 +171,7 @@
<field name="name" string="Payslip Lines" filter_domain="['|',('name','ilike',self),('code','ilike',self)]"/>
<field name="amount_select"/>
<field name="slip_id"/>
<group col="8" colspan="4" expand="0" string="Group By...">
<group col="8" colspan="4" expand="0" string="Group By">
<filter string="Salary Rule Category" icon="terp-camera_test" name="category_id" context="{'group_by':'category_id'}"/>
<filter string="Contribution Register" name="register_id" icon="terp-folder-yellow" context="{'group_by':'register_id'}"/>
<filter string="Amount Type" name="amount_select" icon="terp-stock_symbol-selection" context="{'group_by':'amount_select'}"/>
@ -357,7 +357,7 @@
<filter icon="terp-camera_test" string="Done" domain="[('state','=','done')]" help="Done Slip"/>
<field name="employee_id"/>
<field name="payslip_run_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Employees" icon="terp-personal" name="employee_id" context="{'group_by':'employee_id'}"/>
<filter string="PaySlip Batch" name="payslip_run_id" icon="terp-folder-orange" context="{'group_by':'payslip_run_id'}"/>
<filter string="Companies" name="company_id" groups="base.group_multi_company" icon="terp-go-home" context="{'group_by':'company_id'}"/>
@ -641,7 +641,7 @@
<field name="name" string="Salary Rules" filter_domain="['|',('name','ilike',self),('code','ilike',self)]"/>
<field name="category_id"/>
<field name="condition_range_min"/>
<group col="8" colspan="4" expand="0" string="Group By...">
<group col="8" colspan="4" expand="0" string="Group By">
<filter string="Category" icon="terp-folder-yellow" name="head" context="{'group_by':'category_id'}"/>
</group>
</search>

View File

@ -208,7 +208,7 @@
<separator/>
<field name="categ_ids"/>
<separator/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Responsible" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Department" domain="[]" context="{'group_by':'department_id'}"/>
<filter string="Job" domain="[]" context="{'group_by':'job_id'}"/>

View File

@ -70,7 +70,7 @@
<field name="date"/>
<field name="user_id"/>
<field name="account_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Users" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Analytic account" icon="terp-folder-green" domain="[]" context="{'group_by':'account_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>

View File

@ -51,7 +51,7 @@
<field name="date"/>
<field name="invoice_id"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="User" name="User" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Account" icon="terp-folder-orange" context="{'group_by':'account_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>

View File

@ -184,7 +184,7 @@
<filter name="to_approve" string="To Approve" domain="[('state','=','confirm')]" help="Confirmed Timesheets"/>
<field name="employee_id"/>
<field name="department_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Employees" icon="terp-personal" domain="[]" context="{'group_by':'employee_id'}"/>
<filter string="Department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/>
</group>

View File

@ -28,7 +28,7 @@
<field name="company_id" groups="base.group_multi_company"/>
<field name="date" />
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="User" name="group_user_id" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>
<filter string="Analytic Account" icon="terp-folder-green" context="{'group_by':'account_id'}" groups="analytic.group_analytic_accounting"/>

View File

@ -35,7 +35,7 @@
<field name="date_to"/>
<field name="date_from"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="User" name="User_id" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Department" icon="terp-personal+" context="{'group_by':'department_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>

View File

@ -150,7 +150,7 @@
<filter name="session_id" string="My Sessions" domain="[('session_id.user_ids','in', uid)]"/>
<field name="from_id"/>
<field name="to_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_by_session_id" string="Session" domain="[]" context="{'group_by':'session_id'}"/>
<filter name="group_by_date" string="Date" domain="[]" context="{'group_by':'date'}"/>
</group>

View File

@ -66,7 +66,7 @@
<field name="note"/>
</group>
<newline/>
<group string="Group By..." expand="0">
<group string="Group By" expand="0">
<filter string="Partner" context="{'group_by':'partner_id'}" icon="terp-folder-green"/>
<filter string="Statement" context="{'group_by':'statement_id'}" icon="terp-folder-orange"/>
</group>

View File

@ -144,7 +144,7 @@
<field name="batch_id"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Bank" name="bank_id" icon="terp-go-home" context="{'group_by':'bank_id'}"/>
<separator orientation="vertical"/>
<filter string="Status" name="state" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>

View File

@ -54,7 +54,7 @@
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Employee" icon="terp-personal" context="{'group_by':'employee_id'}" />
<filter string="Bank" icon="terp-go-home" context="{'group_by':'bank_id'}"/>
<separator orientation="vertical"/>

View File

@ -50,7 +50,7 @@
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Employee" name="employee" icon="terp-personal" context="{'group_by':'employee_id'}" />
<filter string="Structure" context="{'group_by':'struct_id'}" />
<filter string="Category" name="category" context="{'group_by':'category_id'}" />

View File

@ -21,7 +21,7 @@
<separator/>
<filter name="today" string="Today" domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_by_supplier" string="By Supplier" context="{'group_by':'supplier'}"/>
<filter name="group_by_date" string="Order Month" context="{'group_by':'date'}" help="Supplier Order by Month"/>
</group>
@ -52,7 +52,7 @@
<search string="lunch cashmove">
<field name="description"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name='group_by_user' string="By Employee" context="{'group_by':'user_id'}"/>
</group>
</search>

View File

@ -60,7 +60,7 @@
<field name="alias_parent_thread_id"/>
<separator/>
<filter string="Active" name="active" domain="[('alias_name', '!=', False)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" name="User" context="{'group_by':'alias_user_id'}"/>
<filter string="Model" name="Model" context="{'group_by':'alias_model_id'}"/>
</group>

View File

@ -108,7 +108,7 @@
<field name="model"/>
<field name="res_id"/>
</group>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Status" name="status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Author" name="author" context="{'group_by':'author_id'}"/>
<filter string="Thread" name="thread" domain="[]" context="{'group_by':'message_id'}"/>

View File

@ -71,7 +71,7 @@
<filter string="Has attachments"
name="attachments"
domain="[('attachment_ids', '!=', False)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Type" name="thread" domain="[]" context="{'group_by':'type'}"/>
</group>
</search>

View File

@ -1915,11 +1915,11 @@ openerp.mail = function (session) {
* @param {Object} defaults ??
*/
load_searchview: function (defaults) {
var self = this;
var ds_msg = new session.web.DataSetSearch(this, 'mail.message');
this.searchview = new session.web.SearchView(this, ds_msg, false, defaults || {}, false);
this.searchview.appendTo(this.$('.oe_view_manager_view_search'))
.then(function () { self.searchview.on('search_data', self, self.do_searchview_search); });
this.searchview.on('search_data', this, this.do_searchview_search);
this.searchview.appendTo(this.$('.oe_view_manager_view_search'),
this.$('.oe_searchview_drawer_container'));
if (this.searchview.has_defaults) {
this.searchview.ready.then(this.searchview.do_search);
}

View File

@ -191,8 +191,15 @@
</tr>
</tbody>
</table>
<div class="oe_mail-placeholder"></div>
<aside class="oe_mail_wall_aside"></aside>
<div class="oe_view_manager_wrapper">
<div>
<div class="oe_view_manager_body">
<div class="oe_searchview_drawer_container"/>
<div class="oe_mail-placeholder"></div>
<aside class="oe_mail_wall_aside"></aside>
</div>
</div>
</div>
</div>
<!--

View File

@ -150,7 +150,7 @@
<filter icon="terp-gtk-jump-to-rtl" string="Test Mode" name="test" domain="[('mode','=','test')]"/>
<filter icon="terp-gtk-jump-to-rtl" string="Manual Mode" domain="[('mode','=','manual')]"/>
<field name="object_id" string="Resource"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Resource" name="Object" icon="terp-accessories-archiver" context="{'group_by':'object_id'}"/>
<filter string="Mode" name="Mode" icon="terp-gtk-jump-to-rtl" context="{'group_by':'mode'}"/>
<filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
@ -254,7 +254,7 @@
<filter icon="terp-emblem-documents" string="All" help="Sync mode: all records" domain="[('sync_mode','=','all')]"/>
<field name="campaign_id"/>
<field name="object_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Campaign" name="Campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}"/>
<filter string="Status" name="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
<filter string="Launch Month" name="Launch Date" icon="terp-go-month" context="{'group_by':'date_run'}"/>
@ -435,7 +435,7 @@
<field name="object_id"/>
<field name="partner_id"/>
<field name="res_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Campaign" name="campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}"/>
<filter string="Segment" name="segment" icon="terp-stock_symbol-selection" context="{'group_by':'segment_id'}"/>
<filter string="Activity" name="activity" icon="terp-stock_align_left_24" context="{'group_by':'activity_id'}"/>

View File

@ -38,7 +38,7 @@
<field name="segment_id"/>
<field name="partner_id"/>
<field name="country_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Campaign" name="Campaign" icon="terp-gtk-jump-to-rtl" context="{'group_by':'campaign_id'}" />
<filter string="Segment" name="Segment" icon="terp-stock_symbol-selection" context="{'group_by':'segment_id'}"/>
<filter string="Activity" name="activity" icon="terp-stock_align_left_24" context="{'group_by':'activity_id'}"/>

View File

@ -30,7 +30,7 @@
<field name="list_id"/>
<separator/>
<filter string="Exclude Opt Out" name="not_opt_out" domain="[('opt_out', '=', False)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Creation Date" name="group_create_date"
context="{'group_by': 'create_date'}"/>
<filter string="Mailing Lists" name="group_list_id"
@ -151,7 +151,7 @@
<search string="Mass Mailings">
<field name="name" string="Mailings"/>
<field name="mass_mailing_campaign_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="State" name="group_state"
context="{'group_by': 'state'}"/>
<filter string="Campaign" name="group_mass_mailing_campaign_id"
@ -421,7 +421,7 @@
<field name="name" string="Campaigns"/>
<field name="category_ids"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Stage" name="group_stage_id"
context="{'group_by': 'stage_id'}"/>
<filter string="Responsible" name="group_user_id"

View File

@ -166,7 +166,7 @@
<separator/>
<filter icon="terp-personal" name="all_non_members" domain="[('membership_state', 'in', ['none','canceled','old','waiting'])]" string="All non Members" help="None/Canceled/Old/Waiting"/>
<filter icon="terp-personal" name="all_members" domain="[('membership_state', 'in', ['invoiced','paid','free'])]" string="All Members" help="Invoiced/Paid/Free"/>
<group expand="0" string="Group By..." colspan="10" col="8">
<group expand="0" string="Group By" colspan="10" col="8">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}"/>
<filter string="Associate Member" name = "associate" icon="terp-partner" domain="[]" context="{'group_by':'associate_member'}"/>
<filter string=" Membership State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'membership_state'}"/>

View File

@ -13,7 +13,7 @@
<field name="partner_id"/>
<field name="membership_id"/>
<field name="user_id"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" icon="terp-personal" name="salesman"
domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Associated Partner" icon="terp-partner" name="associate_member_id"

View File

@ -98,7 +98,7 @@
<field name="name" string="Name"/>
<field name="composition"/>
<field name="group_id" />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Property Group" icon="terp-personal" domain="[]" context="{'group_by':'group_id'}"/>
</group>
</search>

View File

@ -130,7 +130,7 @@
help="Production started late"/>
<field name="workcenter_id"/>
<field name="production_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Work Center" icon="terp-go-home" domain="[]" context="{'group_by':'workcenter_id'}"/>
<filter string="Production" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'production_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>

View File

@ -29,7 +29,7 @@
<filter icon="terp-camera_test" string="Done" domain="[('state','=','done')]"/>
<field name="product_id" />
<field name="workcenter_id"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Product" name="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}" />
<filter string="Work Center" name="Workcenter" icon="terp-go-home" context="{'group_by':'workcenter_id'}" />
<filter string="Production" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'production_id'}"/>

View File

@ -213,7 +213,7 @@
<filter icon="terp-dolar" string="Invoiced" domain="[('invoiced','=',True)]"/>
<field name="product_id"/>
<field name="partner_id" filter_domain="[('partner_id', 'child_of', self)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>

View File

@ -135,7 +135,7 @@
<field name="tag_ids"/>
<filter name="open_true" string="Active" domain="[('open', '=', True)]"/>
<filter name="open_false" string="Archive" domain="[('open', '=', False)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter icon="terp-stock_symbol-selection" string="Stage" help="By sticky note Category" context="{'group_by':'stage_id'}"/>
</group>
</search>

View File

@ -82,7 +82,7 @@
<search>
<field name="name"/>
<field name="provider"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Provider" name="provider" domain="[]" context="{'group_by': 'provider'}"/>
</group>
</search>

View File

@ -27,7 +27,7 @@
<field name="date"/>
<filter string="Open" domain="[('state','=','open')]" icon="terp-document-new" name="open"/>
<field name="journal_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
<filter string="Status" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>
@ -46,7 +46,7 @@
<filter string="Open" domain="[('state','=','open')]" icon="terp-document-new" name="open"/>
<filter string="Closed" domain="[('state','=','confirm')]" icon="terp-camera_test"/>
<field name="journal_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Journal" context="{'group_by': 'journal_id'}" icon="terp-folder-orange"/>
<filter string="Period" context="{'group_by': 'period_id'}" icon="terp-go-month"/>
<filter string="Status" context="{'group_by': 'state'}" icon="terp-stock_effects-object-colorize"/>

View File

@ -146,7 +146,7 @@
<filter icon="terp-check" string="Invoiced" domain="[('state','=','invoiced')]"/>
<filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
@ -877,7 +877,7 @@
<filter string="Today" domain="[('start_at', '>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]" />
<field name="config_id" />
<field name="user_id" />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
<filter string="Point of Sales" domain="[]" context="{'group_by': 'user_id'}" />
</group>
@ -928,7 +928,7 @@
<filter icon="gtk-convert" string="Posted" domain="[('state','=','done')]"/>
<field name="user_id"/>
<field name="session_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Session" icon="terp-personal" domain="[]" context="{'group_by':'session_id'}"/>

View File

@ -32,7 +32,7 @@
<field name="user_id"/>
<field name="partner_id"/>
<field name="user_id"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" icon="terp-personal" name="User" context="{'group_by':'user_id'}"/>
<filter string="Customer" icon="terp-personal" context="{'group_by':'partner_id'}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/>

View File

@ -32,7 +32,7 @@
<field name="reviewer_id"/>
<field name="user_id"/>
<field name="stage_id" domain="[]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Reviewers" name="group_reviewer_id" domain="[]" context="{'group_by':'reviewer_id'}"/>
<filter string="Users" name="group_user_id" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
@ -201,7 +201,7 @@
<filter string="Project(s) Manager" domain="[('user_id','=',uid)]" help="Projects in which I am a manager" icon="terp-personal"/>
<field name="user_id" string="Project Manager"/>
<field name="partner_id" string="Contact" filter_domain="[('partner_id', 'child_of', self)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Manager" name="Manager" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Contact" name="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Parent" name="Parent" help="Parent" icon="terp-folder-blue" domain = "[]" context="{'group_by':'parent_id'}"/>

View File

@ -42,7 +42,7 @@
<field name="priority"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Project" name="project" context="{'group_by':'project_id'}"/>
<filter string="Task" context="{'group_by':'name'}" />
<filter string="Contact" context="{'group_by':'partner_id'}" />

View File

@ -151,7 +151,7 @@
<field name="project_id"/>
<field name="categ_ids"/>
<field name="stage_id" domain="[]"/>
<group expand="0" string="Group By..." >
<group expand="0" string="Group By" >
<filter string="Responsible" name="group_user_id" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Contact" name="group_partner_id" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>

View File

@ -28,7 +28,7 @@
<filter string="New" name="new" domain="[('stage_id.sequence', '=', 1)]"/>
<filter string="Done" name="done" domain="[('stage_id.fold', '=', True)]"
help="Tasks beloging to a folded stage"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Assigned to" name="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Contact" icon="terp-partner" context="{'group_by':'partner_id'}" />
<filter string="Sale Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>

View File

@ -16,7 +16,7 @@
<search string="Tasks by User">
<field name="name" string="Date"/>
<field name="user_id"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="User" name="group_user_id" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Group by month of date"/>
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Group by year of date"/>

View File

@ -315,7 +315,7 @@
<field name="partner_id" operator="child_of"/>
<field name="product_id"/>
<field name="create_uid"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Supplier" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
@ -342,7 +342,7 @@
<field name="partner_id" operator="child_of"/>
<field name="product_id"/>
<field name="create_uid"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Supplier" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
@ -526,7 +526,7 @@
<field name="product_id"/>
<field name="partner_id" string="Supplier" filter_domain="[('partner_id', 'child_of', self)]"/>
<filter name="hide_cancelled" string="Hide cancelled lines" domain="[('state', '!=', 'cancel')]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="groupby_supplier" string="Supplier" icon="terp-partner" domain="[]" context="{'group_by' : 'partner_id'}" />
<filter name="groupby_product" string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by' : 'product_id'}" />
<filter icon="terp-gtk-jump-to-rtl" string="Order Reference" domain="[]" context="{'group_by' :'order_id'}"/>

View File

@ -37,7 +37,7 @@
<field name="expected_date"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Supplier" name="group_partner_id" icon="terp-personal" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" name="Responsible" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Validated by" icon="terp-personal" context="{'group_by':'validator'}"/>

View File

@ -160,7 +160,7 @@
<separator/>
<filter icon="terp-personal-" string="Unassigned" domain="[('user_id','=', False)]" help="Unassigned Requisition"/>
<field name="user_id" />
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Source" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>

View File

@ -14,7 +14,7 @@
<filter string="Inactive" icon="terp-gdu-smart-failing" domain="[('active','=',False)]"/>
<field name="user_id" string="User"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'resource_type'}"/>
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
@ -45,7 +45,7 @@
<field name="resource_id" string="Resource"/>
<field name="company_id" string="Company" groups="base.group_multi_company"/>
<field name="calendar_id" string="Working Period"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Resource" icon="terp-personal" domain="[]" context="{'group_by':'resource_id'}"/>
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Leave Month" icon="terp-go-month" domain="[]" context="{'group_by':'date_from'}" help="Starting Date of Leave by Month"/>

View File

@ -32,7 +32,7 @@
<field name="categ_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Salesperson" icon="terp-personal" name="User" context="{'group_by':'user_id'}"/>
<filter string="Sales Team" context="{'group_by':'section_id'}" groups="base.group_multi_salesteams"/>
<filter string="Partner" icon="terp-partner" name="Customer" context="{'group_by':'partner_id'}"/>

View File

@ -258,7 +258,7 @@
<field name="user_id"/>
<field name="section_id" string="Sales Team" groups="base.group_multi_salesteams"/>
<field name="project_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Customer" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
@ -427,7 +427,7 @@
<field name="order_partner_id" operator="child_of"/>
<field name="product_id"/>
<field name="salesman_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="Order" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'order_id'}"/>
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'salesman_id'}"/>
@ -453,7 +453,7 @@
<field name="order_partner_id" operator="child_of"/>
<field name="product_id"/>
<field name="salesman_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Order" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'order_id'}" help="Order reference"/>
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>

View File

@ -62,7 +62,7 @@
<field name="name" string="Inventory Reference"/>
<field name="date"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Inventories Month" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" help="Physical Inventories by Month"/>
</group>
@ -244,7 +244,7 @@
<search string="Product Lots Filter">
<field name="name" string="Product Lots" filter_domain="['|',('name','ilike',self),('ref','ilike',self)]"/>
<field name="product_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
</group>
</search>
@ -815,7 +815,7 @@
<field name="product_id"/>
<field name="picking_type_id"/>
<field name="group_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}"/>
<filter string="Expected Date" icon="terp-go-month" domain="[]" context="{'group_by':'min_date'}"/>
@ -1178,7 +1178,7 @@
<field name="product_id"/>
<field name="name" string="Location" filter_domain="['|',('location_id','ilike',self),('location_dest_id','ilike',self)]"/>
<field name="partner_id" string="Partner" filter_domain="[('picking_id.partner_id','child_of',self)]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Product" name="by_product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="Picking" name="groupby_picking_id" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'picking_id'}"/>
<filter string="Source" name="groupby_location_id" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'location_id'}" groups="stock.group_locations"/>
@ -1530,7 +1530,7 @@
<field name="location_id" groups="stock.group_locations"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="product_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Warehouse" icon="terp-go-home" domain="[]" context="{'group_by':'warehouse_id'}"/>
<filter string="Location" icon="terp-go-home" domain="[]" context="{'group_by':'location_id'}"/>
</group>

View File

@ -74,7 +74,7 @@
<field name="product_id"/>
<field name="location_id" filter_domain="[('name', 'child_of', self)]"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}" name='group_by_product'/>
<filter string="Product Category" icon="terp-accessories-archiver" context="{'group_by':'product_categ_id'}"/>
<filter string="Location" icon="terp-accessories-archiver" context="{'group_by':'location_id'}" name='group_by_location'/>

View File

@ -132,7 +132,7 @@
<separator/>
<filter string="Draft" name="draft" domain="[('state','=','draft')]"/>
<filter string="Done" name="done" domain="[('state','=','done')]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="Month" context="{'group_by': 'date'}"/>
<filter string="Status" context="{'group_by': 'state'}"/>
</group>

View File

@ -63,7 +63,7 @@
<field name="name" string="Picking Wave"/>
<filter name="in_progress" string="In Progress" domain="[('state','=', 'in_progress')]" help="Picking Waves not finished"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="State" domain="[]" context="{'group_by':'state'}"/>
</group>

View File

@ -75,7 +75,7 @@
domain="[('state','=','running')]"/>
<field name="user_id"/>
<field name="partner_id"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter string="User" icon="terp-personal" name="User" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Partner" icon="terp-partner" name="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>

View File

@ -15,7 +15,7 @@
<filter string="Partially completed" domain="[('state', '=', 'skip')]"/>
<filter string="New" domain="[('state', '=', 'new')]"/>
<filter string="Test" domain="[('state','=', 'test')]"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_by_survey" string="Survey" domain="[]" context="{'group_by': 'survey_id'}"/>
<filter string="Email" domain="[]" context="{'group_by': 'email'}"/>
<filter string="Partner" domain="[]" context="{'group_by': ['partner_id']}"/>
@ -271,7 +271,7 @@
<search string="Search Page">
<field name="title" string="Page"/>
<field name="survey_id" string="Survey"/>
<group expand="0" string="Group By...">
<group expand="0" string="Group By">
<filter name="group_by_survey" string="Survey" domain="[]" context="{'group_by':'survey_id'}"/>
</group>
</search>
@ -380,7 +380,7 @@
<field name="survey_id" string="Survey"/>
<field name="page_id" string="Page"/>
<field name="type" string="Type"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter name="group_by_page" string="Page" domain="[]" context="{'group_by':'page_id'}"/>
<filter name="group_by_type" string="Type" domain="[]" context="{'group_by':'type'}"/>
</group>
@ -481,7 +481,7 @@
<search string="Search User input lines">
<field name="user_input_id"/>
<field name="survey_id"/>
<group expand="1" string="Group By...">
<group expand="1" string="Group By">
<filter name="group_by_survey" string="Survey" domain="[]" context="{'group_by':'survey_id'}"/>
<filter name="group_by_user_input" string="User Input" domain="[]" context="{'group_by':'user_input_id'}"/>
</group>

View File

@ -1,4 +1,4 @@
@charset "utf-8";
@charset "UTF-8";
@font-face {
font-family: "mnmliconsRegular";
src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot");
@ -994,19 +994,22 @@
background: #f0eeee;
border-right: 1px solid #afafb6;
text-shadow: none;
padding-bottom: 16px;
}
.openerp a.oe_logo {
position: relative;
.openerp .oe_leftbar > div {
height: 100%;
display: table;
width: 220px;
display: block;
position: relative;
}
.openerp .oe_leftbar > div a.oe_logo {
display: table-row;
text-align: center;
}
.openerp a.oe_logo img {
.openerp .oe_leftbar > div a.oe_logo img {
margin: 14px 0;
border: 0;
}
.openerp a.oe_logo .oe_logo_edit {
.openerp .oe_leftbar > div a.oe_logo .oe_logo_edit {
margin: 14px 0;
position: absolute;
top: 1px;
@ -1021,22 +1024,36 @@
-ms-box-sizing: border-box;
box-sizing: border-box;
}
.openerp a.oe_logo:hover .oe_logo_edit_admin {
.openerp .oe_leftbar > div a.oe_logo:hover .oe_logo_edit_admin {
display: block;
}
.openerp .oe_footer {
position: fixed;
.openerp .oe_leftbar > div > div {
display: table-row;
height: 100%;
}
.openerp .oe_leftbar > div > div > div {
position: relative;
height: 100%;
}
.openerp .oe_leftbar > div > div > div > div.oe_secondary_menus_container {
position: absolute;
position: static\9;
top: 0;
bottom: 0;
padding: 4px 0;
left: 0;
right: 0;
overflow-x: hidden;
overflow-y: auto;
}
.openerp .oe_leftbar > div .oe_footer {
background: #f0eeee;
width: 220px;
text-align: center;
}
.openerp .oe_footer a {
.openerp .oe_leftbar > div .oe_footer a {
font-weight: bold;
color: black;
}
.openerp .oe_footer a span {
.openerp .oe_leftbar > div .oe_footer a span {
color: #a24689;
}
.openerp .oe_secondary_menu_section {
@ -1140,8 +1157,26 @@
color: #7c7bad;
}
.openerp .oe_application > div {
position: relative;
height: 100%;
}
.openerp .oe_application > div > .oe_view_manager > .oe_view_manager_wrapper {
display: table-row;
height: 100%;
}
.openerp .oe_application > div > .oe_view_manager > .oe_view_manager_wrapper > div {
position: relative;
height: 100%;
}
.openerp .oe_application > div > .oe_view_manager > .oe_view_manager_wrapper > div > .oe_view_manager_body {
position: absolute;
position: static\9;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: auto;
}
.openerp .oe_application .oe_breadcrumb_item:not(:last-child) {
max-width: 7em;
white-space: nowrap;
@ -1157,11 +1192,8 @@
height: inherit;
width: 100%;
}
.openerp .oe_view_manager .oe_view_manager_body {
height: inherit;
}
.openerp .oe_view_manager .oe_view_manager_view_kanban:not(:empty) {
height: inherit;
height: 100%;
}
.openerp .oe_view_manager[data-view-type=kanban] .oe_view_manager_body {
display: table-row;
@ -1381,7 +1413,7 @@
float: right;
padding: 1px 0;
line-height: 18px;
width: 400px;
min-width: 400px;
border: 1px solid #ababab;
background: white;
-moz-border-radius: 13px;
@ -1556,59 +1588,64 @@
-webkit-border-radius: 2px;
border-radius: 2px;
}
.openerp .oe_searchview.oe_searchview_open_drawer .oe_searchview_drawer {
display: block;
.openerp .oe_searchview_drawer_container {
overflow: auto;
}
.openerp .oe_searchview .oe_searchview_drawer {
cursor: default;
position: absolute;
z-index: 2;
margin-top: 4px;
top: 100%;
right: -1px;
background-color: white;
min-width: 100%;
.openerp .oe_searchview_drawer {
display: none;
border: 1px solid #afafb6;
width: 100%;
cursor: default;
display: none;
overflow: hidden;
border-bottom: 1px solid #afafb6;
text-align: left;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
padding: 8px 0;
}
.openerp .oe_searchview .oe_searchview_drawer > div {
border-top: 1px solid #cccccc;
margin: 0;
padding: 8px;
.openerp .oe_searchview_drawer .badge {
font-size: 12px;
line-height: 12px;
}
.openerp .oe_searchview .oe_searchview_drawer > div:first-child {
border-top: none;
margin: 0;
.openerp .oe_searchview_drawer > div:first-child {
border: none;
padding-left: 0;
}
.openerp .oe_searchview .oe_searchview_drawer h3 {
margin: 8px 4px 4px 0px;
.openerp .oe_searchview_drawer > div:first-child li:hover:not(.badge) {
background-color: #f0f0fa;
}
.openerp .oe_searchview_drawer .col-md-5 {
padding-left: 0;
}
.openerp .oe_searchview_drawer dl {
margin-bottom: 0;
}
.openerp .oe_searchview_drawer dt {
color: #7c7bad;
font-size: 13px;
line-height: 24px;
}
.openerp .oe_searchview .oe_searchview_drawer h4, .openerp .oe_searchview .oe_searchview_drawer h4 * {
.openerp .oe_searchview_drawer dd {
line-height: 24px;
font-size: 13px;
padding-top: 3px;
}
.openerp .oe_searchview_drawer h4, .openerp .oe_searchview_drawer h4 * {
margin: 0 0 0 2px;
padding-left: 20px;
cursor: pointer;
font-weight: normal;
display: inline-block;
}
.openerp .oe_searchview .oe_searchview_drawer h4:hover, .openerp .oe_searchview .oe_searchview_drawer h4 *:hover {
.openerp .oe_searchview_drawer h4:hover, .openerp .oe_searchview_drawer h4 *:hover {
background-color: #f0f0fa;
}
.openerp .oe_searchview .oe_searchview_drawer h4:before {
.openerp .oe_searchview_drawer h4:before {
content: "▸ ";
color: #a3a3a3;
}
.openerp .oe_searchview .oe_searchview_drawer button {
.openerp .oe_searchview_drawer button {
margin: 4px 0;
}
.openerp .oe_searchview .oe_searchview_drawer .button {
.openerp .oe_searchview_drawer .button {
border: none;
background: transparent;
padding: 0 2px;
@ -1619,126 +1656,112 @@
-webkit-border-radius: 0;
border-radius: 0;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section {
display: table;
width: 100%;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section > div {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
display: table-cell;
width: 50%;
padding-left: 2px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section ul {
margin: 0 8px 8px;
.openerp .oe_searchview_drawer .oe_searchview_section ul {
margin: 0 8px;
padding: 0;
list-style: none;
display: inline;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li {
list-style: none;
padding: 2px 4px 2px 20px;
line-height: 14px;
color: inherit;
.openerp .oe_searchview_drawer .oe_searchview_section li {
display: inline-block;
cursor: pointer;
position: relative;
margin-right: 8px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li.oe_selected:before {
content: "W";
font-family: "entypoRegular" !important;
font-size: 24px;
font-weight: 300 !important;
color: #a3a3a3;
position: absolute;
left: 4px;
top: -2px;
.openerp .oe_searchview_drawer .oe_searchview_section li > span {
display: inline-block;
max-width: 250px;
text-overflow: ellipsis;
vertical-align: bottom;
overflow: hidden;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li:hover {
background-color: #f0f0fa;
}
.openerp .oe_searchview .oe_searchview_drawer form {
.openerp .oe_searchview_drawer form {
margin-left: 12px;
}
.openerp .oe_searchview .oe_searchview_drawer form p {
.openerp .oe_searchview_drawer form p {
margin: 4px 0;
line-height: 18px;
}
.openerp .oe_searchview .oe_searchview_drawer form button {
.openerp .oe_searchview_drawer form button {
margin: 0 0 8px -3px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom {
padding: 0 8px 8px 8px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom div {
padding: 0;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom div h4 {
margin: 0;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom form {
.openerp .oe_searchview_drawer .oe_searchview_savefilter form {
display: none;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li {
.openerp .oe_searchview_drawer .oe_searchview_custom {
display: none;
}
.openerp .oe_searchview_drawer .oe_searchview_custom li {
cursor: pointer;
position: relative;
line-height: 14px;
padding: 2px 4px 2px 20px;
margin-right: 0;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li:hover {
background-color: #f0f0fa;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li button {
.openerp .oe_searchview_drawer .oe_searchview_custom li button {
position: absolute;
top: 0;
right: 5px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom label {
.openerp .oe_searchview_drawer .oe_searchview_custom li a {
margin-left: 10px;
position: inherit;
visibility: hidden;
display: inline-block;
}
.openerp .oe_searchview_drawer .oe_searchview_custom li span:hover:not(.badge) {
background-color: #f0f0fa;
}
.openerp .oe_searchview_drawer .oe_searchview_custom li:hover a {
visibility: visible;
}
.openerp .oe_searchview_drawer .oe_searchview_custom label {
font-weight: normal;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_dashboard form {
.openerp .oe_searchview_drawer .oe_searchview_dashboard form {
display: none;
margin-top: 2px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced form {
.openerp .oe_searchview_drawer .oe_searchview_advanced {
overflow: auto;
}
.openerp .oe_searchview_drawer .oe_searchview_advanced form {
display: none;
margin-top: 8px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced button.oe_add_condition:before {
.openerp .oe_searchview_drawer .oe_searchview_advanced button.oe_add_condition:before {
content: "Z";
font-family: "entypoRegular" !important;
font-size: 24px;
font-weight: 300 !important;
margin-right: 4px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced ul {
.openerp .oe_searchview_drawer .oe_searchview_advanced ul {
list-style: none;
padding: 0;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced li {
.openerp .oe_searchview_drawer .oe_searchview_advanced li {
position: relative;
list-style: none;
margin: 0;
white-space: nowrap;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced li:first-child .searchview_extended_prop_or {
.openerp .oe_searchview_drawer .oe_searchview_advanced li:first-child .searchview_extended_prop_or {
visibility: hidden;
margin-left: -14px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced .searchview_extended_prop_or {
.openerp .oe_searchview_drawer .oe_searchview_advanced .searchview_extended_prop_or {
opacity: 0.5;
margin-left: -14px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_opened h4:before {
.openerp .oe_searchview_drawer .oe_opened h4:before {
content: "▾ ";
position: relative;
top: -1px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_opened form {
.openerp .oe_searchview_drawer .oe_opened form {
display: block;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete, .openerp .oe_searchview .oe_searchview_drawer .searchview_extended_delete_prop {
.openerp .oe_searchview_drawer .oe_searchview_custom_delete, .openerp .oe_searchview_drawer .searchview_extended_delete_prop {
display: inline-block;
width: 12px;
height: 12px;
@ -1750,7 +1773,7 @@
font-weight: bold;
text-shadow: 0 1px 1px white;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete:hover, .openerp .oe_searchview .oe_searchview_drawer .searchview_extended_delete_prop:hover {
.openerp .oe_searchview_drawer .oe_searchview_custom_delete:hover, .openerp .oe_searchview_drawer .searchview_extended_delete_prop:hover {
text-decoration: none;
color: white;
background: #8786b7;
@ -1759,16 +1782,16 @@
-webkit-border-radius: 2px;
border-radius: 2px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete {
.openerp .oe_searchview_drawer .oe_searchview_custom_delete {
display: none;
position: absolute;
bottom: 1px;
right: 4px;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_private:hover .oe_searchview_custom_delete, .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_public:hover .oe_searchview_custom_delete {
.openerp .oe_searchview_drawer .oe_searchview_custom_private:hover .oe_searchview_custom_delete, .openerp .oe_searchview_drawer .oe_searchview_custom_public:hover .oe_searchview_custom_delete {
display: inline-block;
}
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_public:after {
.openerp .oe_searchview_drawer .oe_searchview_custom_public:after {
content: ",";
font-family: "entypoRegular" !important;
font-size: 22px;
@ -3423,3 +3446,7 @@ input[type="radio"], input[type="checkbox"] {
background-color: black;
opacity: 0.6;
}
body {
overflow: auto;
}

View File

@ -844,40 +844,53 @@ $sheet-padding: 16px
background: #f0eeee
border-right: 1px solid $tag-border
text-shadow: none
padding-bottom: 16px
a.oe_logo
position: relative
width: 220px
display: block
text-align: center
img
margin: 14px 0
border: 0
.oe_logo_edit
margin: 14px 0
position: absolute
top: 1px
padding: 4px
width: 100%
display: none
text-align: center
color: #eee
background: rgba(37,37,37,0.9)
@include box-sizing(border)
&:hover .oe_logo_edit_admin
display: block
.oe_footer
position: fixed
bottom: 0
padding: 4px 0
background: #f0eeee
width: 220px
text-align: center
a
font-weight: bold
color: black
span
color: #a24689
> div
height: 100%
display: table
width: 220px
position: relative
a.oe_logo
display: table-row
text-align: center
img
margin: 14px 0
border: 0
.oe_logo_edit
margin: 14px 0
position: absolute
top: 1px
padding: 4px
width: 100%
display: none
text-align: center
color: #eee
background: rgba(37,37,37,0.9)
@include box-sizing(border)
&:hover .oe_logo_edit_admin
display: block
> div
display: table-row
height: 100%
> div
position: relative
height: 100%
> div.oe_secondary_menus_container
position: absolute
position: static\9
top: 0
bottom: 0
left: 0
right: 0
overflow-x: hidden
overflow-y: auto
.oe_footer
background: #f0eeee
text-align: center
a
font-weight: bold
color: black
span
color: #a24689
// }}}
// Webclient.leftbar items {{{
@ -955,7 +968,25 @@ $sheet-padding: 16px
a
color: $link-color
> div
position: relative
height: 100%
> .oe_view_manager
> .oe_view_manager_wrapper
display: table-row
height: 100%
> div
position: relative
height: 100%
> .oe_view_manager_body
position: absolute
position: static\9
top: 0
bottom: 0
left: 0
right: 0
overflow: auto
.oe_breadcrumb_item:not(:last-child)
max-width: 7em
white-space: nowrap
@ -970,10 +1001,8 @@ $sheet-padding: 16px
display: table
height: inherit
width: 100%
.oe_view_manager_body
height: inherit
.oe_view_manager_view_kanban:not(:empty)
height: inherit
height: 100%
&[data-view-type=kanban]
.oe_view_manager_body
display: table-row
@ -1150,7 +1179,7 @@ $sheet-padding: 16px
float: right
padding: 1px 0
line-height: 18px
width: 400px
min-width: 400px
border: 1px solid #ababab
background: white
@include radius(13px)
@ -1277,188 +1306,180 @@ $sheet-padding: 16px
background: #8786b7
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4)
@include radius(2px)
&.oe_searchview_open_drawer
.oe_searchview_drawer
.oe_searchview_drawer_container
overflow: auto
.oe_searchview_drawer
display: none
width: 100%
cursor: default
display: none
overflow: hidden
border-bottom: 1px solid $tag-border
text-align: left
padding: 8px 0
.badge
font-size: 12px
line-height: 12px
> div:first-child
border: none
padding-left: 0
li:hover:not(.badge)
background-color: $hover-background
.col-md-5
padding-left: 0
dl
margin-bottom: 0
dt
color: $section-title-color
font-size: 13px
line-height: 24px
dd
line-height: 24px
font-size: 13px
padding-top: 3px
h4, h4 *
margin: 0 0 0 2px
padding-left: 20px
cursor: pointer
font-weight: normal
display: inline-block
&:hover
background-color: $hover-background
h4:before
content: ""
color: #a3a3a3
button
margin: 4px 0
.button
border: none
background: transparent
padding: 0 2px
@include box-shadow(none)
@include radius(0)
.oe_searchview_section
ul
margin: 0 8px
padding: 0
list-style: none
display: inline
li
display: inline-block
cursor: pointer
position: relative
margin-right: 8px
> span
display: inline-block
max-width: 250px
text-overflow: ellipsis
vertical-align: bottom
overflow: hidden
form
margin-left: 12px
p
margin: 4px 0
line-height: 18px
button
margin: 0 0 8px -3px // Managed margin-left according bootstrap3
.oe_searchview_savefilter
form
display: none
.oe_searchview_custom
display: none
li
cursor: pointer
position: relative
line-height: 14px
margin-right: 0
button
position: absolute
top: 0
right: 5px
a
margin-left: 10px
position: inherit
visibility: hidden
display: inline-block
span:hover:not(.badge)
background-color: $hover-background
li:hover a
visibility: visible
//Customize for searchview label
label
font-weight: normal
//End of Customize
.oe_searchview_dashboard
form
display: none
margin-top: 2px
.oe_searchview_advanced
overflow: auto
form
display: none
margin-top: 8px
button.oe_add_condition:before
content: "Z"
font-family: "entypoRegular" !important
font-size: 24px
font-weight: 300 !important
margin-right: 4px
ul
list-style: none
padding: 0
li
position: relative
list-style: none
margin: 0
white-space: nowrap
&:first-child .searchview_extended_prop_or
visibility: hidden
margin-left: -14px
.searchview_extended_prop_or
opacity: 0.5
margin-left: -14px //Customize 'or' in searchview
.oe_opened
h4:before
content: ""
position: relative
top: -1px
form
display: block
.oe_searchview_drawer
cursor: default
position: absolute
z-index: 2
// detach drawer from field slightly
margin-top: 4px
top: 100%
right: -1px
background-color: white
min-width: 100%
// delete buttons
.oe_searchview_custom_delete, .searchview_extended_delete_prop
display: inline-block
width: 12px
height: 12px
line-height: 12px
padding: 1px
color: #8786b7
line-height: 8px
text-align: center
font-weight: bold
text-shadow: 0 1px 1px white
&:hover
text-decoration: none
color: white
background: #8786b7
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4)
@include radius(2px)
.oe_searchview_custom_delete
display: none
border: 1px solid $tag-border
text-align: left
@include radius(4px)
@include box-shadow(0 1px 4px rgba(0,0,0,0.3))
> div
border-top: 1px solid #ccc
margin: 0
padding: 8px
> div:first-child
border-top: none
margin: 0
h3
margin: 8px 4px 4px 0px
color: $section-title-color
font-size: 13px
h4, h4 *
margin: 0 0 0 2px
cursor: pointer
font-weight: normal
display: inline-block
&:hover
background-color: $hover-background
h4:before
content: ""
color: #a3a3a3
button
margin: 4px 0
.button
border: none
background: transparent
padding: 0 2px
@include box-shadow(none)
@include radius(0)
.oe_searchview_section
display: table
width: 100%
> div
@include box-sizing(border)
display: table-cell
width: 50%
padding-left: 2px // Managed padding-left according bootstrap3
ul
margin: 0 8px 8px
padding: 0
list-style: none
li
list-style: none
padding: 2px 4px 2px 20px
line-height: 14px
color: inherit
cursor: pointer
position: relative
&.oe_selected:before
content: "W"
font-family: "entypoRegular" !important
font-size: 24px
font-weight: 300 !important
color: #a3a3a3
position: absolute
left: 4px
top: -2px
// after oe_selected so background color is not overridden
&:hover
background-color: $hover-background
form
margin-left: 12px
p
margin: 4px 0
line-height: 18px
button
margin: 0 0 8px -3px // Managed margin-left according bootstrap3
.oe_searchview_custom
padding: 0 8px 8px 8px
div
padding: 0
h4
margin: 0
form
display: none
li
cursor: pointer
position: relative
line-height: 14px
padding: 2px 4px 2px 20px
&:hover
background-color: $hover-background
button
position: absolute
top: 0
right: 5px
//Customize for searchview label
label
font-weight: normal
//End of Customize
.oe_searchview_dashboard
form
display: none
margin-top: 2px
.oe_searchview_advanced
form
display: none
margin-top: 8px
button.oe_add_condition:before
content: "Z"
font-family: "entypoRegular" !important
font-size: 24px
font-weight: 300 !important
margin-right: 4px
ul
list-style: none
padding: 0
li
position: relative
list-style: none
margin: 0
white-space: nowrap
&:first-child .searchview_extended_prop_or
visibility: hidden
margin-left: -14px
.searchview_extended_prop_or
opacity: 0.5
margin-left: -14px //Customize 'or' in searchview
.oe_opened
h4:before
content: ""
position: relative
top: -1px
form
display: block
// delete buttons
.oe_searchview_custom_delete, .searchview_extended_delete_prop
display: inline-block
width: 12px
height: 12px
line-height: 12px
padding: 1px
color: #8786b7
line-height: 8px
text-align: center
font-weight: bold
text-shadow: 0 1px 1px white
&:hover
text-decoration: none
color: white
background: #8786b7
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4)
@include radius(2px)
.oe_searchview_custom_delete
display: none
position: absolute
bottom: 1px
right: 4px
.oe_searchview_custom_private, .oe_searchview_custom_public
&:hover
.oe_searchview_custom_delete
display: inline-block
.oe_searchview_custom_public:after
content: ","
font-family: "entypoRegular" !important
font-size: 22px
font-weight: 300 !important
margin: 0 0 0 4px
padding: 0
position: absolute
bottom: 1px
right: 4px
.oe_searchview_custom_private, .oe_searchview_custom_public
&:hover
.oe_searchview_custom_delete
display: inline-block
.oe_searchview_custom_public:after
content: ","
font-family: "entypoRegular" !important
font-size: 22px
font-weight: 300 !important
margin: 0 0 0 4px
padding: 0
// }}}
// Views Common {{{
.oe_view_nocontent
@ -2779,5 +2800,7 @@ input[type="radio"], input[type="checkbox"]
opacity: 0.6000000238418579
body
overflow: auto
// au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers <afile> > "%:p:r.css"
// vim:tabstop=4:shiftwidth=4:softtabstop=4:fdm=marker:

View File

@ -340,7 +340,8 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
},
'click .oe_searchview_unfold_drawer': function (e) {
e.stopImmediatePropagation();
this.$el.toggleClass('oe_searchview_open_drawer');
if (this.drawer)
this.drawer.toggle();
},
'keydown .oe_searchview_input, .oe_searchview_facet': function (e) {
switch(e.which) {
@ -383,19 +384,24 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
this.defaults = defaults || {};
this.has_defaults = !_.isEmpty(this.defaults);
this.inputs = [];
this.controls = [];
this.headless = this.options.hidden && !this.has_defaults;
this.input_subviews = [];
this.view_manager = null;
this.$view_manager_header = null;
this.ready = $.Deferred();
this.drawer_ready = $.Deferred();
this.fields_view_get = $.Deferred();
this.drawer = new instance.web.SearchViewDrawer(parent, this);
},
start: function() {
var self = this;
var p = this._super();
this.$view_manager_header = this.$el.parents(".oe_view_manager_header").first();
this.setup_global_completion();
this.query = new my.SearchQuery()
.on('add change reset remove', this.proxy('do_search'))
@ -416,20 +422,32 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
});
this.alive($.when(load_view)).then(function (r) {
self.fields_view_get.resolve(r);
return self.search_view_loaded(r);
}).fail(function () {
self.ready.reject.apply(null, arguments);
});
}
instance.web.bus.on('click', this, function(ev) {
if ($(ev.target).parents('.oe_searchview').length === 0) {
self.$el.removeClass('oe_searchview_open_drawer');
}
});
var view_manager = this.getParent();
while (!(view_manager instanceof instance.web.ViewManager) &&
view_manager && view_manager.getParent) {
view_manager = view_manager.getParent();
}
if (view_manager) {
this.view_manager = view_manager;
view_manager.on('switch_mode', this, function (e) {
self.drawer.toggle(e === 'graph');
});
}
return $.when(p, this.ready);
},
set_drawer: function (drawer) {
this.drawer = drawer;
},
show: function () {
this.$el.show();
},
@ -462,14 +480,6 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
.$el.focus();
},
/**
* Sets up thingie where all the mess is put?
*/
select_for_drawer: function () {
return _(this.inputs).filter(function (input) {
return input.in_drawer();
});
},
/**
* Sets up search view's view-wide auto-completion widget
*/
@ -530,7 +540,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
* @param {Function} resp response callback
*/
complete_global_search: function (req, resp) {
$.when.apply(null, _(this.inputs).chain()
$.when.apply(null, _(this.drawer.inputs).chain()
.filter(function (input) { return input.visible(); })
.invoke('complete', req.term)
.value()).then(function () {
@ -630,87 +640,6 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
});
},
/**
* Builds a list of widget rows (each row is an array of widgets)
*
* @param {Array} items a list of nodes to convert to widgets
* @param {Object} fields a mapping of field names to (ORM) field attributes
* @param {Object} [group] group to put the new controls in
*/
make_widgets: function (items, fields, group) {
if (!group) {
group = new instance.web.search.Group(
this, 'q', {attrs: {string: _t("Filters")}});
}
var self = this;
var filters = [];
_.each(items, function (item) {
if (filters.length && item.tag !== 'filter') {
group.push(new instance.web.search.FilterGroup(filters, group));
filters = [];
}
switch (item.tag) {
case 'separator': case 'newline':
break;
case 'filter':
filters.push(new instance.web.search.Filter(item, group));
break;
case 'group':
self.make_widgets(item.children, fields,
new instance.web.search.Group(group, 'w', item));
break;
case 'field':
var field = this.make_field(
item, fields[item['attrs'].name], group);
group.push(field);
// filters
self.make_widgets(item.children, fields, group);
break;
}
}, this);
if (filters.length) {
group.push(new instance.web.search.FilterGroup(filters, this));
}
},
/**
* Creates a field for the provided field descriptor item (which comes
* from fields_view_get)
*
* @param {Object} item fields_view_get node for the field
* @param {Object} field fields_get result for the field
* @param {Object} [parent]
* @returns instance.web.search.Field
*/
make_field: function (item, field, parent) {
// M2O combined with selection widget is pointless and broken in search views,
// but has been used in the past for unsupported hacks -> ignore it
if (field.type === "many2one" && item.attrs.widget === "selection"){
item.attrs.widget = undefined;
}
var obj = instance.web.search.fields.get_any( [item.attrs.widget, field.type]);
if(obj) {
return new (obj) (item, field, parent || this);
} else {
console.group('Unknown field type ' + field.type);
console.error('View node', item);
console.info('View field', field);
console.info('In view', this);
console.groupEnd();
return null;
}
},
add_common_inputs: function() {
// add Filters to this.inputs, need view.controls filled
(new instance.web.search.Filters(this));
// add custom filters to this.inputs
this.custom_filters = new instance.web.search.CustomFilters(this);
// add Advanced to this.inputs
(new instance.web.search.Advanced(this));
},
search_view_loaded: function(data) {
var self = this;
this.fields_view = data;
@ -720,24 +649,9 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
"Got non-search view after asking for a search view: type %s, arch root %s",
data.type, data.arch.tag));
}
this.make_widgets(
data['arch'].children,
data.fields);
this.add_common_inputs();
// build drawer
var drawer_started = $.when.apply(
null, _(this.select_for_drawer()).invoke(
'appendTo', this.$('.oe_searchview_drawer')));
// load defaults
var defaults_fetched = $.when.apply(null, _(this.inputs).invoke(
'facet_for_defaults', this.defaults))
.then(this.proxy('setup_default_query'));
return $.when(drawer_started, defaults_fetched)
return this.drawer_ready
.then(this.proxy('setup_default_query'))
.then(function () {
self.trigger("search_view_loaded", data);
self.ready.resolve();
@ -747,14 +661,14 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
// Hacky implementation of CustomFilters#facet_for_defaults ensure
// CustomFilters will be ready (and CustomFilters#filters will be
// correctly filled) by the time this method executes.
var custom_filters = this.custom_filters.filters;
var custom_filters = this.drawer.custom_filters.filters;
if (!this.options.disable_custom_filters && !_(custom_filters).isEmpty()) {
// Check for any is_default custom filter
var personal_filter = _(custom_filters).find(function (filter) {
return filter.user_id && filter.is_default;
});
if (personal_filter) {
this.custom_filters.toggle_filter(personal_filter, true);
this.drawer.custom_filters.toggle_filter(personal_filter, true);
return;
}
@ -762,7 +676,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
return !filter.user_id && filter.is_default;
});
if (global_filter) {
this.custom_filters.toggle_filter(global_filter, true);
this.drawer.custom_filters.toggle_filter(global_filter, true);
return;
}
}
@ -872,9 +786,167 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
on_invalid: function (errors) {
this.do_notify(_t("Invalid Search"), _t("triggered from search view"));
this.trigger('invalid_search', errors);
},
// The method appendTo is overwrited to be able to insert the drawer anywhere
appendTo: function ($searchview_parent, $searchview_drawer_node) {
var $searchview_drawer_node = $searchview_drawer_node || $searchview_parent;
return $.when(
this._super($searchview_parent),
this.drawer.appendTo($searchview_drawer_node)
);
},
destroy: function () {
this.drawer.destroy();
this.getParent().destroy.call(this);
}
});
instance.web.SearchViewDrawer = instance.web.Widget.extend({
template: "SearchViewDrawer",
init: function(parent, searchview) {
this._super(parent);
this.searchview = searchview;
this.searchview.set_drawer(this);
this.ready = searchview.drawer_ready;
this.controls = [];
this.inputs = [];
},
toggle: function (visibility) {
this.$el.toggle(visibility);
var $view_manager_body = this.$el.closest('.oe_view_manager_body');
if ($view_manager_body.length) {
$view_manager_body.scrollTop(0);
}
},
start: function() {
var self = this;
var filters_ready = this.searchview.fields_view_get
.then(this.proxy('prepare_filters'));
return $.when(this._super(), filters_ready).then(function () {
var defaults = arguments[1][0];
self.ready.resolve.apply(null, defaults);
});
},
prepare_filters: function (data) {
this.make_widgets(
data['arch'].children,
data.fields);
this.add_common_inputs();
// build drawer
var in_drawer = this.select_for_drawer();
var $first_col = this.$(".col-md-7"),
$snd_col = this.$(".col-md-5");
var add_custom_reports = in_drawer[0].appendTo($first_col),
add_filters = in_drawer[1].appendTo($first_col),
add_rest = $.when.apply(null, _(in_drawer.slice(2)).invoke('appendTo', $snd_col)),
defaults_fetched = $.when.apply(null, _(this.inputs).invoke(
'facet_for_defaults', this.searchview.defaults));
return $.when(defaults_fetched, add_custom_reports, add_filters, add_rest);
},
/**
* Sets up thingie where all the mess is put?
*/
select_for_drawer: function () {
return _(this.inputs).filter(function (input) {
return input.in_drawer();
});
},
/**
* Builds a list of widget rows (each row is an array of widgets)
*
* @param {Array} items a list of nodes to convert to widgets
* @param {Object} fields a mapping of field names to (ORM) field attributes
* @param {Object} [group] group to put the new controls in
*/
make_widgets: function (items, fields, group) {
if (!group) {
group = new instance.web.search.Group(
this, 'q', {attrs: {string: _t("Filters")}});
}
var self = this;
var filters = [];
_.each(items, function (item) {
if (filters.length && item.tag !== 'filter') {
group.push(new instance.web.search.FilterGroup(filters, group));
filters = [];
}
switch (item.tag) {
case 'separator': case 'newline':
break;
case 'filter':
filters.push(new instance.web.search.Filter(item, group));
break;
case 'group':
self.make_widgets(item.children, fields,
new instance.web.search.Group(group, 'w', item));
break;
case 'field':
var field = this.make_field(
item, fields[item['attrs'].name], group);
group.push(field);
// filters
self.make_widgets(item.children, fields, group);
break;
}
}, this);
if (filters.length) {
group.push(new instance.web.search.FilterGroup(filters, this));
}
},
/**
* Creates a field for the provided field descriptor item (which comes
* from fields_view_get)
*
* @param {Object} item fields_view_get node for the field
* @param {Object} field fields_get result for the field
* @param {Object} [parent]
* @returns instance.web.search.Field
*/
make_field: function (item, field, parent) {
// M2O combined with selection widget is pointless and broken in search views,
// but has been used in the past for unsupported hacks -> ignore it
if (field.type === "many2one" && item.attrs.widget === "selection"){
item.attrs.widget = undefined;
}
var obj = instance.web.search.fields.get_any( [item.attrs.widget, field.type]);
if(obj) {
return new (obj) (item, field, parent || this);
} else {
console.group('Unknown field type ' + field.type);
console.error('View node', item);
console.info('View field', field);
console.info('In view', this);
console.groupEnd();
return null;
}
},
add_common_inputs: function() {
// add custom filters to this.inputs
this.custom_filters = new instance.web.search.CustomReports(this);
// add Filters to this.inputs, need view.controls filled
(new instance.web.search.Filters(this));
(new instance.web.search.SaveFilter(this, this.custom_filters));
// add Advanced to this.inputs
(new instance.web.search.Advanced(this));
},
});
/**
* Registry of search fields, called by :js:class:`instance.web.SearchView` to
* find and instantiate its field widgets.
@ -932,9 +1004,10 @@ instance.web.search.Widget = instance.web.Widget.extend( /** @lends instance.web
this._super(parent);
var ancestor = parent;
do {
this.view = ancestor;
} while (!(ancestor instanceof instance.web.SearchView)
this.drawer = ancestor;
} while (!(ancestor instanceof instance.web.SearchViewDrawer)
&& (ancestor = (ancestor.getParent && ancestor.getParent())));
this.view = this.drawer.searchview || this.drawer;
}
});
@ -956,7 +1029,7 @@ instance.web.search.Group = instance.web.search.Widget.extend({
this.name = attrs.string;
this.children = [];
this.view.controls.push(this);
this.drawer.controls.push(this);
},
push: function (input) {
this.children.push(input);
@ -977,7 +1050,7 @@ instance.web.search.Input = instance.web.search.Widget.extend( /** @lends instan
init: function (parent) {
this._super(parent);
this.load_attrs({});
this.view.inputs.push(this);
this.drawer.inputs.push(this);
},
/**
* Fetch auto-completion values for the widget.
@ -1088,7 +1161,7 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in
*/
search_change: function () {
var self = this;
var $filters = this.$('> li').removeClass('oe_selected');
var $filters = this.$('> li').removeClass('badge');
var facet = this.view.query.find(_.bind(this.match_facet, this));
if (!facet) { return; }
facet.values.each(function (v) {
@ -1096,7 +1169,7 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in
if (i === -1) { return; }
$filters.filter(function () {
return Number($(this).data('index')) === i;
}).addClass('oe_selected');
}).addClass('badge');
});
},
/**
@ -1628,12 +1701,12 @@ instance.web.search.ManyToOneField = instance.web.search.CharField.extend({
}
});
instance.web.search.CustomFilters = instance.web.search.Input.extend({
template: 'SearchView.CustomFilters',
instance.web.search.CustomReports = instance.web.search.Input.extend({
template: 'SearchView.CustomReports',
_in_drawer: true,
init: function () {
this.is_ready = $.Deferred();
this._super.apply(this, arguments);
this._super.apply(this,arguments);
},
start: function () {
var self = this;
@ -1648,13 +1721,6 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
self.clear_selection();
})
.on('reset', this.proxy('clear_selection'));
this.$el.on('submit', 'form', this.proxy('save_current'));
this.$el.on('click', 'input[type=checkbox]', function() {
$(this).siblings('input[type=checkbox]').prop('checked', false);
});
this.$el.on('click', 'h4', function () {
self.$el.toggleClass('oe_opened');
});
return this.model.call('get_filters', [this.view.model])
.then(this.proxy('set_filters'))
.done(function () { self.is_ready.resolve(); })
@ -1708,7 +1774,7 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
};
},
clear_selection: function () {
this.$('li.oe_selected').removeClass('oe_selected');
this.$('span.badge').removeClass('badge');
},
append_filter: function (filter) {
var self = this;
@ -1721,12 +1787,13 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
} else {
var id = filter.id;
this.filters[key] = filter;
$filter = this.$filters[key] = $('<li></li>')
$filter = $('<li></li>')
.appendTo(this.$('.oe_searchview_custom_list'))
.addClass(filter.user_id ? 'oe_searchview_custom_private'
: 'oe_searchview_custom_public')
.toggleClass('oe_searchview_custom_default', filter.is_default)
.text(filter.name);
.append(this.$filters[key] = $('<span>').text(filter.name));
this.$filters[key].addClass(filter.user_id ? 'oe_searchview_custom_private'
: 'oe_searchview_custom_public')
$('<a class="oe_searchview_custom_delete">x</a>')
.click(function (e) {
@ -1738,14 +1805,18 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
$filter.remove();
delete self.$filters[key];
delete self.filters[key];
if (_.isEmpty(self.filters)) {
self.hide();
}
});
})
.appendTo($filter);
}
$filter.unbind('click').click(function () {
this.$filters[key].unbind('click').click(function () {
self.toggle_filter(filter);
});
this.show();
},
toggle_filter: function (filter, preventSearch) {
var current = this.view.query.find(function (facet) {
@ -1753,15 +1824,44 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
});
if (current) {
this.view.query.remove(current);
this.$filters[this.key_for(filter)].removeClass('oe_selected');
this.$filters[this.key_for(filter)].removeClass('badge');
return;
}
this.view.query.reset([this.facet_for(filter)], {
preventSearch: preventSearch || false});
this.$filters[this.key_for(filter)].addClass('oe_selected');
this.$filters[this.key_for(filter)].addClass('badge');
},
set_filters: function (filters) {
_(filters).map(_.bind(this.append_filter, this));
if (!filters.length) {
this.hide();
}
},
hide: function () {
this.$el.hide();
},
show: function () {
this.$el.show();
},
});
instance.web.search.SaveFilter = instance.web.search.Input.extend({
template: 'SearchView.SaveFilter',
_in_drawer: true,
init: function (parent, custom_reports) {
this._super(parent);
this.custom_reports = custom_reports;
},
start: function () {
var self = this;
this.model = new instance.web.Model('ir.filters');
this.$el.on('submit', 'form', this.proxy('save_current'));
this.$el.on('click', 'input[type=checkbox]', function() {
$(this).siblings('input[type=checkbox]').prop('checked', false);
});
this.$el.on('click', 'h4', function () {
self.$el.toggleClass('oe_opened');
});
},
save_current: function () {
var self = this;
@ -1799,14 +1899,16 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
// FIXME: current context?
return self.model.call('create_or_replace', [filter]).done(function (id) {
filter.id = id;
self.append_filter(filter);
if (self.custom_reports) {
self.custom_reports.append_filter(filter);
}
self.$el
.removeClass('oe_opened')
.find('form')[0].reset();
});
});
return false;
}
},
});
instance.web.search.Filters = instance.web.search.Input.extend({
@ -1814,22 +1916,13 @@ instance.web.search.Filters = instance.web.search.Input.extend({
_in_drawer: true,
start: function () {
var self = this;
var running_count = 0;
// get total filters count
var is_group = function (i) { return i instanceof instance.web.search.FilterGroup; };
var visible_filters = _(this.view.controls).chain().reject(function (group) {
var visible_filters = _(this.drawer.controls).chain().reject(function (group) {
return _(_(group.children).filter(is_group)).isEmpty()
|| group.modifiers.invisible;
});
var filters_count = visible_filters
.pluck('children')
.flatten()
.filter(is_group)
.map(function (i) { return i.filters.length; })
.sum()
.value();
var col1 = [], col2 = visible_filters.map(function (group) {
var groups = visible_filters.map(function (group) {
var filters = _(group.children).filter(is_group);
return {
name: _.str.sprintf("<span class='oe_i'>%s</span> %s",
@ -1840,27 +1933,16 @@ instance.web.search.Filters = instance.web.search.Input.extend({
};
}).value();
while (col2.length) {
// col1 + group should be smaller than col2 + group
if ((running_count + col2[0].length) <= (filters_count - running_count)) {
running_count += col2[0].length;
col1.push(col2.shift());
} else {
break;
}
}
var $dl = $('<dl class="dl-horizontal">').appendTo(this.$el);
return $.when(
this.render_column(col1, $('<div>').appendTo(this.$el)),
this.render_column(col2, $('<div>').appendTo(this.$el)));
var rendered_lines = _.map(groups, function (group) {
$('<dt>').html(group.name).appendTo($dl);
var $dd = $('<dd>').appendTo($dl);
return $.when.apply(null, _(group.filters).invoke('appendTo', $dd));
});
return $.when.apply(this, rendered_lines);
},
render_column: function (column, $el) {
return $.when.apply(null, _(column).map(function (group) {
$('<h3>').html(group.name).appendTo($el);
return $.when.apply(null,
_(group.filters).invoke('appendTo', $el));
}));
}
});
instance.web.search.Advanced = instance.web.search.Input.extend({

View File

@ -5306,8 +5306,12 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend
if (this.searchview) {
this.searchview.destroy();
}
if (this.searchview_drawer) {
this.searchview_drawer.destroy();
}
this.searchview = new instance.web.SearchView(this,
this.dataset, false, search_defaults);
this.searchview_drawer = new instance.web.SearchViewDrawer(this, this.searchview);
this.searchview.on('search_data', self, function(domains, contexts, groupbys) {
if (self.initial_ids) {
self.do_search(domains.concat([[["id", "in", self.initial_ids]], self.domain]),
@ -5353,7 +5357,7 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend
});
});
});
this.searchview.appendTo($(".oe_popup_search", self.$el));
this.searchview.appendTo(this.$(".oe_popup_search"));
},
do_search: function(domains, contexts, groupbys) {
var self = this;

View File

@ -607,7 +607,6 @@ instance.web.ViewManager = instance.web.Widget.extend({
// If no default view defined, switch to the first one in sequence
var default_view = this.flags.default_view || this.views_src[0].view_type;
return this.switch_mode(default_view, null, this.flags[default_view] && this.flags[default_view].options);
@ -647,7 +646,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
_.each(_.keys(self.views), function(view_name) {
var controller = self.views[view_name].controller;
if (controller) {
var container = self.$el.find("> .oe_view_manager_body > .oe_view_manager_view_" + view_name);
var container = self.$el.find("> div > div > .oe_view_manager_body > .oe_view_manager_view_" + view_name);
if (view_name === view_type) {
container.show();
controller.do_show(view_options || {});
@ -690,7 +689,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
controller.on('switch_mode', self, this.switch_mode);
controller.on('previous_view', self, this.prev_view);
var container = this.$el.find("> .oe_view_manager_body > .oe_view_manager_view_" + view_type);
var container = this.$el.find("> div > div > .oe_view_manager_body > .oe_view_manager_view_" + view_type);
var view_promise = controller.appendTo(container);
this.views[view_type].controller = controller;
this.views[view_type].deferred.resolve(view_type);
@ -705,6 +704,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
self.trigger("controller_inited",view_type,controller);
});
},
/**
* @returns {Number|Boolean} the view id of the given type, false if not found
*/
@ -800,6 +800,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
if (this.searchview) {
this.searchview.destroy();
}
var options = {
hidden: this.flags.search_view === false,
disable_custom_filters: this.flags.search_disable_custom_filters,
@ -807,7 +808,8 @@ instance.web.ViewManager = instance.web.Widget.extend({
this.searchview = new instance.web.SearchView(this, this.dataset, view_id, search_defaults, options);
this.searchview.on('search_data', self, this.do_searchview_search);
return this.searchview.appendTo(this.$el.find(".oe_view_manager_view_search"));
return this.searchview.appendTo(this.$(".oe_view_manager_view_search"),
this.$(".oe_searchview_drawer_container"));
},
do_searchview_search: function(domains, contexts, groupbys) {
var self = this,

View File

@ -440,14 +440,20 @@
</tr>
<tr>
<td class="oe_leftbar" valign="top">
<t t-set="debug" t-value="__debug__ ? '&amp;debug' : ''"/>
<a class="oe_logo" t-attf-href="/web?#{debug}">
<span class="oe_logo_edit">Edit Company data</span>
<img t-att-src='widget.session.url("/web/binary/company_logo")'/>
</a>
<div class="oe_secondary_menus_container"/>
<div class="oe_footer">
Powered by <a href="https://www.odoo.com" target="_blank"><span>Odoo</span></a>
<div>
<t t-set="debug" t-value="__debug__ ? '&amp;debug' : ''"/>
<a class="oe_logo" t-attf-href="/web?#{debug}">
<span class="oe_logo_edit">Edit Company data</span>
<img t-att-src='widget.session.url("/web/binary/company_logo")'/>
</a>
<div>
<div>
<div class="oe_secondary_menus_container"/>
</div>
</div>
<div class="oe_footer">
Powered by <a href="http://www.odoo.com" target="_blank"><span>Odoo</span></a>
</div>
</div>
</td>
<td class="oe_application">
@ -520,10 +526,15 @@
</tr>
</table>
<div class="oe_view_manager_body">
<t t-foreach="widget.views_src" t-as="view">
<div t-attf-class="oe_view_manager_view_#{view.view_type}"/>
</t>
<div class="oe_view_manager_wrapper">
<div>
<div class="oe_view_manager_body">
<div class="oe_searchview_drawer_container"/>
<t t-foreach="widget.views_src" t-as="view">
<div t-attf-class="oe_view_manager_view_#{view.view_type}"/>
</t>
</div>
</div>
</div>
</div>
</t>
@ -1556,11 +1567,15 @@
<div class="oe_searchview_facets"/>
<div class="oe_searchview_clear"/>
<div class="oe_searchview_unfold_drawer" title="Advanced Search..."/>
<div class="oe_searchview_drawer"/>
<button type="button" class="oe_searchview_search"
title="Search Again">Search</button>
</div>
<div t-name="SearchViewDrawer" class="oe_searchview_drawer" style="display:none;">
<div class="col-md-7"></div>
<div class="col-md-5"></div>
</div>
<div t-name="SearchView.InputView"
class="oe_searchview_input"
contenteditable="true"
@ -1717,24 +1732,27 @@
<div t-name="SearchView.Filters" class="oe_searchview_filters oe_searchview_section">
</div>
<div t-name="SearchView.CustomFilters" class="oe_searchview_custom oe_searchview_section">
<div>
<h3><span class="oe_i">M</span> Custom Filters</h3>
<ul class="oe_searchview_custom_list"/>
<div class="oe_searchview_custom">
<h4>Save current filter</h4>
<form class="oe_form">
<p class="oe_form_required"><input id="oe_searchview_custom_input" placeholder="Filter name"/></p>
<p>
<input id="oe_searchview_custom_public" type="checkbox"/>
<label for="oe_searchview_custom_public">Share with all users</label>
<input id="oe_searchview_custom_default" type="checkbox"/>
<label for="oe_searchview_custom_default">Use by default</label>
</p>
<button>Save</button>
</form>
</div>
</div>
<div t-name="SearchView.CustomReports" class="oe_searchview_custom oe_searchview_section">
<dl class="dl-horizontal">
<dt><span class="oe_i">M</span> Custom Reports</dt>
<dd><ul class="oe_searchview_custom_list"/></dd>
</dl>
</div>
<div t-name="SearchView.SaveFilter" class="oe_searchview_savefilter">
<h4>Save current filter</h4>
<form class="oe_form">
<p class="oe_form_required"><input id="oe_searchview_custom_input" placeholder="Filter name"/></p>
<p>
<input id="oe_searchview_custom_public" type="checkbox"/>
<label for="oe_searchview_custom_public">Share with all users</label>
<input id="oe_searchview_custom_default" type="checkbox"/>
<label for="oe_searchview_custom_default">Use by default</label>
</p>
<button>Save</button>
</form>
</div>
<div t-name="SearchView.advanced" class="oe_searchview_advanced">

Some files were not shown because too many files have changed in this diff Show More