forked from SoftUni/JavaScript-Applications-2015
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontroller.js
More file actions
112 lines (96 loc) · 3.72 KB
/
controller.js
File metadata and controls
112 lines (96 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
var app = app || {};
app.controller = (function() {
function BaseController(data) {
this._data = data;
}
BaseController.prototype.loadHome = function(selector) {
$(selector).load('templates/home.html');
};
BaseController.prototype.loadLogin = function(selector) {
$(selector).load('templates/login.html');
};
BaseController.prototype.loadRegister = function(selector) {
$(selector).load('templates/register.html');
};
BaseController.prototype.loadBookmarks = function(selector) {
this._data.bookmarks.getAll()
.then(function(data) {
$.get('templates/bookmarks.html', function(template) {
var output = Mustache.render(template, data);
$(selector).html(output);
})
})
};
BaseController.prototype.atachEventHandlers = function() {
var selector = '#wrapper';
attachLoginHandler.call(this, selector);
attachRegisterHandler.call(this, selector);
attachCreateBookmarkHandler.call(this, selector);
attachDeleteBookmarkHandler.call(this, selector);
};
function attachLoginHandler(selector) {
var _this = this;
$(selector).on('click', '#login', function() {
var username = $('#username').val();
var password = $('#password').val();
_this._data.users.login(username, password)
.then(function(data) {
window.history.replaceState('Bookmarks', 'Bookmarks', '#/bookmarks');
}, function(error) {
});
})
}
function attachRegisterHandler(selector) {
var _this = this;
$(selector).on('click', '#register', function() {
var username = $('#username').val();
var password = $('#password').val();
_this._data.users.register(username, password)
.then(function(data) {
console.log(data);
}, function(error) {
});
})
}
function attachCreateBookmarkHandler(selector) {
var _this = this;
$(selector).on('click', '#create-bookmark', function() {
var title = $('#title').val();
var bookmark = {
title: title
};
_this._data.bookmarks.add(bookmark)
.then(function(data) {
_this._data.bookmarks.getById(data.objectId)
.then(function(bookmark) {
var li = $('<li>').append(bookmark.title);
$('#bookmarks ul').append(li);
$('#title').val('');
}, function(error) {
console.log(error);
});
}, function(error) {
console.log(error);
});
});
}
function attachDeleteBookmarkHandler(selector) {
var _this = this;
$(selector).on('click', '.delete-bookmark-btn', function(ev) {
var deleteConfirm = confirm('Do you want to delete this bookmark!');
//var li = $(ev.target).parent().children().first().textContent;
if(deleteConfirm) {
var objectId = $(this).parent().data('id');
_this._data.bookmarks.remove(objectId)
.then(function(data) {
$(ev.target).parent().remove();
});
}
})
}
return {
get: function(data) {
return new BaseController(data);
}
}
}());