add dynamic tag counts on upload form

This commit is contained in:
Albert Yi
2018-12-03 13:20:09 -08:00
parent 28f32abe24
commit 3893926048
6 changed files with 98 additions and 16 deletions

View File

@@ -39,6 +39,10 @@ Post.initialize_all = function() {
this.initialize_edit_dialog();
}
var $fields_multiple = $('[data-autocomplete="tag-edit"]');
$fields_multiple.on("keypress.danbooru", Post.update_tag_count);
Post.update_tag_count();
$(window).on('danbooru:initialize_saved_seraches', () => {
Post.initialize_saved_searches();
});
@@ -78,7 +82,7 @@ Post.initialize_gestures = function() {
}
Post.initialize_edit_dialog = function() {
$("#open-edit-dialog").button().show().on("click.danbooru", function(e) {
$("#open-edit-dialog").show().on("click.danbooru", function(e) {
Post.open_edit_dialog();
e.preventDefault();
});
@@ -598,6 +602,27 @@ Post.initialize_saved_searches = function() {
});
}
Post.update_tag_count = function(event) {
let string = "0 tags";
let count = 0;
if (event) {
let tags = $(event.target).val().match(/\S+/g);
if (tags) {
count = tags.length;
string = (count == 1) ? (count + " tag") : (count + " tags")
}
}
$("#tags-container .count").html(string);
let klass = "smile";
if (count < 25) {
klass = "frown";
} else if (count < 35) {
klass = "meh";
}
$("#tags-container .options #face").removeClass().addClass(`far fa-${klass}`);
}
$(document).ready(function() {
Post.initialize_all();
});

View File

@@ -44,10 +44,6 @@ article.post-preview {
margin-top: 1em;
}
#open-edit-dialog {
padding: 0;
}
#edit-dialog textarea {
margin-bottom: 0.25em;
}
@@ -57,7 +53,6 @@ article.post-preview {
border: 2px solid transparent;
}
&.post-status-has-children img {
border-color: $preview_has_children_color;
}
@@ -348,6 +343,7 @@ div#c-posts {
}
textarea {
width: 100%;
margin-bottom: 0.25em;
}

View File

@@ -11,3 +11,47 @@ div#c-tags {
}
}
}
#tags-container {
max-width: 70em;
div.header {
margin: 0;
display: grid;
grid-template-columns: 50% 50%;
width: 100%;
label {
grid-column: 1;
}
.options {
grid-column: 2;
justify-self: end;
.count {
color: gray;
text-decoration: italic;
margin-left: 0.25em;
padding-bottom: 0.2em;
}
i {
margin-left: 0.25em;
font-size: 11pt;
}
.fa-frown {
color: red;
}
.fa-meh {
color: darkkhaki;
}
.fa-smile {
color: green;
}
}
}
}

View File

@@ -34,6 +34,7 @@ div#c-uploads {
textarea {
margin-bottom: 0.25em;
width: 100%;
}
.hint {

View File

@@ -75,16 +75,25 @@
<div class="input" id="iqdb-similar" style="display: none;"></div>
<% end %>
<div class="input">
<div>
<div class="input" id="tags-container">
<div class="header">
<%= f.label :tag_string, "Tags" %>
<%= f.text_area :tag_string, :size => "50x5", :value => post.presenter.split_tag_list_text + " ", :data => { :autocomplete => "tag-edit" } %>
<span id="open-edit-dialog" class="ui-icon ui-icon-arrow-1-ne" title="detach" style="display: none;" data-shortcut="shift+e"/>
<span class="options">
<i id="face" class="fas"></i>
<span class="count"></span>
<a href="#"><i id="open-edit-dialog" class="fas fa-arrows-alt" title="detach" data-shortcut="shift+e"></i></a>
</span>
</div>
<div>
<%= f.text_area :tag_string, :size => "60x5", :spellcheck => false, :"data-autocomplete" => "tag-edit", :"data-shortcut" => "e", :value => params[:tag_string] %>
</div>
<%= render "related_tags/buttons" %>
</div>
<div class="input">
<%= submit_tag "Submit", :class => "ui-button ui-widget ui-corner-all" %>
</div>

View File

@@ -90,18 +90,25 @@
</div>
</div>
<div class="input">
<div>
<div class="input" id="tags-container">
<div class="header">
<%= f.label :tag_string, "Tags" %>
<%= f.text_area :tag_string, :size => "60x5", :spellcheck => false, :"data-autocomplete" => "tag-edit", :"data-shortcut" => "e", :value => params[:tag_string] %>
<span id="open-edit-dialog" class="ui-icon ui-icon-arrow-1-ne" title="detach" style="display: none;" data-shortcut="shift+e"/>
<span class="options">
<i id="face" class="fas"></i>
<span class="count"></span>
<a href="#"><i id="open-edit-dialog" class="fas fa-arrows-alt" title="detach" data-shortcut="shift+e"></i></a>
</span>
</div>
<div>
<%= f.text_area :tag_string, :size => "60x5", :spellcheck => false, :"data-autocomplete" => "tag-edit", :"data-shortcut" => "e", :value => params[:tag_string] %>
</div>
<%= render "related_tags/buttons" %>
</div>
<div class="input">
<%= submit_tag "Submit", :id => "submit-button", :class => "large ui-button ui-widget ui-corner-all gradient", data: {disable_with: false} %>
<%= submit_tag "Submit", :id => "submit-button", :class => "large ui-button ui-widget ui-corner-all gradient", data: { disable_with: false } %>
</div>
<%= render "related_tags/container" %>