From cd651ebda5d86457cb71ed4c50fe5e408c5b6b13 Mon Sep 17 00:00:00 2001 From: Riccardo Padovani Date: Wed, 25 Oct 2017 17:00:46 +0200 Subject: [PATCH] When creating a board, choose the less used color Fix issue #245 Signed-off-by: Riccardo Padovani --- js/controller/ListController.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/js/controller/ListController.js b/js/controller/ListController.js index 16ec5f598..8b9aea80e 100644 --- a/js/controller/ListController.js +++ b/js/controller/ListController.js @@ -23,6 +23,29 @@ /* global app angular */ app.controller('ListController', function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state) { + function calculateNewColor() { + var boards = BoardService.getAll(); + var boardKeys = Object.keys(boards); + var colorOccurrences = []; + + for (var i =0; i < boardKeys.length; i++) { + var key = boardKeys[i]; + var board = boards[key]; + + if (board && $scope.colors.indexOf(board.color) !== -1) { + colorOccurrences.push(board.color); + } + } + + colorOccurrences = colorOccurrences + .reduce(function (result, value) { + result[$scope.colors.indexOf(value)] = result[$scope.colors.indexOf(value)] + 1; + return result; + }, [0, 0, 0, 0, 0, 0]); + + return $scope.colors[colorOccurrences.indexOf(Math.min.apply(Math, colorOccurrences))]; + } + $scope.boards = []; $scope.newBoard = {}; $scope.status = { @@ -32,7 +55,7 @@ app.controller('ListController', function ($scope, $location, $filter, BoardServ }; $scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD']; $scope.boardservice = BoardService; - $scope.newBoard.color = $scope.colors[0]; + $scope.newBoard.color = calculateNewColor(); $scope.updatingBoard = null; // FIXME: not nice, but we want to load this only once @@ -90,7 +113,7 @@ app.controller('ListController', function ($scope, $location, $filter, BoardServ BoardService.create($scope.newBoard) .then(function (response) { $scope.newBoard = {}; - $scope.newBoard.color = $scope.colors[0]; + $scope.newBoard.color = calculateNewColor(); $scope.status.addBoard=false; $scope.filterData(); }, function(error) {