Add easy UI for adding tag children, synonyms.
This commit is contained in:
parent
75c8dccf1b
commit
2fb3b67fde
1 changed files with 78 additions and 18 deletions
|
@ -85,8 +85,8 @@ h2, h3
|
||||||
<div id="content_body" class="sticky_side_right sticky_bottom_right">
|
<div id="content_body" class="sticky_side_right sticky_bottom_right">
|
||||||
<div id="right" class="panel">
|
<div id="right" class="panel">
|
||||||
<div id="editor_area">
|
<div id="editor_area">
|
||||||
<input type="text" id="add_tag_textbox" class="entry_with_history entry_with_tagname_replacements" autofocus>
|
<input type="text" id="easybake_input" class="entry_with_tagname_replacements" autofocus>
|
||||||
<button class="add_tag_button green_button" id="add_tag_button" onclick="return easybake_form();">bake</button>
|
<button class="green_button" id="easybake_button" onclick="return easybake_form();">bake</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="message_area">
|
<div id="message_area">
|
||||||
</div>
|
</div>
|
||||||
|
@ -139,7 +139,6 @@ h2, h3
|
||||||
{% endif %} <!-- if parents -->
|
{% endif %} <!-- if parents -->
|
||||||
{% endif %} <!-- if specific tag -->
|
{% endif %} <!-- if specific tag -->
|
||||||
|
|
||||||
{% if tags or not specific_tag %}
|
|
||||||
<div id="hierarchy_tags" class="panel">
|
<div id="hierarchy_tags" class="panel">
|
||||||
{% if specific_tag %}
|
{% if specific_tag %}
|
||||||
<h3>{{tag_count - 1}} Descendants</h3>
|
<h3>{{tag_count - 1}} Descendants</h3>
|
||||||
|
@ -200,13 +199,18 @@ h2, h3
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if specific_tag %}
|
||||||
|
<li>
|
||||||
|
<input id="add_child_input" type="text" class="entry_with_tagname_replacements" list="tag_autocomplete_datalist"></input><!--
|
||||||
|
--><button id="add_child_button" class="green_button" onclick="return add_child_form(event);">Add child</button>
|
||||||
|
</li>
|
||||||
|
{% endif %} <!-- if specific_tag -->
|
||||||
</ul>
|
</ul>
|
||||||
</div> <!-- hierarchy_tags -->
|
</div> <!-- hierarchy_tags -->
|
||||||
{% endif %} <!-- if tags or not specific tag -->
|
|
||||||
|
|
||||||
{% if specific_tag and include_synonyms %}
|
{% if specific_tag and include_synonyms %}
|
||||||
{% set synonyms = specific_tag.get_synonyms() %}
|
{% set synonyms = specific_tag.get_synonyms() %}
|
||||||
{% if synonyms %}
|
|
||||||
<div id="hierarchy_synonyms" class="panel">
|
<div id="hierarchy_synonyms" class="panel">
|
||||||
<h3>{{synonyms|length}} Synonyms</h3>
|
<h3>{{synonyms|length}} Synonyms</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -229,9 +233,13 @@ h2, h3
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<input id="add_synonym_input" type="text" class="entry_with_tagname_replacements"></input><!--
|
||||||
|
--><button id="add_synonym_button" class="green_button" onclick="return add_synonym_form(event);">Add synonym</button>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %} <!-- if synonyms -->
|
|
||||||
{% endif %} <!-- if specific tag and include synonyms -->
|
{% endif %} <!-- if specific tag and include synonyms -->
|
||||||
|
|
||||||
{% if specific_tag %}
|
{% if specific_tag %}
|
||||||
|
@ -252,10 +260,64 @@ h2, h3
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
let SPECIFIC_TAG = "{{specific_tag.name}}";
|
let SPECIFIC_TAG = "{{specific_tag.name}}";
|
||||||
|
|
||||||
const add_tag_textbox = document.getElementById('add_tag_textbox');
|
const easybake_input = document.getElementById('easybake_input');
|
||||||
const add_tag_button = document.getElementById('add_tag_button');
|
const easybake_button = document.getElementById('easybake_button');
|
||||||
const message_area = document.getElementById('message_area');
|
const message_area = document.getElementById('message_area');
|
||||||
common.bind_box_to_button(add_tag_textbox, add_tag_button, false);
|
common.bind_box_to_button(easybake_input, easybake_button, false);
|
||||||
|
|
||||||
|
common.bind_box_to_button(document.getElementById("add_child_input"), document.getElementById("add_child_button"));
|
||||||
|
common.bind_box_to_button(document.getElementById("add_synonym_input"), document.getElementById("add_synonym_button"));
|
||||||
|
|
||||||
|
function add_child_form(event)
|
||||||
|
{
|
||||||
|
const input = document.getElementById("add_child_input")
|
||||||
|
const child_name = input.value.trim();
|
||||||
|
if (! child_name)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (child_name.match(/[\.\+\=]/))
|
||||||
|
{
|
||||||
|
common.create_message_bubble(message_area, "message_negative", "Tag name can't contain ., +, =.");
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const easybake_string = SPECIFIC_TAG + "." + child_name
|
||||||
|
|
||||||
|
function callback(response)
|
||||||
|
{
|
||||||
|
tag_action_callback(response);
|
||||||
|
if (response.meta.status === 200)
|
||||||
|
{
|
||||||
|
input.value = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// This function uses the easybake function instead of the add_child
|
||||||
|
// function because we want to be able to create new tags from this UI.
|
||||||
|
// The add_child function is only for grouping existing tags.
|
||||||
|
api.tags.easybake(easybake_string, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_synonym_form(event)
|
||||||
|
{
|
||||||
|
const input = document.getElementById("add_synonym_input")
|
||||||
|
const syn_name = input.value.trim();
|
||||||
|
if (! syn_name)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function callback(response)
|
||||||
|
{
|
||||||
|
tag_action_callback(response);
|
||||||
|
if (response.meta.status === 200)
|
||||||
|
{
|
||||||
|
input.value = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
api.tags.add_synonym(SPECIFIC_TAG, syn_name, callback);
|
||||||
|
}
|
||||||
|
|
||||||
function tag_object_from_li(li)
|
function tag_object_from_li(li)
|
||||||
{
|
{
|
||||||
|
@ -265,22 +327,20 @@ function tag_object_from_li(li)
|
||||||
|
|
||||||
function easybake_form()
|
function easybake_form()
|
||||||
{
|
{
|
||||||
const easybake_string = add_tag_textbox.value;
|
const easybake_string = easybake_input.value;
|
||||||
if (easybake_string === "")
|
if (easybake_string === "")
|
||||||
{
|
{
|
||||||
add_tag_textbox.focus();
|
easybake_input.focus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function callback(response)
|
function callback(response)
|
||||||
{
|
{
|
||||||
if (response.meta.status !== 200)
|
|
||||||
{
|
|
||||||
alert(JSON.stringify(response));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
tag_action_callback(response);
|
tag_action_callback(response);
|
||||||
add_tag_textbox.value = "";
|
if (response.meta.status === 200)
|
||||||
|
{
|
||||||
|
easybake_input.value = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
api.tags.easybake(easybake_string, callback);
|
api.tags.easybake(easybake_string, callback);
|
||||||
}
|
}
|
||||||
|
@ -347,7 +407,7 @@ function remove_synonym_form(event)
|
||||||
|
|
||||||
function tag_action_callback(response)
|
function tag_action_callback(response)
|
||||||
{
|
{
|
||||||
if (response.meta.status !== 200)
|
if (! response.meta.json_ok)
|
||||||
{
|
{
|
||||||
alert(JSON.stringify(response));
|
alert(JSON.stringify(response));
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue