Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

lupickertable.js 4.2KB

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