diff --git a/bin/backend/controls/elements/TimeFilter.css b/bin/backend/controls/elements/TimeFilter.css index 61d3f29d7b42d7afce0199da5abd78176cd9fb59..414aaf1cfc750f5f0bcff21ab22306970f379ed7 100644 --- a/bin/backend/controls/elements/TimeFilter.css +++ b/bin/backend/controls/elements/TimeFilter.css @@ -1,3 +1,4 @@ +.timefilter-user-select, .timefilter-period-select { background: #FFFFFF; box-shadow: 0 0 6px rgba(0, 0, 0, 0.3); @@ -43,3 +44,43 @@ .timefilter-marked { border: 1px solid red; } + +/** user select + ================================== */ + +.timefilter-user-select { + display: flex; +} + +.timefilter-user-select-left { + border-right: 1px solid #DEDEDE; + height: 100%; + width: 160px; +} + +.timefilter-user-select-left-select { + border-left: 5px solid #fff; + clear: both; + cursor: pointer; + font-size: 12px; + padding: 10px; + width: 100%; +} + +.timefilter-user-select-left-select:hover { + background: #d1d4da; + border-left: 5px solid #d1d4da; +} + +.timefilter-user-select-left-select--active, +.timefilter-user-select-left-select--active:hover { + border-left: 5px solid #999; +} + +.timefilter-user-select-right { + width: calc(100% - 160px); +} + +.timefilter-user-select-right .dhx_cal_container { + box-shadow: none !important; +} diff --git a/bin/backend/controls/elements/TimeFilter.js b/bin/backend/controls/elements/TimeFilter.js index 88153d39f89be894f0cd9f03357a5f1df342364a..babbf406b986d61fe75ef726f3247f3e7880abc3 100644 --- a/bin/backend/controls/elements/TimeFilter.js +++ b/bin/backend/controls/elements/TimeFilter.js @@ -101,6 +101,7 @@ define('package/quiqqer/erp/bin/backend/controls/elements/TimeFilter', [ this.$Select.appendChild(QUILocale.get(lg, 'journal.timeFilter.halfYear'), 'half-year'); this.$Select.appendChild(QUILocale.get(lg, 'journal.timeFilter.year'), 'year'); this.$Select.appendChild(QUILocale.get(lg, 'journal.timeFilter.period'), 'period'); + this.$Select.appendChild(QUILocale.get(lg, 'journal.timeFilter.user'), 'user'); this.$Prev.inject(this.$Elm); this.$Select.inject(this.$Elm); @@ -238,6 +239,11 @@ define('package/quiqqer/erp/bin/backend/controls/elements/TimeFilter', [ return; } + if (this.$Select.getValue() === 'user') { + this.showUserSelect(); + return; + } + //this.$Current = new window.Date(); this.$To = null; @@ -692,6 +698,138 @@ define('package/quiqqer/erp/bin/backend/controls/elements/TimeFilter', [ } catch (e) { return window.Intl.DateTimeFormat('de-DE', options); } + }, + + showUserSelect: function () { + var self = this, + elmPosition = this.getElm().getPosition(), + elmSize = this.getElm().getSize(), + left = elmPosition.x + 32, + width = 440; + + var size = document.body.getSize(); + + if (size.y <= left + width) { + left = elmSize.x + elmPosition.x - width - 32; + } + + this.fireEvent('userSelectOpenBegin', [self]); + + if (!this.$Current) { + this.$Current = new window.Date(); + } + + if (!this.$To) { + this.$To = new window.Date(); + } + + var Container = new Element('div', { + tabindex: -1, + 'class' : 'timefilter-user-select', + html : '' + + '<div class="timefilter-user-select-left">' + + ' <div class="timefilter-user-select-left-select" data-value="today">' + + ' Heute' + + ' </div>' + + ' <div class="timefilter-user-select-left-select" data-value="yesterday">' + + ' Gestern' + + ' </div>' + + ' <div class="timefilter-user-select-left-select" data-value="month">' + + ' Aktueller Monat' + + ' </div>' + + ' <div class="timefilter-user-select-left-select" data-value="lastMonth">' + + ' Letzter Monat' + + ' </div>' + + '</div>' + + '<div class="timefilter-user-select-right"></div>', + styles : { + left : left, + top : elmPosition.y + 40, + width: width + }, + events : { + blur: function (event) { + self.fireEvent('userSelectClose', [self]); + + event.target.setStyle('display', 'none'); + event.target.destroy(); + } + } + }).inject(document.body); + + var selects = Container.getElements('.timefilter-user-select-left-select'); + + selects.addEvent('click', function (e) { + e.stop(); + + var Target = e.target; + + if (!Target.hasClass('timefilter-user-select-left-select')) { + Target = Target.getParent('.timefilter-user-select-left-select'); + } + + selects.removeClass('timefilter-user-select-left-select--active'); + Target.addClass('timefilter-user-select-left-select--active'); + }); + + + require(['package/quiqqer/calendar-controls/bin/Scheduler'], function (Scheduler) { + Scheduler.loadExtension('minical').then(function () { + var Handler = Scheduler.getScheduler(); + + var Ghost = new Element('div', { + html: '<div class="dhx_cal_navline">' + + '<div class="dhx_cal_date"></div>' + + '<div class="dhx_cal_tab" name="day_tab" style="right:76px;"></div>' + + '</div>' + + '<div class="dhx_cal_header"></div>' + + '<div class="dhx_cal_data"></div>' + }); + + Handler.config.xml_date = "%Y-%m-%d"; + Handler.init(Ghost, new window.Date(), "day"); + + var Calendar = Handler.renderCalendar({ + container : Container.getElement('.timefilter-user-select-right'), + date : new window.Date(), + navigation: true, + handler : function (date) { + + } + }); + + Container.getElement('[data-value="today"]').addEvent('click', function () { + Handler.updateCalendar(Calendar, new window.Date()); + Handler.markCalendar(Calendar, new window.Date(), 'dhx_calendar_click active'); + }); + + Container.getElement('[data-value="yesterday"]').addEvent('click', function () { + var D = new window.Date(); + D.setDate(D.getDate() - 1); + + Handler.updateCalendar(Calendar, new window.Date()); + Handler.markCalendar(Calendar, D, 'dhx_calendar_click active'); + }); + + Container.getElement('[data-value="month"]').addEvent('click', function () { + Handler.updateCalendar(Calendar, new window.Date()); + Handler.markCalendar(Calendar, new window.Date(), 'dhx_calendar_click active'); + }); + + Container.getElement('[data-value="lastMonth"]').addEvent('click', function () { + var D = new window.Date(); + D.setMonth(D.getMonth() - 1); + + Handler.updateCalendar(Calendar, D); + Handler.markCalendar(Calendar, D, 'dhx_calendar_click active'); + }); + + }); + }); + + Container.getElement('[data-value="today"]') + .addClass('timefilter-user-select-left-select--active'); + //Container.focus(); } }); }); diff --git a/locale.xml b/locale.xml index 9e8d7696e3240e50d5c5809147877d691409c8db..2dad2dd5565a4114b8f247b7fb02e744b6825d60 100644 --- a/locale.xml +++ b/locale.xml @@ -264,8 +264,10 @@ <en><![CDATA[Main manufacturer group]]></en> </locale> <locale name="settings.manufacturers.groupId.description"> - <de><![CDATA[Alle Benutzer in dieser Gruppe werden als Hersteller gelistet. Sofern das E-COYN Produkte-Modul installiert ist, zählen auch alle Gruppen des Produktfelds "Hersteller" dazu.]]></de> - <en><![CDATA[All users in this group are listed as manufacturers. If the E-COYN Products module is installed, all groups in the "Manufacturer" product field also count as manufacturers.]]></en> + <de> + <![CDATA[Alle Benutzer in dieser Gruppe werden als Hersteller gelistet. Sofern das E-COYN Produkte-Modul installiert ist, zählen auch alle Gruppen des Produktfelds "Hersteller" dazu.]]></de> + <en> + <![CDATA[All users in this group are listed as manufacturers. If the E-COYN Products module is installed, all groups in the "Manufacturer" product field also count as manufacturers.]]></en> </locale> <locale name="message.ajax.manufacturers.create.newManufacturer.success" html="true"> @@ -868,6 +870,10 @@ <de><![CDATA[Jahr ändern]]></de> <en><![CDATA[Change year]]></en> </locale> + <locale name="journal.timeFilter.user"> + <de><![CDATA[Benutzer definiert]]></de> + <en><![CDATA[User defined]]></en> + </locale> <locale name="quarter.1">