Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.99 KB | None | 0 0
  1. $(() => {
  2.  
  3. //App constants
  4. const baseUrl = "https://baas.kinvey.com/";
  5. const appKey = "kid_HkexmJALb";
  6. const appSecret = "cb9ec67d89fb4796a8a722e43604fa3a";
  7.  
  8. setGreeting();
  9. $('#linkHome').click(() => showView('home'));
  10. $('#linkLogin').click(() => showView('login'));
  11. $('#linkRegister').click(() => showView('register'));
  12. $('#linkBooks').click(() => showView('books'));
  13. $('#linkCreate').click(() => showView('create'));
  14. $('#linkLogout').click(logout);
  15.  
  16.  
  17. $('#viewLogin').find('form').submit(login);
  18. $('#viewRegister').find('form').submit(register);
  19. $('#viewCreate').find('form').submit(createBook);
  20.  
  21. $(document).on({
  22. ajaxStart: () => $('#loadingBox').show(),
  23. ajaxStop: () => $('#loadingBox').hide()
  24. });
  25.  
  26. $('#infoBox').click((event) => $(event.target).hide()); // при клик да ни изчезва
  27. $('#errorBox').click((event) => $(event.target).hide());
  28.  
  29. function showInfo(message) {
  30. $('#infoBox').text(message);
  31. $('#infoBox').show();
  32. setTimeout(() => $('#infoBox').fadeOut(), 3000);
  33. }
  34.  
  35. function showError(message) {
  36. $('#errorBox').text(message);
  37. $('#errorBox').show();
  38. }
  39.  
  40. function handleError(reason) {
  41. showError(reason.responseJSON.description);
  42. }
  43.  
  44. function showView(name) {
  45. $('section').hide();
  46.  
  47. switch (name) {
  48. case 'home':
  49. $('#viewHome').show();
  50. break;
  51. case 'login':
  52. $('#viewLogin').show();
  53. break;
  54. case 'register':
  55. $('#viewRegister').show();
  56. break;
  57. case 'books':
  58. getBooks();
  59. $('#viewBooks').show();
  60. break;
  61. case 'create':
  62. $('#viewCreate').show();
  63. break;
  64. case 'logout':
  65. $('#viewLogout').show();
  66. break;
  67. }
  68. }
  69.  
  70. function setGreeting() {
  71. let username = localStorage.getItem('username');
  72. if (username !== null) {
  73. $('#loggedInUser').text(`Welcome, ${username}!`);
  74. $('#linkLogin').hide();
  75. $('#linkRegister').hide();
  76. $('#linkBooks').show();
  77. $('#linkCreate').show();
  78. $('#linkLogout').show();
  79. } else {
  80. $('#loggedInUser').text(``);
  81. $('#linkLogin').show();
  82. $('#linkRegister').show();
  83. $('#linkBooks').hide();
  84. $('#linkCreate').hide();
  85. $('#linkLogout').hide();
  86. }
  87. }
  88.  
  89. function setStorage(data) {
  90. localStorage.setItem('authtoken', data._kmd.authtoken); //data._kmd.authtoken = token
  91. localStorage.setItem('username', data.username); //data.username = username
  92. localStorage.setItem('userId', data._id);
  93. $('#loggedInUser').text(`Welcome, ${data.username}!`);
  94. setGreeting();
  95. showView('books');
  96.  
  97. }
  98.  
  99. function login(e) {
  100. e.preventDefault();
  101. let username = $('#inputUsername').val();
  102. let password = $('#inputPassword').val();
  103.  
  104. let req = {
  105. url: baseUrl + 'user/' + appKey + '/login',
  106. method: 'POST',
  107. headers: {
  108. 'Authorization': 'Basic ' + btoa(appKey + ":" + appSecret),
  109. 'Content-Type': 'application/json'
  110. },
  111. data: JSON.stringify({
  112. username: username,
  113. password: password
  114. }),
  115. success: (data) => {
  116. showInfo("Login successful");
  117. setStorage(data);
  118. },
  119. error: handleError
  120. };
  121.  
  122. $.ajax(req);
  123.  
  124. // function loginSuccess(data) {
  125. // localStorage.setItem('authtoken', data._kmd.authtoken);
  126. // localStorage.setItem('username', data.username);
  127. // showView('books');
  128. // }
  129. }
  130.  
  131. function register(e) {
  132. e.preventDefault();
  133. let username = $('#inputNewUsername').val();
  134. let password = $('#inputNewPassword').val();
  135. let repeat = $('#inputNewPassRepeat').val();
  136.  
  137. if(username.length === 0){
  138. showError("Username cannot be empty!");
  139. return;
  140. }
  141.  
  142. if(password.length === 0){
  143. showError("Password cannot be empty!");
  144. return;
  145. }
  146.  
  147. if (password !== repeat) {
  148. showError("Passwords don't match");
  149. return;
  150. }
  151.  
  152. let req = {
  153. url: baseUrl + 'user/' + appKey,
  154. method: 'POST',
  155. headers: {
  156. 'Authorization': 'Basic ' + btoa(appKey + ":" + appSecret),
  157. 'Content-Type': 'application/json'
  158. },
  159. data: JSON.stringify({
  160. username: username,
  161. password: password
  162. }),
  163. success: (data) => {
  164. showInfo("Register successful");
  165. setStorage(data);
  166. },
  167. error: handleError
  168. };
  169.  
  170. $.ajax(req);
  171.  
  172. // function registerSuccess(data) {
  173. // localStorage.setItem('authtoken', data._kmd.authtoken);
  174. // localStorage.setItem('username', data.username);
  175. // showView('books');
  176. // }
  177. }
  178.  
  179. function logout() {
  180. let req = {
  181. url: baseUrl + 'user/' + appKey + '/_logout',
  182. method: 'POST',
  183. headers: {
  184. 'Authorization': 'Kinvey ' + localStorage.getItem('authtoken')
  185. },
  186. success: (data) => {
  187. showInfo("Logout successful");
  188. logoutSuccess(data);
  189. },
  190. error: handleError
  191. };
  192.  
  193. $.ajax(req);
  194.  
  195. function logoutSuccess(data) {
  196. localStorage.clear();
  197. setGreeting();
  198. showView('home');
  199. }
  200. }
  201.  
  202. //Catalog
  203. function getBooks() {
  204. let req = {
  205. url: baseUrl + 'appdata/' + appKey + '/books',
  206. headers: {
  207. 'Authorization': 'Kinvey ' + localStorage.getItem('authtoken'),
  208.  
  209. },
  210. success: displayBooks,
  211. error: handleError
  212. };
  213.  
  214. $.ajax(req);
  215.  
  216. function displayBooks(data) {
  217. let tbody = $('#viewBooks').find('table').find('tbody');
  218. tbody.empty();
  219. for(book of data){
  220. let actions = '';
  221. if(book._acl.creator === localStorage.getItem('userId')){
  222. actions = `<a href="#">[Edit]</a><a href="#">[Delete]</a>`
  223. }
  224.  
  225. let row = $('<tr>');
  226. row.append(`<td>${book.title}</td>`);
  227. row.append(`<td>${book.author}</td>`);
  228. row.append(`<td>${book.description}</td>`);
  229. row.append(`<td>${actions}</td>`);
  230. row.appendTo(tbody);
  231. }
  232. }
  233. }
  234.  
  235. function createBook() {
  236. let title = $('#inputNewTitle').val();
  237. let author = $('#inputNewAuthor').val();
  238. let description = $('#inputNewDescription').val();
  239.  
  240.  
  241. if(title.length === 0){
  242. showError("Title cannot be empty!");
  243. return;
  244. }
  245.  
  246. if(author.length === 0){
  247. showError("Author cannot be empty!");
  248. return;
  249. }
  250.  
  251. let req = {
  252. url: baseUrl + 'appdata/' + appKey + '/books',
  253. method: 'POST',
  254. headers: {
  255. 'Authorization': 'Kinvey ' + localStorage.getItem('authtoken')
  256. },
  257. data: JSON.stringify({
  258. title,
  259. author,
  260. description
  261. }),
  262. success: createSuccess,
  263. error: handleError
  264. };
  265. $.ajax(req);
  266.  
  267. function createSuccess(data) {
  268. console.log(data);
  269. }
  270. }
  271.  
  272. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement