index.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. history.replaceState({}, null, '/edit/' + data.name);
  46. showLink(data.name);
  47. }
  48. });
  49. });
  50. window.addEventListener('resize', resize);
  51. resize();
  52. load();
  53. })();