Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.49 KB | None | 0 0
  1. class ToDoItem {
  2. constructor (toDoItem, date, finalDate = undefined) {
  3. let _text = toDoItem;
  4. this.getText = function() {
  5. return _text;
  6. };
  7. //kontrollerar värdet med get, set.
  8. Object.defineProperty(this, 'text', {
  9. get: function() {
  10. return _text;
  11. },
  12. set: function(string) {
  13. if (typeof string !== 'string') {
  14. throw new TypeError('TypeError');
  15. } else if (!(string.length > 0 && string.length < 51)) {
  16. throw new Error('Error');
  17. }
  18. _text = string;
  19. },
  20. catch(e) {
  21. console.log(e);
  22. }
  23. });
  24. let _dueDate = new Date(date);
  25. this.getDueDate = function() {
  26. return _dueDate;
  27. };
  28. //kontrollerar värdet med get, set.
  29. Object.defineProperty(this, 'dueDate', {
  30. get: function() {
  31. return new Date(_dueDate);
  32. },
  33. set: function(getDate) {
  34. if (typeof getDate !== 'object' || getDate === null ||
  35. Array.isArray(getDate) === true || (Object.keys(getDate).length ===
  36. 0 && getDate.constructor === Object)) {
  37. throw new TypeError('TypeError');
  38. }
  39. _dueDate = new Date(getDate);
  40. },
  41. catch(e) {
  42. console.log(e);
  43. }
  44. });
  45. let _finishedDate = finalDate;
  46. if (typeof finalDate !== 'undefined') {
  47. _finishedDate = new Date(finalDate);
  48. }
  49.  
  50. this.getFinishedDate = function() {
  51. return _finishedDate;
  52. };
  53. //kontrollerar värdet med get, set.
  54. Object.defineProperty(this, 'finishedDate', {
  55. get: function() {
  56. return new Date(_finishedDate);
  57. },
  58. set: function(date) {
  59. if (typeof date !== 'object' || (Object.keys(date).length ===
  60. 0 && date.constructor === Object) && typeof date !== 'undefined') {
  61. throw new Error('typeError');
  62. }
  63. if (typeof date === 'undefined') {
  64. _finishedDate = undefined;
  65. } else {
  66. _finishedDate = new Date(date);
  67. }
  68. if (_finishedDate < _dueDate) {
  69. _isDone = true;
  70. _isOverdue = false;
  71. } else {
  72. _isDone = false;
  73. _isOverdue = true;
  74. }
  75. }
  76. });
  77. let _isDone = false;
  78. //read me
  79. Object.defineProperty(this, 'isDone', {
  80. get: function() {
  81. return _isDone;
  82. }
  83. });
  84. let _isOverdue = false;
  85. this.getOverdue = function() {
  86. return _isOverdue;
  87. };
  88. //read me
  89. Object.defineProperty(this, 'isOverdue', {
  90. get: function() {
  91. return _isOverdue;
  92. }
  93. });
  94. }
  95. //tar privata värden från funktionen som kallar och gör en ny objekt
  96. clone() {
  97. return new ToDoItem(this.getText(), new Date(this.getDueDate()),
  98. new Date(this.getFinishedDate()));
  99. }
  100. toJson() {
  101. // ??
  102. }
  103. //tar privata värden och sätter in i retur, konverterar det till en sträng
  104. toString() {
  105. if (this.getOverdue() === true) {
  106. return String('* ' + this.getText() + ' ' + this.getDueDate());
  107. } else if (this.getOverdue() === false) {
  108. return String(' ' + this.getText() + ' ' + this.getDueDate());
  109. }
  110. }
  111. }
  112.  
  113. ---------------------------------------------------------------------------------------------------
  114.  
  115. class ToDoList {
  116. constructor (name, color, toDoItems) {
  117. let _name = name;
  118. this.getName = function() {
  119. return _name;
  120. };
  121. //kontrollerar värdet med get, set.
  122. Object.defineProperty(this, 'name', {
  123. get: function() {
  124. return _name;
  125. },
  126. set: function(string) {
  127. if (typeof string !== 'string') {
  128. throw new TypeError('TypeError');
  129. } else if (!(string.length > 0 && string.length < 31)) {
  130. throw new Error('Error');
  131. }
  132. _name = string;
  133. },
  134. catch(e) {
  135. console.log(e);
  136. }
  137. });
  138. let _color = color || 'yellow';
  139. this.getColor = function() {
  140. return _color;
  141. };
  142. //kontrollerar värdet med get, set.
  143. Object.defineProperty(this, 'color', {
  144. get: function() {
  145. return _color;
  146. },
  147. set: function(string) {
  148. if (typeof string !== 'string') {
  149. throw new TypeError('TypeError');
  150. } else if (!(string.length > 0 && string.length < 21)) {
  151. throw new Error('Error');
  152. }
  153. _color = string;
  154. },
  155. catch(e) {
  156. console.log(e);
  157. }
  158. });
  159. let _toDoItems = [];
  160. _toDoItems.push(toDoItems);
  161. this.doItems = function() {
  162. return this.specificClone(_toDoItems);
  163. };
  164. //kontrollerar värdet med get, set.
  165. Object.defineProperty(this, 'toDoItem', {
  166. get: function() {
  167. return this.specificClone(toDoItems);
  168. },
  169. set: function(obj) {
  170. if (typeof obj !== 'object') {
  171. throw new TypeError('TypeError');
  172. }
  173. _toDoItems.push(this.specificClone(toDoItems));
  174. },
  175. catch(e) {
  176. console.log(e);
  177. }
  178. });
  179. let _hasOverdue;
  180. //read me
  181. Object.defineProperty(this, 'hasOverdue', {
  182. get: function() {
  183. return _hasOverdue;
  184. }
  185. });
  186. }
  187. specificClone(item) {
  188. let newClone = [];
  189. console.log(item);
  190. for (let turns = 0; turns < item.length; turns++) {
  191. var obj = item[turns].clone();
  192. newClone.push(obj);
  193. }
  194. return newClone;
  195. }
  196. //försökte lägga till privata värdet med variabeln från parametern, misslyckades lösas
  197. add(toDoItem) {
  198. this.toDoItem = toDoItem;
  199. }
  200. removeFinished() {
  201. // ??
  202. }
  203. //tar privata värden från funktionen som kallar och gör en ny objekt
  204. clone() {
  205. let newName = this.getName();
  206. let newColor = this.getColor();
  207. let newItems = this.doItems();
  208. return new ToDoList(newName, newColor, newItems);
  209. }
  210. toJson() {
  211. // ??
  212. }
  213. toString() {
  214. let index = this.doItems();
  215. for (let turns = 0; turns < index.length; turns++) {
  216. if (typeof index[turns].getFinishedDate() !== 'undefined') {
  217. return String(index[turns].getText() + ' ' + index[turns].getDueDate() +
  218. ' ' + index[turns].getFinishedDate());
  219. } else {
  220. return String(index[turns].getText() + ' ' + index[turns].getDueDate());
  221. }
  222. }
  223. }
  224. }
  225.  
  226. /**
  227. * Exports.
  228. */
  229. module.exports = ToDoList;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement