You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lupickertable.js 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /**
  2. * Created by robin on 11/6/15.
  3. */
  4. angular.module('luticateUtils')
  5. .directive('luPickerTable', [
  6. function() {
  7. return {
  8. restrict: 'E',
  9. scope: {
  10. options: '&'
  11. },
  12. templateUrl: "/luticate/lupickertable.html",
  13. link: function ($scope, element, attrs) {
  14. $scope.pickerOptions = $scope.options();
  15. $scope.pickerOptions.luPickerTableScope = $scope;
  16. if ($scope.pickerOptions.pickedItems == null) {
  17. $scope.pickerOptions.pickedItems = [];
  18. }
  19. var onItemClicked = $scope.pickerOptions.onItemClicked;
  20. $scope.pickerOptions.onItemClicked = function(item)
  21. {
  22. if (onItemClicked != null) {
  23. onItemClicked(item);
  24. }
  25. $scope.pickerOptions.luBasicTableScope.toggleCheckedItem(item);
  26. };
  27. var onItemChecked = $scope.pickerOptions.onItemChecked;
  28. $scope.pickerOptions.onItemChecked = function(item, checked)
  29. {
  30. if (onItemChecked != null) {
  31. onItemChecked(item, checked);
  32. }
  33. var id = $scope.pickerOptions.getItemId(item);
  34. var it = $scope.pickerOptions.pickedItems.find(function(item)
  35. {
  36. return $scope.pickerOptions.getItemId(item) == id;
  37. });
  38. var idx = $scope.pickerOptions.pickedItems.indexOf(it);
  39. if (idx > -1) {
  40. if (!checked) {
  41. $scope.pickerOptions.pickedItems.splice(idx, 1);
  42. }
  43. }
  44. else {
  45. if (checked) {
  46. $scope.pickerOptions.pickedItems.push(item);
  47. }
  48. }
  49. };
  50. var onPageChanged = $scope.pickerOptions.onPageChanged;
  51. $scope.pickerOptions.onPageChanged = function()
  52. {
  53. if (onPageChanged != null) {
  54. onPageChanged();
  55. }
  56. for (var i = 0; i < $scope.pickerOptions.pickedItems.length; ++i) {
  57. var ii = $scope.pickerOptions.pickedItems[i];
  58. var iiId = $scope.pickerOptions.getItemId(ii);
  59. for (var j = 0; j < $scope.pickerOptions.luBasicTableScope.items.Data.length; ++j) {
  60. var ij = $scope.pickerOptions.luBasicTableScope.items.Data[j];
  61. if (iiId == $scope.pickerOptions.getItemId(ij)) {
  62. $scope.pickerOptions.checkedItems.push(iiId);
  63. }
  64. }
  65. }
  66. };
  67. $scope.pickerOptions.canCheck = function()
  68. {
  69. return true;
  70. };
  71. $scope.pickerOptions.canClick = function()
  72. {
  73. return true;
  74. };
  75. $scope.unPickItem = function(item)
  76. {
  77. var id = $scope.pickerOptions.getItemId(item);
  78. if ($scope.pickerOptions.checkedItems.find(function(it)
  79. {
  80. return it == id;
  81. }) != null) {
  82. $scope.pickerOptions.luBasicTableScope.toggleCheckedId(id, item);
  83. }
  84. else {
  85. $scope.pickerOptions.onItemChecked(item, false);
  86. }
  87. }
  88. }
  89. };
  90. }
  91. ]);
  92. angular.module('luticateUtils').run(['$templateCache', function($templateCache)
  93. {
  94. $templateCache.put('/luticate/lupickertable.html',
  95. '<div class="col-sm-3">' +
  96. 'Selected items:' +
  97. '<div ng-repeat="item in pickerOptions.pickedItems" ng-click="unPickItem(item)"' +
  98. 'class="col-sm-12 lu-picker-table-picked-items">' +
  99. '{{ pickerOptions.getItemText(item) }}' +
  100. '</div>' +
  101. '</div>' +
  102. '<lu-basic-table options="pickerOptions" class="col-sm-9"></lu-basic-table>');
  103. }]);