aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets/javascripts/services/notes.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/services/notes.js')
-rw-r--r--app/assets/javascripts/services/notes.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/app/assets/javascripts/services/notes.js b/app/assets/javascripts/services/notes.js
new file mode 100644
index 0000000..87b618b
--- /dev/null
+++ b/app/assets/javascripts/services/notes.js
@@ -0,0 +1,61 @@
+(function(angular) {
+ angular
+ .module('nt.NotesService', [
+ 'ngResource'
+ ])
+ .service('NotesService', [
+ '$resource',
+ function($resource) {
+ var Note = $resource('/notes/:id.json',
+ { id: '@id' },
+ {
+ update: {
+ method: 'PUT'
+ }
+ }
+ );
+
+ this.notes = null;
+ this.current_note = null;
+
+ this.fetch = function() {
+ this.notes = Note.query();
+
+ return this.notes.$promise;
+ };
+
+ this.open = function(note) {
+ this.current_note = note;
+ };
+
+ this.update = function() {
+ this.current_note.$update();
+ };
+
+ this.create = function(note_title) {
+ if (note_title) {
+ Note.save({
+ title: note_title,
+ body: ''
+ },
+ (response) => {
+ delete this.new_note_title;
+ this.show_create = false;
+ this.fetch().then(() => {
+ this.current_note = this.notes.find((el) => {
+ return el.id === response.id;
+ });
+ });
+ });
+ }
+ };
+
+ this.delete = function(note) {
+ this.notes.splice(this.notes.indexOf(note), 1);
+ note.$delete().then(() => {
+ this.current_note = null;
+ });
+ };
+ }
+ ]);
+})(window.angular);