partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

commit baced71ddd75d38dcf9eaf0d2849c3119e31a5d3
parent d94412d8765f0232716fbd8a54990ad5ffe1ae26
Author: Timo A. Hummel <timo@netraver.de>
Date:   Mon,  6 Jun 2011 20:19:41 +0200

Added filter for the different stock levels

Diffstat:
Mfrontend/js/Components/Part/PartsGrid.js | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/de/RaumZeitLabor/PartDB2/Part/PartManager.php | 16+++++++++++++++-
Msrc/de/RaumZeitLabor/PartDB2/Part/PartService.php | 3++-
3 files changed, 111 insertions(+), 2 deletions(-)

diff --git a/frontend/js/Components/Part/PartsGrid.js b/frontend/js/Components/Part/PartsGrid.js @@ -15,6 +15,14 @@ Ext.define('PartDB2.PartsGrid', { scopeAllText: i18n("All subcategories"), scopeSelectedText: i18n('Only selected category'), + stockMode: "all", + stockModeAll: i18n("Any stock level"), + stockModeZero: i18n("Stock = 0"), + stockModeBelow: i18n("Stock less than minimum stock"), + stockModeAvailable: i18n("Stock > 0"), + + stockModes: [ "all", "nonzero", "zero", "below" ], + initComponent: function () { this.callParent(); @@ -37,7 +45,38 @@ Ext.define('PartDB2.PartsGrid', { } }); + this.stockModeButton = Ext.create("Ext.button.Split", { + text: this.stockModeAll, + handler: this.stockModeButtonHandler, + scope: this, + menu: { + items: [ + { + text: this.stockModeAll, + handler: this.stockModeAllHandler, + scope: this + }, + { + text: this.stockModeZero, + handler: this.stockModeZeroHandler, + scope: this + }, + { + text: this.stockModeBelow, + handler: this.stockModeBelowHandler, + scope: this + }, + { + text: this.stockModeAvailable, + handler: this.stockModeAvailableHandler, + scope: this + } + ] + } + }); + this.bottomToolbar.add(this.categoryScopeButton); + this.bottomToolbar.add(this.stockModeButton); this.setScopeMode("all"); }, categoryModeButtonHandler: function () { @@ -77,6 +116,61 @@ Ext.define('PartDB2.PartsGrid', { var proxy = this.store.getProxy(); proxy.extraParams.categoryScope = this.categoryScope; }, + stockModeAllHandler: function () { + this.setStockMode("all"); + this.store.load(); + }, + stockModeZeroHandler: function () { + this.setStockMode("zero"); + this.store.load(); + }, + stockModeBelowHandler: function () { + this.setStockMode("below"); + this.store.load(); + }, + stockModeAvailableHandler: function () { + this.setStockMode("nonzero"); + this.store.load(); + }, + stockModeButtonHandler: function () { + var idx = Ext.Array.indexOf(this.stockModes, this.stockMode); + + idx++; + + if (idx > (this.stockModes.length - 1)) { + idx = idx - this.stockModes.length; + } + + this.setStockMode(this.stockModes[idx]); + this.store.load(); + + }, + setStockMode: function (mode) { + if (!Ext.Array.contains(this.stockModes, mode)) { + window.alert("Invalid stock mode "+mode+" for setStockMode!"); + return; + } + + this.stockMode = mode; + + switch (this.stockMode) { + case "zero": + this.stockModeButton.setText(this.stockModeZero); + break; + case "nonzero": + this.stockModeButton.setText(this.stockModeAvailable); + break; + case "below": + this.stockModeButton.setText(this.stockModeBelow); + break; + case "all": + this.stockModeButton.setText(this.stockModeAll); + break; + } + + var proxy = this.store.getProxy(); + proxy.extraParams.stockMode = this.stockMode; + }, setCategory: function (category) { var proxy = this.store.getProxy(); diff --git a/src/de/RaumZeitLabor/PartDB2/Part/PartManager.php b/src/de/RaumZeitLabor/PartDB2/Part/PartManager.php @@ -24,7 +24,7 @@ use de\RaumZeitLabor\PartDB2\Util\Singleton, de\RaumZeitLabor\PartDB2\Footprint\Exceptions\FootprintNotFoundException; class PartManager extends Singleton { - public function getParts ($start = 0, $limit = 10, $sort = "name", $dir = "asc", $filter = "", $category = 0, $categoryScope = "all") { + public function getParts ($start = 0, $limit = 10, $sort = "name", $dir = "asc", $filter = "", $category = 0, $categoryScope = "all", $stockMode = "all") { $qb = PartDB2::getEM()->createQueryBuilder(); $qb->select("COUNT(p.id)")->from("de\RaumZeitLabor\PartDB2\Part\Part","p") @@ -68,6 +68,20 @@ class PartManager extends Singleton { } } + switch ($stockMode) { + case "all": + break; + case "zero": + $qb->andWhere("p.stockLevel = 0"); + break; + case "nonzero": + $qb->andWhere("p.stockLevel > 0"); + break; + case "below": + $qb->andWhere("p.stockLevel < p.minStockLevel"); + break; + } + $totalQuery = $qb->getQuery(); diff --git a/src/de/RaumZeitLabor/PartDB2/Part/PartService.php b/src/de/RaumZeitLabor/PartDB2/Part/PartService.php @@ -31,7 +31,8 @@ class PartService extends Service implements RestfulService { $this->getParameter("dir", $aSortParams["direction"]), $this->getParameter("query", ""), $this->getParameter("category", 0), - $this->getParameter("categoryScope", "all")); + $this->getParameter("categoryScope", "all"), + $this->getParameter("stockMode", "all")); } }