Show:
  1. import Ember from "ember";
  2. import ArrayModifier from "./ArrayModifier";
  3. /**
  4. * Class to sort elements in the array.
  5. *
  6. * @class ArrayModifier.ArraySortModifier
  7. * @extends ArrayModifier.ArrayModifier
  8. * @module ember-array-modifier
  9. * @submodule ember-array-modifier-types
  10. */
  11. export default ArrayModifier.extend({
  12. type : "sort",
  13. groupType : "sort",
  14. /**
  15. * Order to sort by. true for ascending, false for descending
  16. *
  17. * @property order
  18. * @type String
  19. * @default true
  20. */
  21. order : true,
  22. /**
  23. * Set to true if a listener on all objects in the array should be added.
  24. *
  25. * @property addObserverToAll
  26. * @type Boolean
  27. * @default false
  28. */
  29. addObserverToAll : false,
  30. /**
  31. * Method called to modify an entire array.
  32. *
  33. * @method modify
  34. * @param {Array} array The array to modify.
  35. */
  36. modify : function(array) {
  37. console.log("Sorting!!");
  38. array.sortBy(this.get("property"));
  39. if(!this.get("order")) {
  40. array.reverseObjects();
  41. }
  42. return array;
  43. },
  44. /**
  45. * Function called when observers are supposed to be added.
  46. *
  47. * @method addModifierObservers
  48. * @param {Class} context Context to add the observer to.
  49. * @param {String|Function} method Method to be called when observer is called.
  50. */
  51. addModifierObservers : function(context, method) {
  52. this._super(context, method);
  53. Ember.addObserver(this, "order", context, method);
  54. },
  55. /**
  56. * Function called when observers are supposed to be removed.
  57. *
  58. * @method removeModifierObservers
  59. * @param {Class} context Context to add the observer to.
  60. * @param {String|Function} method Method to be called when observer is called.
  61. */
  62. removeModifierObservers : function(context, method) {
  63. this._super(context, method);
  64. Ember.removeObserver(this, "order", context, method);
  65. },
  66. });