Serpent Consulting Services Pvt. Ltd.
11 years ago
6 changed files with 245 additions and 0 deletions
-
23web_search_alphabetic/__init__.py
-
49web_search_alphabetic/__openerp__.py
-
44web_search_alphabetic/static/src/css/web_search.css
-
BINweb_search_alphabetic/static/src/img/icon.png
-
80web_search_alphabetic/static/src/js/web_search.js
-
49web_search_alphabetic/static/src/xml/web_search.xml
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# OpenERP, Open Source Management Solution |
|||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). |
|||
# Copyright (C) 2011-2014 Serpent Consulting Services (<http://www.serpentcs.com>) |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################ |
|||
|
|||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
@ -0,0 +1,49 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# OpenERP, Open Source Management Solution |
|||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). |
|||
# Copyright (C) 2011-2014 Serpent Consulting Services (<http://www.serpentcs.com>) |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################ |
|||
|
|||
{ |
|||
'name': 'Web Alphabetical Search', |
|||
'author' : 'Serpent Consulting Services Pvt. Ltd.', |
|||
'category' : 'Web', |
|||
'website': 'http://www.serpentcs.com', |
|||
'description': """ |
|||
OpenERP Web Search Extended. |
|||
============================ |
|||
|
|||
This module used for search record base on alphabetical character be default it will search on name field. |
|||
User also is able to change search field name instead of name field. |
|||
""", |
|||
'version': '1.0', |
|||
'depends': ['web'], |
|||
'js': [ |
|||
'static/src/js/web_search.js' |
|||
], |
|||
'css': [ |
|||
'static/src/css/web_search.css' |
|||
], |
|||
'qweb' : [ |
|||
'static/src/xml/web_search.xml', |
|||
], |
|||
'auto_install': False |
|||
} |
|||
|
|||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
@ -0,0 +1,44 @@ |
|||
.openerp .search_filter { |
|||
background: #F0F0F0; |
|||
width: 100%; |
|||
border: 1px solid #999; |
|||
background: -moz-linear-gradient(top, #F0F0F0 0%, #C0C0C0 100%); |
|||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#C0C0C0)); |
|||
} |
|||
|
|||
.openerp .oe_filter_label { |
|||
background: #F0F0F0; |
|||
width: 3.35%; |
|||
border: 1px solid #999; |
|||
background: -moz-linear-gradient(top, #F0F0F0 0%, #C0C0C0 100%); |
|||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#C0C0C0)); |
|||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F0F0F0', endColorstr='#C0C0C0',GradientType=0 ); |
|||
} |
|||
.openerp .oe_filter_label:hover { |
|||
background: #F0F0F0; |
|||
background: -moz-linear-gradient(top, #F0F0F0 0%, #A1A7CE 100%); |
|||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F0F0F0), color-stop(100%,#A1A7CE)); |
|||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F0F0F0', endColorstr='#A1A7CE',GradientType=0 ); |
|||
} |
|||
.openerp .oe_filter_label:active { |
|||
background: #aaa; |
|||
background: -moz-linear-gradient(top, #999999 0%, #EEEEEE 100%); |
|||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#999999), color-stop(100%,#EEEEEE)); |
|||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#999999', endColorstr='#EEEEEE',GradientType=0 ); |
|||
} |
|||
.openerp .oe_filter_label.enabled { |
|||
background: #aaa; |
|||
filter: none; |
|||
-moz-box-shadow: none; |
|||
-webkit-box-shadow: none; |
|||
-o-box-shadow: none; |
|||
box-shadow: none; |
|||
} |
|||
.openerp .oe_filter_label { |
|||
font-weight: bold; |
|||
text-transform: uppercase; |
|||
text-shadow: #EEE 0 1px 0; |
|||
color: #4C4C4C; |
|||
white-space: nowrap; |
|||
margin: 0; |
|||
} |
After Width: 159 | Height: 221 | Size: 16 KiB |
@ -0,0 +1,80 @@ |
|||
openerp.web_search_alphabetic = function (instance) { |
|||
var QWeb = instance.web.qweb; |
|||
instance.web.SearchView.include({ |
|||
start: function() { |
|||
var result = this._super(); |
|||
var self = this; |
|||
self.search_on = "name"; |
|||
self.fields_selection = []; |
|||
this.dataset.call('fields_get', [false, {}]).done(function (fields) { |
|||
$.each(fields, function (value) { |
|||
if(fields[value].type == "char"){ |
|||
fields[value].id = value; |
|||
self.fields_selection.push(fields[value]); |
|||
} |
|||
}) |
|||
if(self.fields_selection.length){ |
|||
$('.field_selection_column').append((QWeb.render('field-selection', {widget: self}))); |
|||
$("#field_name_selection").change(function(){ |
|||
self.search_on = $(this).val() || false; |
|||
}) |
|||
} |
|||
}); |
|||
$('.oe_filter_label').click(function (e) { |
|||
$(this).toggleClass('enabled'); |
|||
self.do_search(); |
|||
}); |
|||
return result; |
|||
}, |
|||
search_filter: function(){ |
|||
var filter_domain = []; |
|||
var self = this; |
|||
_.each($('.oe_filter_label'), function(value) { |
|||
if ($(value).hasClass('enabled') && $(value).attr('id') && self.search_on) { |
|||
filter_domain.push("[('" + self.search_on + "', '=ilike', '" + $(value).attr('id').split('_')[1] + "%')]") |
|||
} |
|||
}); |
|||
if (filter_domain.length) { |
|||
var filter_or_domain = []; |
|||
for (i = 0; i < filter_domain.length-1; i++) { |
|||
filter_or_domain.push("['|']"); |
|||
} |
|||
return filter_or_domain.concat(filter_domain || []); |
|||
} |
|||
return false; |
|||
}, |
|||
build_search_data: function () { |
|||
var result = this._super(); |
|||
filter_domain = this.search_filter(); |
|||
if (filter_domain) |
|||
result['domains'] = filter_domain.concat(result.domains || []); |
|||
return result; |
|||
}, |
|||
}); |
|||
|
|||
instance.web.ViewManager.include({ |
|||
switch_mode: function(view_type, no_store, view_options) { |
|||
var view = this.views[view_type]; |
|||
var result = this._super(view_type, no_store, view_options); |
|||
if (this.searchview && this.active_view != "form") { |
|||
if ((view.controller.searchable === false || this.searchview.options.hidden) || this.active_view == "form"){ |
|||
$('.search_filter').live().hide(); |
|||
}else |
|||
$('.search_filter').show(); |
|||
} |
|||
else{ |
|||
$('.search_filter').live().hide(); |
|||
} |
|||
return result; |
|||
}, |
|||
}); |
|||
instance.web.FormView.include({ |
|||
load_defaults: function () { |
|||
if($('.search_filter')) |
|||
$('.search_filter').hide(); |
|||
return this._super(); |
|||
}, |
|||
}); |
|||
}; |
|||
|
|||
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|
@ -0,0 +1,49 @@ |
|||
<template> |
|||
<t t-name="field-selection"> |
|||
<t t-if="widget.fields_selection"> |
|||
<select id="field_name_selection"> |
|||
<t t-foreach="widget.fields_selection" t-as="record"> |
|||
<option t-att-value="record.id"><t t-esc="record.string"/></option> |
|||
</t> |
|||
</select> |
|||
</t> |
|||
</t> |
|||
|
|||
<t t-extend="ViewManagerAction"> |
|||
<t t-jquery=".oe_view_manager .oe_view_manager_header" t-operation="append"> |
|||
<table class="search_filter"> |
|||
<tr> |
|||
<th class="field_selection_column"/> |
|||
<th> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_a" title="A">A</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_b" title="B">B</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_c" title="C">C</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_d" title="D">D</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_e" title="E">E</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_f" title="F">F</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_g" title="G">G</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_h" title="H">H</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_i" title="I">I</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_j" title="J">J</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_k" title="K">K</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_l" title="L">L</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_m" title="M">M</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_n" title="N">N</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_o" title="O">O</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_p" title="P">P</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_q" title="Q">Q</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_r" title="R">R</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_s" title="S">S</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_t" title="T">T</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_u" title="U">U</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_v" title="V">V</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_w" title="W">W</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_x" title="X">X</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_y" title="Y">Y</button> |
|||
<button type="button" autofocus="autofocus" class="oe_filter_label" id="filter_z" title="Z">z</button> |
|||
</th> |
|||
</tr> |
|||
</table> |
|||
</t> |
|||
</t> |
|||
</template> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue