index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. (function() {
  2. var resize = function() {
  3. var rect = form.get(0).getBoundingClientRect();
  4. form.css('margin-top', window.innerHeight/3 - rect.height/2);
  5. };
  6. var nameFrom = function(uri) {
  7. var parts = uri.substring(1).split('/');
  8. return parts[1];
  9. };
  10. var load = function() {
  11. var name = nameFrom(location.pathname);
  12. $.ajax({
  13. url: '/api/url/' + name,
  14. dataType: 'json'
  15. }).success(function(data) {
  16. var url = data.url || '';
  17. $('#url').val(url);
  18. });
  19. }
  20. var showLink = function(name) {
  21. var cmp = $('#cmp'),
  22. lnk = location.origin + '/' + name;
  23. var a = $(document.createElement('a'))
  24. .attr('href', lnk)
  25. .text(lnk)
  26. .appendTo(cmp.text(''));
  27. cmp.css('transform', 'scaleY(1)');
  28. getSelection().setBaseAndExtent(a.get(0), 0, a.get(0), 1);
  29. };
  30. var form = $('form').on('submit', function(e) {
  31. e.preventDefault();
  32. var name = nameFrom(location.pathname),
  33. url = $('#url').val().trim();
  34. if (!url) {
  35. return;
  36. }
  37. $.ajax({
  38. type: 'POST',
  39. url : '/api/url/' + name,
  40. data : JSON.stringify({ url : url }),
  41. dataType : 'json'
  42. }).success(function(data) {
  43. var url = data.url || '';
  44. if (url) {
  45. showLink(name);
  46. }
  47. });
  48. });
  49. window.addEventListener('resize', resize);
  50. resize();
  51. load();
  52. })();