Render "Fetch source data" box html server-side.

Instead of calling /sources.json and rendering the "Fetch source data"
box client-side in Javascript, call /sources.js so we can render the
html server-side.
This commit is contained in:
evazion
2018-09-07 16:51:00 -05:00
parent b1a9337897
commit 056fe365f2
6 changed files with 86 additions and 92 deletions

View File

@@ -1,12 +1,11 @@
import Post from './posts.js.erb'
import RelatedTag from './related_tag.js.erb'
let Upload = {};
Upload.initialize_all = function() {
if ($("#c-uploads,#c-posts").length) {
this.initialize_enter_on_tags();
this.initialize_info_manual();
$(document).on("click.danbooru", "#fetch-data-manual", Upload.fetch_data_manual);
}
if ($("#c-uploads").length) {
@@ -79,80 +78,10 @@ Upload.initialize_similar = function() {
}
Upload.initialize_info_bookmarklet = function() {
$("#upload_source").on("change.danbooru", function (e) {
$("#fetch-data-manual").click();
});
$("#upload_source").on("change.danbooru", Upload.fetch_data_manual);
$("#fetch-data-manual").click();
}
Upload.initialize_info_manual = function() {
$("#fetch-data-manual").on("click.danbooru", function(e) {
var source = $("#upload_source,#post_source").val();
var referer = $("#upload_referer_url").val();
if (/^https?:\/\//.test(source)) {
$("#source-info span#loading-data").show();
Upload.fetch_source_data(source, referer);
}
e.preventDefault();
});
}
Upload.fetch_source_data = function(url, referer_url) {
return $.getJSON("/source.json", { url: url, ref: referer_url })
.then(Upload.fill_source_info)
.catch(function(data) {
$("#source-info span#loading-data").html("Error: " + data.responseJSON.message)
});
}
Upload.fill_source_info = function(data) {
$("#source-tags").empty();
$.each(data.tags, function(i, v) {
$("<a>").attr("href", v[1]).text(v[0]).appendTo("#source-tags");
});
$("#source-artist-profile").attr("href", data.profile_url).text(data.artist_name);
RelatedTag.process_artist(data.artists);
RelatedTag.translated_tags = data.translated_tags;
RelatedTag.build_all();
if (data.artists.length === 0) {
var new_artist_params = $.param({
artist: {
name: data.unique_id,
other_names: data.artist_name,
url_string: $.uniqueSort([data.profile_url, data.normalized_for_artist_finder_url]).join("\n")
}
});
var link = $("<a>").attr("href", "/artists/new?" + new_artist_params).text("Create new artist");
$("#source-danbooru-artists").html(link);
} else {
var artistLinks = data.artists.map(function (artist) {
return $('<a class="tag-type-1">').attr("href", "/artists/" + artist.id).text(artist.name);
});
$("#source-danbooru-artists").html(artistLinks)
}
if (data.image_urls.length > 1) {
$("#gallery-warning").show();
} else {
$("#gallery-warning").hide();
}
$("#upload_artist_commentary_title").val(data.artist_commentary.dtext_title);
$("#upload_artist_commentary_desc").val(data.artist_commentary.dtext_description);
Upload.toggle_commentary();
$("#source-info span#loading-data").hide();
$("#source-info ul").show();
}
Upload.update_scale = function() {
var $image = $("#image");
var ratio = $image.data("scale-factor");
@@ -163,6 +92,18 @@ Upload.update_scale = function() {
}
}
Upload.fetch_data_manual = function(e) {
var url = $("#upload_source,#post_source").val();
var ref = $("#upload_referer_url").val();
if (/^https?:\/\//.test(url)) {
$("#source-info").addClass("loading");
$.get("/source.js", { url: url, ref: ref }).always(resp => $("#source-info").removeClass("loading"));
}
e.preventDefault();
}
Upload.initialize_image = function() {
var $image = $("#image");
if (!$image.length) {