/** * Created by robin on 11/6/15. */ angular.module('luticateUtils') .directive('luPickerTable', [ function() { return { restrict: 'E', scope: { options: '&' }, templateUrl: "/luticate/lupickertable.html", link: function ($scope, element, attrs) { $scope.pickerOptions = $scope.options(); $scope.pickerOptions.luPickerTableScope = $scope; if ($scope.pickerOptions.pickedItems == null) { $scope.pickerOptions.pickedItems = []; } var onItemClicked = $scope.pickerOptions.onItemClicked; $scope.pickerOptions.onItemClicked = function(item) { if (onItemClicked != null) { onItemClicked(item); } $scope.pickerOptions.luBasicTableScope.toggleCheckedItem(item); }; var onItemChecked = $scope.pickerOptions.onItemChecked; $scope.pickerOptions.onItemChecked = function(item, checked) { if (onItemChecked != null) { onItemChecked(item, checked); } var id = $scope.pickerOptions.getItemId(item); var it = $scope.pickerOptions.pickedItems.find(function(item) { return $scope.pickerOptions.getItemId(item) == id; }); var idx = $scope.pickerOptions.pickedItems.indexOf(it); if (idx > -1) { if (!checked) { $scope.pickerOptions.pickedItems.splice(idx, 1); } } else { if (checked) { $scope.pickerOptions.pickedItems.push(item); } } }; var onPageChanged = $scope.pickerOptions.onPageChanged; $scope.pickerOptions.onPageChanged = function() { if (onPageChanged != null) { onPageChanged(); } for (var i = 0; i < $scope.pickerOptions.pickedItems.length; ++i) { var ii = $scope.pickerOptions.pickedItems[i]; var iiId = $scope.pickerOptions.getItemId(ii); for (var j = 0; j < $scope.pickerOptions.luBasicTableScope.items.Data.length; ++j) { var ij = $scope.pickerOptions.luBasicTableScope.items.Data[j]; if (iiId == $scope.pickerOptions.getItemId(ij)) { $scope.pickerOptions.checkedItems.push(iiId); } } } }; $scope.pickerOptions.canCheck = function() { return true; }; $scope.pickerOptions.canClick = function() { return true; }; $scope.unPickItem = function(item) { var id = $scope.pickerOptions.getItemId(item); if ($scope.pickerOptions.checkedItems.find(function(it) { return it == id; }) != null) { $scope.pickerOptions.luBasicTableScope.toggleCheckedId(id, item); } else { $scope.pickerOptions.onItemChecked(item, false); } } } }; } ]); angular.module('luticateUtils').run(['$templateCache', function($templateCache) { $templateCache.put('/luticate/lupickertable.html', '
' + 'Selected items:' + '
' + '{{ pickerOptions.getItemText(item) }}' + '
' + '
' + ''); }]);