From 244dd7c2c5c5d727b41fd222d79979b0a60354b6 Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Mon, 11 Apr 2016 13:29:26 +0200
Subject: [PATCH] =?UTF-8?q?discount=20bl=C3=A4tterfunktion?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ajax/list.php             | 49 +++++++++++++++++++++++++++++++++++++++
 bin/classes/Handler.js    | 14 +++++++++--
 bin/controls/Discounts.js | 22 +++++++++---------
 3 files changed, 72 insertions(+), 13 deletions(-)
 create mode 100644 ajax/list.php

diff --git a/ajax/list.php b/ajax/list.php
new file mode 100644
index 0000000..baa07df
--- /dev/null
+++ b/ajax/list.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file contains package_quiqqer_discount_ajax_list
+ */
+
+/**
+ * Returns discount list
+ *
+ * @param string $params - JSON query params
+ *
+ * @return array
+ */
+QUI::$Ajax->registerFunction(
+    'package_quiqqer_discount_ajax_list',
+    function ($params) {
+        $Grid      = new QUI\Utils\Grid();
+        $Discounts = new QUI\ERP\Discount\Handler();
+        $result    = array();
+        $Locale    = QUI::getLocale();
+
+        // search
+        $data = $Discounts->getChildrenData(
+            $Grid->parseDBParams(json_decode($params, true))
+        );
+
+        foreach ($data as $entry) {
+            $entry['title'] = array(
+                'quiqqer/discount',
+                'discount.' . $entry['id'] . '.title'
+            );
+
+            $entry['text'] = $Locale->get(
+                'quiqqer/discount',
+                'discount.' . $entry['id'] . '.title'
+            );
+
+            $result[] = $entry;
+        }
+
+        usort($result, function ($a, $b) {
+            return $a['text'] > $b['text'];
+        });
+
+        return $Grid->parseResult($result, $Discounts->countChildren());
+    },
+    array('params'),
+    'Permission::checkAdminUser'
+);
diff --git a/bin/classes/Handler.js b/bin/classes/Handler.js
index 4a9bf7b..d4749c1 100644
--- a/bin/classes/Handler.js
+++ b/bin/classes/Handler.js
@@ -60,11 +60,21 @@ define('package/quiqqer/discount/bin/classes/Handler', [
         },
 
         /**
+         * Return a discount list for a grid
          *
+         * @params {Object} params - grid params
          * @returns {Promise}
          */
-        getList: function () {
-            return this.search();
+        getList: function (params) {
+            params = params || {};
+
+            return new Promise(function (resolve, reject) {
+                Ajax.get('package_quiqqer_discount_ajax_list', resolve, {
+                    'package': 'quiqqer/discount',
+                    onError  : reject,
+                    params   : JSON.encode(params)
+                });
+            });
         },
 
         /**
diff --git a/bin/controls/Discounts.js b/bin/controls/Discounts.js
index ef2cfb6..7ad3305 100644
--- a/bin/controls/Discounts.js
+++ b/bin/controls/Discounts.js
@@ -123,6 +123,7 @@ define('package/quiqqer/discount/bin/controls/Discounts', [
 
             this.$Grid = new Grid(Container, {
                 multipleSelection: true,
+                pagination       : true,
                 columnModel      : [{
                     header   : QUILocale.get('quiqqer/system', 'id'),
                     dataIndex: 'id',
@@ -249,13 +250,15 @@ define('package/quiqqer/discount/bin/controls/Discounts', [
             this.getButtons('edit').disable();
             this.parent();
 
-            return Discounts.getList().then(function (data) {
-                var i, len, active, entry,
-                    gridData = [];
+            return Discounts.getList({
+                perPage: this.$Grid.options.perPage,
+                page   : this.$Grid.options.page
+            }).then(function (result) {
+                var i, len, active, entry;
 
-                for (i = 0, len = data.length; i < len; i++) {
-                    entry  = data[i];
-                    active = parseInt(data[i].active);
+                for (i = 0, len = result.data.length; i < len; i++) {
+                    entry  = result.data[i];
+                    active = parseInt(result.data[i].active);
 
                     if (active) {
                         entry.status = {
@@ -281,13 +284,10 @@ define('package/quiqqer/discount/bin/controls/Discounts', [
                         };
                     }
 
-                    gridData.push(entry);
+                    result.data[i] = entry;
                 }
 
-                self.$Grid.setData({
-                    data: gridData
-                });
-
+                self.$Grid.setData(result);
                 self.Loader.hide();
             });
         },
-- 
GitLab