Prechádzať zdrojové kódy

added filter by Marka in DealsSales route

Piotr Labudda 10 rokov pred
rodič
commit
88157203e5
1 zmenil súbory, kde vykonal 50 pridanie a 6 odobranie
  1. 50 6
      SE/se-lib/Route/DealsSales.php

+ 50 - 6
SE/se-lib/Route/DealsSales.php

@@ -602,6 +602,7 @@ class Route_DealsSales extends RouteBase {
 			if (priv.options.initData.obrotyToMarki) _state.obrotyToMarki = priv.options.initData.obrotyToMarki;
 			if (priv.options.initData.months) _state.months = priv.options.initData.months;
 			if (priv.options.initData.years) _state.years = priv.options.initData.years;
+			if (priv.options.initData.fltrMarka) _state.fltrMarka = priv.options.initData.fltrMarka;
 		};
 
 		priv.initialRender = function () {
@@ -660,7 +661,14 @@ class Route_DealsSales extends RouteBase {
 				;
 				jsonLabels.push(parseInt(kYear));
 				$.each(_state.months, function(monthIdx, vMonth) {
-					if (undefined === vSalesByMonth[vMonth]) {
+					var isFilteredOutByMarka = false;
+					if (_state.fltrMarka) {
+						if (_state.fltrMarka != _state.obrotyToMarki[kYear][vMonth]) {
+							isFilteredOutByMarka = true;
+						}
+					}
+
+					if (undefined === vSalesByMonth[vMonth] || isFilteredOutByMarka) {
 						jsonYearData['' + kYear + '-' + vMonth] = 0;
 					} else {
 						jsonYearData['' + kYear + '-' + vMonth] = vSalesByMonth[vMonth];
@@ -732,7 +740,14 @@ class Route_DealsSales extends RouteBase {
 						byMonthDataValues = []
 				;
 				$.each(_state.obroty, function(kYear, vSalesByMonth) {
-					if (undefined === vSalesByMonth[vMonth]) {
+					var isFilteredOutByMarka = false;
+					if (_state.fltrMarka) {
+						if (_state.fltrMarka != _state.obrotyToMarki[kYear][vMonth]) {
+							isFilteredOutByMarka = true;
+						}
+					}
+
+					if (undefined === vSalesByMonth[vMonth] || isFilteredOutByMarka) {
 						jsonByMonthData['' + kYear + '-' + vMonth] = 0;
 					} else {
 						jsonByMonthData['' + kYear + '-' + vMonth] = vSalesByMonth[vMonth];
@@ -785,16 +800,38 @@ class Route_DealsSales extends RouteBase {
 		priv.renderHeaderMarki = function(record) {
 			var currentNode = _uiNode$Marki.children('tbody').children('tr'),
 					node = $('<tr></tr>'),
-					marki = _state.marki
+					marki = _state.marki,
+					th$ = $('<th><i class="glyphicon glyphicon-filter"></i> Marki:</th>').appendTo(node);
 			;
-			$('<th>Marki:</th>').appendTo(node);
+			if (_state.fltrMarka) {
+				rmFltrBtn = $('<i title="Pokaż wszystkie marki" class="glyphicon glyphicon-remove" style="cursor:pointer; color:red; opacity:0.4;"></i>');
+				rmFltrBtn.on('click', priv.removeFltrMarka);
+				rmFltrBtn.prependTo(th$);
+			}
 			$.each(_state.marki, function(markaLabel, markaClassName) {
-				var td$Node = $('<td><b>' + markaLabel + '</b></td>').appendTo(node);
+				var isFiltered = (_state.fltrMarka == markaLabel),
+						markaInput = '<input type="radio" title="Pokaż tylko markę ' + markaLabel + '" name="fltr_marka" value="' + markaLabel + '" ' + (isFiltered ? ' checked="checked"' : '') + '>',
+						td$Node = $('<td>' + markaInput + ' <b>' + markaLabel + '</b></td>').appendTo(node)
+				;
 				td$Node.addClass('cell_marka_' + markaClassName);
+				td$Node.on('click', 'input', priv.filterMarka);
 			});
 			currentNode.replaceWith(node);
 		};
 
+		priv.removeFltrMarka = function(e) {
+			_state.fltrMarka = null;
+			jQuery(_uiNodeCont).trigger('DealsSalesTable:render', ['body','marki','graphs']);
+		};
+
+		priv.filterMarka = function(e) {
+			var target$ = $(e.target),
+					isChecked = target$.is(':checked');
+			console.log('isChecked', isChecked, 'target$', target$, 'e', e);
+			_state.fltrMarka = (isChecked)? target$.val() : null;
+			jQuery(_uiNodeCont).trigger('DealsSalesTable:render', ['body','marki','graphs']);
+		};
+
 		priv.renderTableBody = function(record) {
 			var currentNode = _uiNode$Table.children('tbody'),
 					node = $('<tbody></tbody>'),
@@ -807,6 +844,13 @@ class Route_DealsSales extends RouteBase {
 				var suma = 0;
 				$.each(_state.months, function(monthsIdx, vMonth) {
 					var td$Node = $('<td></td>').appendTo(tr$Node);
+
+					if (_state.fltrMarka) {
+						if (_state.fltrMarka != _state.obrotyToMarki[vYearId][vMonth]) {
+							return;
+						}
+					}
+
 					td$Node.css({textAlign: 'right'});
 					var saleValue = parseFloat(vSalesByMonth[vMonth]);
 					//if (!vSalesByMonth.hasOwnProperty(vMonth)) {
@@ -1000,7 +1044,7 @@ class Route_DealsSales extends RouteBase {
 			}
 		};
 
-		priv.onRender = function(e) {
+		priv.onRender = function(e) {// jQuery(_uiNodeCont).trigger('DealsSalesTable:render', [...]);
 			if (priv.options.debug) console.log('onRender.arguments:', arguments.length, arguments, 'e:', e);
 			if (arguments.length > 1) {
 				for (var i=1; i<arguments.length; i++) {