statusform.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. $(document).ready(function() {
  2. pixelfed.create = {};
  3. pixelfed.filters = {};
  4. pixelfed.create.hasGeneratedSelect = false;
  5. pixelfed.create.selectedFilter = false;
  6. pixelfed.create.currentFilterName = false;
  7. pixelfed.create.currentFilterClass = false;
  8. pixelfed.filters.list = [
  9. ['1977','filter-1977'],
  10. ['Aden','filter-aden'],
  11. ['Amaro','filter-amaro'],
  12. ['Ashby','filter-ashby'],
  13. ['Brannan','filter-brannan'],
  14. ['Brooklyn','filter-brooklyn'],
  15. ['Charmes','filter-charmes'],
  16. ['Clarendon','filter-clarendon'],
  17. ['Crema','filter-crema'],
  18. ['Dogpatch','filter-dogpatch'],
  19. ['Earlybird','filter-earlybird'],
  20. ['Gingham','filter-gingham'],
  21. ['Ginza','filter-ginza'],
  22. ['Hefe','filter-hefe'],
  23. ['Helena','filter-helena'],
  24. ['Hudson','filter-hudson'],
  25. ['Inkwell','filter-inkwell'],
  26. ['Kelvin','filter-kelvin'],
  27. ['Kuno','filter-juno'],
  28. ['Lark','filter-lark'],
  29. ['Lo-Fi','filter-lofi'],
  30. ['Ludwig','filter-ludwig'],
  31. ['Maven','filter-maven'],
  32. ['Mayfair','filter-mayfair'],
  33. ['Moon','filter-moon'],
  34. ['Nashville','filter-nashville'],
  35. ['Perpetua','filter-perpetua'],
  36. ['Poprocket','filter-poprocket'],
  37. ['Reyes','filter-reyes'],
  38. ['Rise','filter-rise'],
  39. ['Sierra','filter-sierra'],
  40. ['Skyline','filter-skyline'],
  41. ['Slumber','filter-slumber'],
  42. ['Stinson','filter-stinson'],
  43. ['Sutro','filter-sutro'],
  44. ['Toaster','filter-toaster'],
  45. ['Valencia','filter-valencia'],
  46. ['Vesper','filter-vesper'],
  47. ['Walden','filter-walden'],
  48. ['Willow','filter-willow'],
  49. ['X-Pro II','filter-xpro-ii']
  50. ];
  51. function previewImage(input) {
  52. if (input.files && input.files[0]) {
  53. var reader = new FileReader();
  54. reader.onload = function(e) {
  55. $('.filterPreview').attr('src', e.target.result);
  56. }
  57. reader.readAsDataURL(input.files[0]);
  58. }
  59. }
  60. function generateFilterSelect() {
  61. let filters = pixelfed.filters.list;
  62. for(var i = 0, len = filters.length; i < len; i++) {
  63. let filter = filters[i];
  64. let name = filter[0];
  65. let className = filter[1];
  66. let select = $('#filterSelectDropdown');
  67. var template = '<option value="' + className + '">' + name + '</option>';
  68. select.append(template);
  69. }
  70. pixelfed.create.hasGeneratedSelect = true;
  71. }
  72. $(document).on('change', '#fileInput', function() {
  73. previewImage(this);
  74. $('#statusForm .form-filters.d-none').removeClass('d-none');
  75. $('#statusForm .form-preview.d-none').removeClass('d-none');
  76. $('#statusForm #collapsePreview').collapse('show');
  77. if(!pixelfed.create.hasGeneratedSelect) {
  78. generateFilterSelect();
  79. }
  80. });
  81. $(document).on('change', '#filterSelectDropdown', function() {
  82. let el = $(this);
  83. let filter = el.val();
  84. let oldFilter = pixelfed.create.currentFilterClass;
  85. if(filter == 'none') {
  86. $('input[name=filter_class]').val('');
  87. $('input[name=filter_name]').val('');
  88. $('.filterContainer').removeClass(oldFilter);
  89. pixelfed.create.currentFilterClass = false;
  90. pixelfed.create.currentFilterName = 'None';
  91. $('.form-group.form-preview .form-text').text('Current Filter: No filter selected');
  92. return;
  93. } else {
  94. $('.filterContainer').removeClass(oldFilter).addClass(filter);
  95. pixelfed.create.currentFilterClass = filter;
  96. pixelfed.create.currentFilterName = el.find(':selected').text();
  97. $('.form-group.form-preview .form-text').text('Current Filter: ' + pixelfed.create.currentFilterName);
  98. $('input[name=filter_class]').val(pixelfed.create.currentFilterClass);
  99. $('input[name=filter_name]').val(pixelfed.create.currentFilterName);
  100. return;
  101. }
  102. });
  103. $(document).on('keyup keydown', '#statusForm textarea[name=caption]', function() {
  104. const el = $(this);
  105. const len = el.val().length;
  106. const limit = el.data('limit');
  107. if(len > limit) {
  108. const diff = limit - len;
  109. $('#statusForm .caption-counter').text(diff).addClass('text-danger');
  110. } else {
  111. $('#statusForm .caption-counter').text(len).removeClass('text-danger');
  112. }
  113. });
  114. $(document).on('focus', '#statusForm textarea[name=caption]', function() {
  115. const el = $(this);
  116. el.attr('rows', '3');
  117. });
  118. });