/**
* Categories
*
* Toggle category metadata.
* Displays dynamic selects on upload.php.
* These change with each category.
*/
function Categories() {
let def = [
"javdb", // Accession Number
"audio", // Version
"title", // Torrent Title
"title_rj", // Organism
"title_jp", // Strain/Variety
"artists", // Authors(s)
"studio", // Department/Lab
"series", // Location
"year", // Year
"codec", // License
// Platform *changes below*
"resolution", // Scope *changes below*
// Format *changes below*
"archive", // Archive
"tags", // Tags
"cover", // Picture
"mirrors", // Mirrors
"screenshots", // Publications
//'seqhash', // Seqhash
"group_desc", // Torrent Group Description
"release_desc", // Torrent Description
"censored", // Aligned/Annotated
"anon", // Upload Anonymously
];
let cats = [
{
// Sequences
media: {}, // Platform
container: {}, // Format
seqhash: {}, // Seqhash
},
{
// Graphs
media_graphs: {}, // Platform
container_graphs: {}, // Format
},
{
// Systems
media_graphs: {}, // Platform
container_graphs: {}, // Format
},
{
// Geometric
media_graphs: {}, // Platform
container_graphs: {}, // Format
},
{
// Scalars/Vectors
media_scalars_vectors: {}, // Platform
container_scalars_vectors: {}, // Format
},
{
// Patterns
media_graphs: {}, // Platform
container_graphs: {}, // Format
},
{
// Constraints
media_graphs: {}, // Platform
container_graphs: {}, // Format
},
{
// Images
media_images: {}, // Platform
container_images: {}, // Format
},
{
// Spatial
media_graphs: {}, // Platform
container_spatial: {}, // Format
},
{
// Models
media_graphs: {}, // Platform
container_spatial: {}, // Format
},
{
// Documents
media_documents: {}, // Platform
container_documents: {}, // Format
},
{
// Machine Data
media_machine_data: {}, // Platform
container: {}, // Format
},
];
let active = {};
for (let field of def) active[field] = {};
let category = 0;
if ($('input[name="type"]').raw())
category = $('input[name="type"]').raw().value;
if ($("#categories").raw()) category = $("#categories").raw().value;
active = Object.assign(active, cats[category]);
let hide = (el) => {
Array.from(
$(`#${el.id} input, #${el.id} select, #${el.id} textarea`)
).forEach((inp) => (inp.disabled = true));
$(el).ghide();
};
let show = (el) => {
Array.from(
$(`#${el.id} input, #${el.id} select, #${el.id} textarea`)
).forEach((inp) => (inp.disabled = false));
$(el).gshow();
};
let trs = $("#dynamic_form tr");
for (let tr of trs) {
let field = tr.id.slice(0, -3);
if (active[field]) {
if (active[field].name) {
tr.children[0].innerHTML = active[field].name;
}
let notes = $(`#${tr.id} p.notes`).raw();
if (notes) notes.innerHTML = active[field].notes || "";
show(tr);
} else {
hide(tr);
}
}
}
/**
* add_tag
*/
function add_tag() {
if ($("#tags").raw().value == "") {
$("#tags").raw().value =
$("#genre_tags").raw().options[
$("#genre_tags").raw().selectedIndex
].value;
} else if (
$("#genre_tags").raw().options[$("#genre_tags").raw().selectedIndex]
.value == "---"
) {
} else {
$("#tags").raw().value =
$("#tags").raw().value +
", " +
$("#genre_tags").raw().options[$("#genre_tags").raw().selectedIndex]
.value;
}
}
/**
* AddLogField
*/
var LogCount = 1;
function AddLogField() {
if (LogCount >= 200) {
return;
}
var LogField = document.createElement("input");
LogField.type = "file";
LogField.id = "file";
LogField.name = "logfiles[]";
LogField.size = 50;
var x = $("#logfields").raw();
x.appendChild(document.createElement("br"));
x.appendChild(LogField);
LogCount++;
}
/**
* RemoveLogField
*/
function RemoveLogField() {
if (LogCount == 1) {
return;
}
var x = $("#logfields").raw();
for (i = 0; i < 2; i++) {
x.removeChild(x.lastChild);
}
LogCount--;
}
/**
* AddExtraLogField
*/
var ExtraLogCount = 1;
function AddExtraLogField(id) {
if (LogCount >= 200) {
return;
}
var LogField = document.createElement("input");
LogField.type = "file";
LogField.id = "file_" + id;
LogField.name = "logfiles_" + id + "[]";
LogField.size = 50;
var x = $("#logfields_" + id).raw();
x.appendChild(document.createElement("br"));
x.appendChild(LogField);
LogCount++;
}
/**
* RemoveLogField
*/
function RemoveLogField() {
if (LogCount == 1) {
return;
}
var x = $("#logfields").raw();
for (i = 0; i < 2; i++) {
x.removeChild(x.lastChild);
}
LogCount--;
}
/**
* AddFormat
*/
var FormatCount = 0;
function AddFormat() {
if (FormatCount >= 10) {
return;
}
FormatCount++;
$("#extras").raw().value = FormatCount;
var NewRow = document.createElement("tr");
NewRow.id = "new_torrent_row" + FormatCount;
NewRow.setAttribute(
"style",
"border-top-width: 5px; border-left-width: 5px; border-right-width: 5px;"
);
var NewCell1 = document.createElement("td");
NewCell1.setAttribute("class", "label");
NewCell1.innerHTML = "Extra Torrent File";
var NewCell2 = document.createElement("td");
var TorrentField = document.createElement("input");
TorrentField.type = "file";
TorrentField.id = "extra_torrent_file" + FormatCount;
TorrentField.name = "extra_torrent_files[]";
TorrentField.size = 50;
NewCell2.appendChild(TorrentField);
NewRow.appendChild(NewCell1);
NewRow.appendChild(NewCell2);
NewRow = document.createElement("tr");
NewRow.id = "new_format_row" + FormatCount;
NewRow.setAttribute(
"style",
"border-left-width: 5px; border-right-width: 5px;"
);
NewCell1 = document.createElement("td");
NewCell1.setAttribute("class", "label");
NewCell1.innerHTML = "Extra Format / Bitrate";
NewCell2 = document.createElement("td");
tmp =
'";
var bitrates = ["1", "2", "3"];
tmp +=
'";
NewCell2.innerHTML = tmp;
NewRow.appendChild(NewCell1);
NewRow.appendChild(NewCell2);
NewRow = document.createElement("tr");
NewRow.id = "new_description_row" + FormatCount;
NewRow.setAttribute(
"style",
"border-bottom-width: 5px; border-left-width: 5px; border-right-width: 5px;"
);
NewCell1 = document.createElement("td");
NewCell1.setAttribute("class", "label");
NewCell1.innerHTML = "Extra Release Description";
NewCell2 = document.createElement("td");
NewCell2.innerHTML =
'';
NewRow.appendChild(NewCell1);
NewRow.appendChild(NewCell2);
}
/**
* RemoveFormat
*/
function RemoveFormat() {
if (FormatCount == 0) {
return;
}
$("#extras").raw().value = FormatCount;
var x = $("#new_torrent_row" + FormatCount).raw();
x.parentNode.removeChild(x);
x = $("#new_format_row" + FormatCount).raw();
x.parentNode.removeChild(x);
x = $("#new_description_row" + FormatCount).raw();
x.parentNode.removeChild(x);
FormatCount--;
}
/**
* AddArtistField
*/
var ArtistCount = 1;
function AddArtistField() {
window.getSelection().removeAllRanges();
ArtistCount = $('input[name="artists[]"]').length;
if (ArtistCount >= 200) {
return;
}
var ArtistField = document.createElement("input");
ArtistField.type = "text";
ArtistField.id = "artist_" + ArtistCount;
ArtistField.name = "artists[]";
ArtistField.size = 45;
var x = $("#artistfields").raw();
x.appendChild(document.createElement("br"));
x.appendChild(ArtistField);
x.appendChild(document.createTextNode("\n"));
if ($("#artist_0").data("gazelle-autocomplete")) {
$(ArtistField).on("focus", function () {
$(ArtistField).autocomplete({
serviceUrl: ARTIST_AUTOCOMPLETE_URL,
});
});
}
ArtistCount++;
}
/**
* RemoveArtistField
*/
function RemoveArtistField() {
window.getSelection().removeAllRanges();
ArtistCount = $('input[name="artists[]"]').length;
if (ArtistCount == 1) {
return;
}
var x = $("#artistfields").raw();
for (i = 0; i < 3; i++) {
x.removeChild(x.lastChild);
}
ArtistCount--;
}
/**
* AddScreenshotField
*/
function AddScreenshotField() {
var sss = $('[name="screenshots[]"]');
if (sss.length >= 10) return;
var ScreenshotField = document.createElement("input");
ScreenshotField.type = "text";
ScreenshotField.id = "ss_" + sss.length;
ScreenshotField.name = "screenshots[]";
ScreenshotField.size = 45;
var a = document.createElement("a");
a.className = "brackets";
a.innerHTML = "−";
a.onclick = function () {
RemoveScreenshotField(this);
};
var x = $("#screenshots").raw();
var y = document.createElement("div");
y.appendChild(ScreenshotField);
y.appendChild(document.createTextNode("\n"));
y.appendChild(a);
x.appendChild(y);
}
function RemoveScreenshotField(el) {
var sss = $('[name="screenshots[]"]');
el.parentElement.remove();
}
/**
* AnimeAutofill
*/
function AnimeAutofill() {
var map = {
artist: "artist_0",
title: "title",
title_rj: "title_rj",
title_jp: "title_jp",
year: "year",
description: "album_desc",
};
var aid = $("#anidb").raw().value;
$.getJSON("/api.php?action=autofill&cat=anime&aid=" + aid, function (data) {
if (data.status != "success") return;
for (i in data.response) {
if (map[i] && !$("#" + map[i]).raw().value) {
$("#" + map[i]).raw().value = data.response[i];
}
}
});
}
/**
* JavAutofill
*/
function JavAutofill() {
var map = {
cn: "javdb",
artists: "artists",
title: "title",
title_jp: "title_jp",
year: "year",
studio: "studio",
image: "image",
tags: "tags",
description: "album_desc",
};
var cn = $("#javdb_tr #catalogue").raw().value.toUpperCase();
$.getJSON("/api.php?action=autofill&cat=jav&cn=" + cn, function (data) {
if (data.status != "success") {
$("#catalogue").raw().value = "Failed";
return;
} else {
$("#catalogue").raw().value = data.response.cn;
}
for (i in data.response) {
if (Array.isArray(data.response[i])) {
for (j in data.response[i]) {
if (i == "artists") {
if (!$("#" + map[i] + "_" + j).raw()) {
AddArtistField();
}
$("#" + map[i] + "_" + j).raw().value = data.response[i][j];
}
if (map[i] == "tags" && !$("#" + map[i]).raw().value) {
$("#" + map[i]).raw().value = data.response[i].join(", ");
}
}
}
if (map[i] && $("#" + map[i]).raw() && !$("#" + map[i]).raw().value) {
$("#" + map[i]).raw().value = data.response[i];
}
}
if (data.response.screens.length) {
$("#album_desc").raw().value =
"[spoiler=Automatically located thumbs][img]" +
data.response.screens.join("[/img][img]") +
"[/img][/spoiler]\n\n" +
$("#album_desc").raw().value;
}
});
}
/**
* MangaAutofill
*/
function MangaAutofill() {
var map = {
artists: "artists",
title: "title",
title_jp: "title_jp",
year: "year",
tags: "tags",
lang: "lang",
cover: "image",
circle: "series",
pages: "pages",
description: "release_desc",
};
var nh = $("#ehentai_tr #catalogue").raw().value;
$.getJSON("/api.php?action=autofill&cat=manga&url=" + nh, function (data) {
if (data.status != "success") {
$("#catalogue").raw().value = "Failed";
return;
}
for (i in data.response) {
if (Array.isArray(data.response[i])) {
for (j in data.response[i]) {
if (i == "artists") {
if (!$("#" + map[i] + "_" + j).raw()) {
AddArtistField();
}
$("#" + map[i] + "_" + j).raw().value = data.response[i][j];
}
if (map[i] == "tags" && !$("#" + map[i]).raw().value) {
$("#" + map[i]).raw().value = data.response[i].join(", ");
}
}
}
if (
map[i] &&
$("#" + map[i]).raw() &&
(!$("#" + map[i]).raw().value || $("#" + map[i]).raw().value == "---")
) {
$("#" + map[i]).raw().value = data.response[i];
}
}
});
}
/**
* SetResolution
*/
function SetResolution() {
if ($("#ressel").raw().value != "Other") {
$("#resolution").raw().value = $("#ressel").raw().value;
$("#resolution").ghide();
} else {
$("#resolution").raw().value = "";
$("#resolution").gshow();
$("#resolution").raw().readOnly = false;
}
}
/**
* initAutofill
*/
function initAutofill() {
$("[autofill]").each(function (i, el) {
el.addEventListener("click", function (event) {
({ douj: MangaAutofill, anime: AnimeAutofill, jav: JavAutofill }[
el.attributes["autofill"].value
]());
});
});
}
$(function () {
Categories();
initAutofill();
$(document).on("click", ".add_artist_button", AddArtistField);
$(document).on("click", ".remove_artist_button", RemoveArtistField);
});