Guest User

Untitled

a guest
Aug 20th, 2017
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.69 KB | None | 0 0
  1. $(()=>{
  2. let baseUsersUrl = "https://baas.kinvey.com/user/kid_BJk5Bg8db";
  3. let baseDataUrl = "https://baas.kinvey.com/appdata/kid_BJk5Bg8db";
  4. let app_key = "kid_BJk5Bg8db";
  5. let app_secret = "500d08f97c3c4d8aa96418d1de21bcd9";
  6. setGreeting();
  7. $('#linkLogout').on('click',logOut);
  8. let regBtn = $('#viewRegister input[value="Register"]');
  9. let loginBtn = $('#viewLogin input[value="Login"]');
  10. let createBtn = $(' #viewCreateAd input[value="Create"]');
  11. createBtn.on('click', createAdd)
  12. loginBtn.on('click', logIn);
  13. regBtn.on('click', registerUser);
  14. console.log($('main'));
  15. const app = Sammy('main', function () {
  16. this.use('Handlebars')
  17. this.get('#/Home', function(){
  18. hideSections();
  19. $('#viewHome').show('slow')
  20. });
  21. this.get('#/Login', function(){
  22. hideSections();
  23. $('#viewLogin').show('slow')
  24. });
  25. this.get('#/Register', function(){
  26. hideSections();
  27. $('#viewRegister').show('slow')
  28. });
  29. this.get('#/Delete', function(){
  30. hideSections();
  31. deletePost();
  32. $('#viewHome').show('slow')
  33. });
  34. this.get('#/Ads', function(){
  35. hideSections();
  36. $('#viewAds').show('slow')
  37. });
  38. this.get('#/Create', function(){
  39. hideSections();
  40. $('#viewCreateAd').show('slow')
  41. });
  42. this.get('#/Details', function(){
  43. hideSections();
  44. $('#viewCreateAd').show('slow')
  45. });
  46. this.get('#/Edit', function(){
  47. hideSections();
  48. $('#viewEditAd').show('slow')
  49. });
  50. }).run();
  51. function hideSections(){
  52. $('section').hide();
  53. }
  54. //user stuff
  55. function logIn(e){
  56. e.preventDefault();
  57. let password = $('#viewLogin input[name="passwd"]');
  58. let username = $('#viewLogin input[name="username"]');
  59. let obj = {
  60. url:baseUsersUrl+"/login",
  61. method:"POST",
  62. headers:{
  63. "Authorization":`Basic ${btoa(app_key +":" +app_secret)}:`,
  64. "Content-Type":'application/json',
  65. },
  66. data:JSON.stringify({
  67. username:username.val(),
  68. password:password.val(),
  69. }),
  70. success:function(res){
  71. location.hash="#/Ads"
  72. setUsernameAndAuth(res);
  73. infoBoxShow('Successfully logged in');
  74. },
  75. error:function(err){
  76. errorBoxShow(err.statusText)
  77. }
  78. };
  79.  
  80. $.ajax(obj);
  81. password.val('');
  82. username.val('');
  83. }
  84. function registerUser(e){
  85. let username = $('#viewRegister input[name="username"]');
  86. let password = $('#viewRegister input[name="passwd"]');
  87. let passwordRep = $('#viewRegister input[name="passwdRep"]');
  88. e.preventDefault()
  89. if(password.val()!==passwordRep.val()){
  90. errorBoxShow("Passwords do not match");
  91. }
  92. else {
  93. let obj = {
  94. url:baseUsersUrl,
  95. method:"POST",
  96. headers:{
  97. "Authorization":`Basic ${btoa(app_key +":" +app_secret)}:`,
  98. "Content-Type":'application/json',
  99. },
  100. data:JSON.stringify({
  101. username:username.val(),
  102. password:password.val(),
  103. adverts:""
  104. }),
  105. success:function(res){
  106. setUsernameAndAuth(res);
  107. infoBoxShow('Success');
  108. console.log()
  109. },
  110. error:function(err){
  111. errorBoxShow(err.statusText)
  112. }
  113. }
  114. $.ajax(obj)
  115. }
  116. password.val('');
  117. passwordRep.val('');
  118. username.val('');
  119. }
  120. function logOut(){
  121. let obj = {
  122. url:baseUsersUrl+"/_logout",
  123. method:"POST",
  124. headers:{
  125. "Authorization":`Kinvey ${sessionStorage.getItem("authtoken")}`,
  126. "X-Kinvey-Api-Version":'1',
  127. },
  128. success:function(){
  129. hideSections();
  130. $('#loggedInUser').text("");
  131. sessionStorage.clear();
  132. setGreeting();
  133. location.hash = "#/Home";
  134. infoBoxShow('Successfully logged out')
  135. },
  136. error:function(err){
  137. errorBoxShow(err.statusText)
  138. }
  139. }
  140. $.ajax(obj)
  141. }
  142. function setUsernameAndAuth(res){
  143. console.log(res)
  144. sessionStorage
  145. .setItem('authtoken', res._kmd.authtoken);
  146. sessionStorage
  147. .setItem('username', res.username);
  148. sessionStorage
  149. .setItem('id', res._id);
  150. setGreeting();
  151. }
  152. function setGreeting() {
  153. if (sessionStorage.getItem("username")) {
  154. $('#ads tr').has("td").remove();
  155. // console.log($('#viewBooks table'));
  156. listAds();
  157. $('#loggedInUser').text("Greetings, " + sessionStorage.getItem("username")).show();
  158. $('#linkLogout').show();
  159. $('#linkLogin').hide();
  160. $('#linkRegister').hide();
  161. $('#linkListAds').show();
  162. $('#linkCreateAd').show();
  163. $('#linkCreateAd').show();
  164. $('#linkHome').show();
  165. }
  166. else {
  167. //let firstChild = $('#viewBooks tr:has(td)').first();
  168. //console.log(firstChild);
  169. $('#linkHome').show();
  170. $('#linkLogin').show();
  171. $('#linkRegister').show();
  172. $('#linkListAds').hide();
  173. $('#linkCreateAd').hide();
  174. $('#linkLogout').hide();
  175. }
  176. }
  177. //notifications
  178. function infoBoxShow(msg){
  179. let infoBox = $('#infoBox');
  180. infoBox.text(msg);
  181. infoBox.show('slow');
  182. setTimeout(()=>{infoBox.hide()}, 3000)
  183. }
  184. function errorBoxShow(msg){
  185. let errorBox = $('#errorBox');
  186. errorBox.text(msg);
  187. errorBox.show('slow');
  188. setTimeout(()=>{errorBox.fadeOut()}, 3000)
  189. }
  190. //Ads
  191. function createAdd(e){
  192. e.preventDefault();
  193. let title = $('#viewCreateAd input[name="title"]');
  194. let date = $('#viewCreateAd input[name="datePublished"]');
  195. let description = $('#viewCreateAd textarea[name="description"]');
  196. let price = $('#viewCreateAd input[name="price"]');
  197. let obj = {
  198. url:baseDataUrl+ "/adds",
  199. method:"POST",
  200. headers:{
  201. "Authorization":`Kinvey ${sessionStorage.getItem("authtoken")}`,
  202. "Content-Type":"application/json"
  203. },
  204. data:JSON.stringify({
  205. title:title.val(),
  206. date:date.val(),
  207. description:description.val(),
  208. price:Number(price.val()).toFixed(2)
  209. }),
  210. success: function(res) {
  211. res.author = sessionStorage.getItem("username");
  212. res.ownAdd = true;
  213. console.log(res)
  214. res.aDelete='<a href="#">[Delete]</a>';
  215. res.aEdit='<a href="#/Edit">[Edit]</a>';
  216. $.get('templates/add.html').then((data)=>{
  217. let template = Handlebars.compile(data);
  218. let finale = $(template(res));
  219. console.log(finale)
  220. finale.find('a:contains("Delete")').on('click', ()=>{
  221. let postId = res._id;
  222. let anchor = $(this);
  223. let obj = {
  224. url:baseDataUrl + `/adds/${postId}`,
  225. method:"DELETE",
  226. headers:{
  227. "Authorization":`Kinvey ${sessionStorage.getItem("authtoken")}`
  228. },
  229. success: function(){
  230. console.log(anchor.parent().parent());
  231. anchor.parent().parent().remove();
  232. infoBoxShow('Deleted successfully')
  233. },
  234. error:function(err){
  235. errorBoxShow(err.statusText);
  236. }
  237. };
  238. $.ajax(obj);
  239. });
  240. finale.find('a:contains("Edit")').on('click', (e)=>{sessionStorage.setItem('toEdit', res._id)})
  241. $('#viewAds #ads table').append(finale);
  242. })
  243.  
  244. location.hash = "#/Ads";
  245. //$('//#books table')
  246. // .append($("<tr>")
  247. // .append($(`<td>${title.val()}</td>>`))
  248. // .append($(`<td>${author.val()}</td>>`))
  249. // .append($(`<td>${description.val()}</td>>`))
  250. // .append($('<td>')
  251. // .append($('<a href="#">[Edit]</a>'))
  252. // .append($('<a href="#">[Delete]</a>'))));
  253. infoBoxShow("You; successfully uploaded the book")
  254. },
  255. error:(err)=>{
  256. errorBoxShow(err.statusText)
  257. }
  258. };
  259. $.ajax(obj);
  260. title.val('');
  261. date.val('');
  262. price.val('');
  263. description.val('');
  264. }
  265. function listAds(){
  266. let obj = {
  267. url:baseDataUrl+ "/adds",
  268. method:"GET",
  269. headers:{
  270. "Authorization":`Kinvey ${sessionStorage.getItem("authtoken")}`,
  271. },
  272. success:loadAds,
  273. error:(err)=>{
  274. errorBoxShow(err.statusText)
  275. }
  276. };
  277. $.ajax(obj);
  278. function loadAds(allAds){
  279. console.log(allAds);
  280. for (let ad of allAds) {
  281. let lastTd = $('<td>');
  282. if(sessionStorage.getItem('id') == ad._acl.creator){
  283. ad.ownAdd = true;
  284. ad.author = sessionStorage.getItem('username')
  285. ad.aDelete = '<a href="#/Delete">[Delete]</a>';
  286. ad.aEdit = '<a href="#/Edit">[Edit]</a>';
  287. }
  288.  
  289. $.get('templates/add.html').then((templateAd)=>{
  290. let template = Handlebars.compile(templateAd);
  291. $('#viewAds #ads table').append(template(ad));
  292. })
  293. }
  294. }
  295. }
  296. });
Add Comment
Please, Sign In to add comment