Browse Source

Add pos_fix_search_limit module

pull/412/head
hparfr 7 years ago
committed by Wolfgang Pichler
parent
commit
b58b3ab666
  1. 77
      pos_fix_search_limit/README.rst
  2. 0
      pos_fix_search_limit/__init__.py
  3. 19
      pos_fix_search_limit/__manifest__.py
  4. 49
      pos_fix_search_limit/static/src/js/pos_fix_search_limit.js
  5. 11
      pos_fix_search_limit/views/pos_fix_limit.xml

77
pos_fix_search_limit/README.rst

@ -0,0 +1,77 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: https://www.gnu.org/licenses/agpl
:alt: License: AGPL-3
====================
Pos Fix Search Limit
====================
This module makes the distinction between the limit of search results
and the limit of product displayed.
Without this module, if you have many products, all the searches are limited
to 100 firsts results.
This module increase the limit of search results to a high number
and keep the number of product displayed to 100.
Usage
=====
This module is a dependecy of other modules like pos_product_template.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/184/10.0
Known issues / Roadmap
======================
* Display a last element like "More products" to let the user know his search has been truncated.
* Truncate the list of partners with the display limit.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/{project_repo}/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smash it by providing detailed and welcomed feedback.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://odoo-community.org/logo.png>`_.
Contributors
------------
* Raphaël Reverdy <raphael.reverdy@akretion.com> (https://www.akretion.com)
Do not contact contributors directly about support or help with technical issues.
Funders
-------
The development of this module has been financially supported by:
* Akretion
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

0
pos_fix_search_limit/__init__.py

19
pos_fix_search_limit/__manifest__.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Copyright 2018 Akretion
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Pos Fix Search Limit",
"summary": "Increase search in the PoS",
"version": "10.0.1.0.0",
"category": "Point of Sale",
"author": "Akretion, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"point_of_sale",
],
"data": [
"views/pos_fix_limit.xml",
]
}

49
pos_fix_search_limit/static/src/js/pos_fix_search_limit.js

@ -0,0 +1,49 @@
/* Copyright 2018 Akretion - Raphaël Reverdy
License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). */
odoo.define("pos_fix_search_limit.db", function (require) {
"use strict";
var PosDB = require("point_of_sale.DB");
PosDB.include({
limit: 314159265, // the maximum number of results returned by a search
});
});
odoo.define('pos_fix_search_limit.product_list', function(require) {
"use strict";
var screens = require('point_of_sale.screens');
var core = require('web.core');
var qweb = core.qweb;
screens.ProductListWidget.include({
displayLimit: 100, //number of elements displayed
renderElement: function() {
//Limit the number of elements to displayLimit (instead of db.limit)
// (db.limit has been increased to return more results)
// (but we still want to limit the display)
//And make use of document fragment, because better perfs
var self = this;
var i = 0;
var len = Math.min(this.product_list.length, this.displayLimit);
var frag = document.createDocumentFragment();
var product_node = null;
var el_str = qweb.render(this.template, {widget: this});
var el_node = document.createElement('div');
el_node.innerHTML = el_str;
el_node = el_node.childNodes[1];
if(this.el && this.el.parentNode){
this.el.parentNode.replaceChild(el_node,this.el);
}
this.el = el_node;
var list_container = el_node.querySelector('.product-list');
for(i=0; i < len; i++){
product_node = this.render_product(this.product_list[i]);
product_node.addEventListener('click',this.click_product_handler);
frag.appendChild(product_node);
}
list_container.appendChild(frag);
}
});
});

11
pos_fix_search_limit/views/pos_fix_limit.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets" name="pos_fix_search_limit assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/pos_fix_search_limit/static/src/js/pos_fix_search_limit.js"></script>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save