diff --git a/bin/controls/DiscountEdit.css b/bin/controls/DiscountEdit.css index 390bd718cf1c9df6bcda462491eead86344aacef..04e2408bb2a9381244849e1f56bffabca27c6423 100644 --- a/bin/controls/DiscountEdit.css +++ b/bin/controls/DiscountEdit.css @@ -18,4 +18,19 @@ .discount-edit-vat .field-container-item { line-height: 30px; padding: 0 0.75em; +} + +.quiqqer-discount-entry-edit-buttons { + float: left; + height: 40px; + width: 100%; +} + +.quiqqer-discount-entry-edit-buttons .qui-button-switch { + background: #ededed !important; + color: black; +} + +.quiqqer-discount-entry-edit-buttons .qui-button-switch:hover { + color: #6a6a6a; } \ No newline at end of file diff --git a/bin/controls/DiscountEdit.html b/bin/controls/DiscountEdit.html index e5f690e89259a5549228038115afe0c347479684..2f785019f082c9d1259b5328eb121c381ed03726 100644 --- a/bin/controls/DiscountEdit.html +++ b/bin/controls/DiscountEdit.html @@ -1,3 +1,7 @@ +<div class="quiqqer-discount-entry-edit-buttons"> + +</div> + <form> <table class="data-table data-table-flexbox"> <thead> diff --git a/bin/controls/DiscountEdit.js b/bin/controls/DiscountEdit.js index bd60e790c061901cdb7273ce6d34a85640b237b7..a019bded3a9d5feab60b8fc19c2a2ec44a7c87c5 100644 --- a/bin/controls/DiscountEdit.js +++ b/bin/controls/DiscountEdit.js @@ -11,6 +11,7 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ 'qui/QUI', 'qui/controls/Control', 'qui/controls/buttons/Button', + 'qui/controls/buttons/ButtonSwitch', 'qui/utils/Form', 'Locale', 'Mustache', @@ -20,7 +21,7 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ 'text!package/quiqqer/discount/bin/controls/DiscountEdit.html', 'css!package/quiqqer/discount/bin/controls/DiscountEdit.css' -], function (QUI, QUIControl, QUIButton, QUIFormUtils, QUILocale, +], function (QUI, QUIControl, QUIButton, QUIButtonSwitch, QUIFormUtils, QUILocale, Mustache, Discounts, Translation, template) { "use strict"; @@ -32,7 +33,8 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ Type : 'package/quiqqer/discount/bin/controls/DiscountEdit', Binds: [ - '$onInject' + '$onInject', + '$onActiveStatusChange' ], options: { @@ -42,6 +44,8 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ initialize: function (options) { this.parent(options); + this.$ActiveSwitch = null; + this.addEvents({ onInject: this.$onInject }); @@ -114,6 +118,14 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ opacity : 0 }); + this.$ActiveSwitch = new QUIButtonSwitch({ + status: false, + text : QUILocale.get(lg, 'control.edit.btn.active.status_off'), + events: { + onChange: this.$onActiveStatusChange + } + }).inject(this.$Elm.getElement('.quiqqer-discount-entry-edit-buttons')); + return this.$Elm; }, @@ -167,6 +179,11 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ 'html', '#' + self.getAttribute('discountId') ); + + if (parseInt(data.active)) { + self.$ActiveSwitch.setAttribute('text', QUILocale.get(lg, 'control.edit.btn.active.status_on')); + self.$ActiveSwitch.setSilentOn(); + } }).then(function () { return QUI.parse(self.$Elm); @@ -243,6 +260,40 @@ define('package/quiqqer/discount/bin/controls/DiscountEdit', [ }).catch(reject); }); + }, + + /** + * If active switch is triggered + */ + $onActiveStatusChange: function () { + this.$ActiveSwitch.disable(); + + let Promise; + const targetStatus = this.$ActiveSwitch.getStatus(); + + if (targetStatus) { + Promise = Discounts.activate(this.getAttribute('discountId')); + } else { + Promise = Discounts.deactivate(this.getAttribute('discountId')); + } + + Promise.then((activeStatus) => { + this.$ActiveSwitch.enable(); + + if (!!activeStatus !== !!targetStatus) { + return; + } + + this.fireEvent('activeStatusChange', [activeStatus, this]); + + if (activeStatus) { + this.$ActiveSwitch.setAttribute('text', QUILocale.get(lg, 'control.edit.btn.active.status_on')); + this.$ActiveSwitch.setSilentOn(); + } else { + this.$ActiveSwitch.setAttribute('text', QUILocale.get(lg, 'control.edit.btn.active.status_off')); + this.$ActiveSwitch.setSilentOff(); + } + }); } }); }); diff --git a/bin/controls/Discounts.js b/bin/controls/Discounts.js index b3016e45b3440b993583c0929ce02234584c5163..7611dcdeec344916f44bc0c08cc1d99f4f4785fc 100644 --- a/bin/controls/Discounts.js +++ b/bin/controls/Discounts.js @@ -396,9 +396,12 @@ define('package/quiqqer/discount/bin/controls/Discounts', [ var Discount = new DiscountEdit({ discountId: discountId, events : { - onLoaded: function () { + onLoaded : function () { self.Loader.hide(); resolve(); + }, + onActiveStatusChange: () => { + self.refresh(); } } }).inject(Sheet.getContent()); diff --git a/locale.xml b/locale.xml index 018d350895917a4b2de5370cbd2b069cf8159ffd..b4d386ac37e491a5f24400f304949712b637fb9c 100644 --- a/locale.xml +++ b/locale.xml @@ -315,6 +315,15 @@ <en><![CDATA[gross]]></en> </locale> + <locale name="control.edit.btn.active.status_on"> + <de><![CDATA[aktiv]]></de> + <en><![CDATA[active]]></en> + </locale> + <locale name="control.edit.btn.active.status_off"> + <de><![CDATA[inaktiv]]></de> + <en><![CDATA[inactive]]></en> + </locale> + <locale name="control.select.search.placeholder"> <de><![CDATA[Suche nach einem Rabatt ...]]></de> <en><![CDATA[Search for a discount ...]]></en>