1
0
mirror of https://github.com/janeczku/calibre-web synced 2024-12-11 02:30:30 +00:00
calibre-web/cps/static/js/edit_books.js

283 lines
8.1 KiB
JavaScript
Raw Normal View History

/**
* Created by SpeedProg on 05.04.2015.
*/
2017-07-18 21:20:32 +00:00
/* global Bloodhound, language, Modernizr, tinymce */
2017-03-31 16:31:16 +00:00
if ($("#description").length) {
2017-08-28 00:27:23 +00:00
tinymce.init({
selector: "#description",
branding: false,
menubar: "edit view format",
language: language
});
2017-08-28 00:27:23 +00:00
if (!Modernizr.inputtypes.date) {
$("#pubdate").datepicker({
format: "yyyy-mm-dd",
language: language
}).on("change", function () {
// Show localized date over top of the standard YYYY-MM-DD date
var pubDate;
var results = /(\d{4})[-\/\\](\d{1,2})[-\/\\](\d{1,2})/.exec(this.value); // YYYY-MM-DD
if (results) {
pubDate = new Date(results[1], parseInt(results[2], 10) - 1, results[3]) || new Date(this.value);
2017-09-16 17:30:49 +00:00
$("#fake_pubdate")
.val(pubDate.toLocaleDateString(language))
.removeClass("hidden");
2017-08-28 00:27:23 +00:00
}
}).trigger("change");
}
}
2017-08-28 00:27:23 +00:00
if (!Modernizr.inputtypes.date) {
$("#Publishstart").datepicker({
format: "yyyy-mm-dd",
language: language
}).on("change", function () {
// Show localized date over top of the standard YYYY-MM-DD date
var pubDate;
var results = /(\d{4})[-\/\\](\d{1,2})[-\/\\](\d{1,2})/.exec(this.value); // YYYY-MM-DD
if (results) {
pubDate = new Date(results[1], parseInt(results[2], 10) - 1, results[3]) || new Date(this.value);
$("#fake_Publishstart")
.val(pubDate.toLocaleDateString(language))
.removeClass("hidden");
}
}).trigger("change");
}
if (!Modernizr.inputtypes.date) {
$("#Publishend").datepicker({
format: "yyyy-mm-dd",
language: language
}).on("change", function () {
// Show localized date over top of the standard YYYY-MM-DD date
var pubDate;
var results = /(\d{4})[-\/\\](\d{1,2})[-\/\\](\d{1,2})/.exec(this.value); // YYYY-MM-DD
if (results) {
pubDate = new Date(results[1], parseInt(results[2], 10) - 1, results[3]) || new Date(this.value);
$("#fake_Publishend")
.val(pubDate.toLocaleDateString(language))
.removeClass("hidden");
}
}).trigger("change");
}
/*
Takes a prefix, query typeahead callback, Bloodhound typeahead adapter
and returns the completions it gets from the bloodhound engine prefixed.
*/
2017-04-02 08:05:07 +00:00
function prefixedSource(prefix, query, cb, bhAdapter) {
bhAdapter(query, function(retArray) {
var matches = [];
for (var i = 0; i < retArray.length; i++) {
var obj = {name : prefix + retArray[i].name};
matches.push(obj);
}
cb(matches);
});
}
2017-08-28 00:27:23 +00:00
function getPath() {
2017-03-30 19:17:18 +00:00
var jsFileLocation = $("script[src*=edit_books]").attr("src"); // the js file path
return jsFileLocation.substr(0, jsFileLocation.search("/static/js/edit_books.js")); // the js folder path
}
var authors = new Bloodhound({
2017-03-29 19:43:55 +00:00
name: "authors",
datumTokenizer: function datumTokenizer(datum) {
return [datum.name];
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
2017-08-28 00:27:23 +00:00
url: getPath() + "/get_authors_json?q=%QUERY"
}
});
var series = new Bloodhound({
2017-03-29 19:43:55 +00:00
name: "series",
datumTokenizer: function datumTokenizer(datum) {
return [datum.name];
},
queryTokenizer: function queryTokenizer(query) {
return [query];
},
remote: {
2017-08-28 00:27:23 +00:00
url: getPath() + "/get_series_json?q=",
replace: function replace(url, query) {
2017-08-28 00:27:23 +00:00
return url + encodeURIComponent(query);
}
}
});
2017-03-31 16:31:16 +00:00
var tags = new Bloodhound({
2017-03-29 19:43:55 +00:00
name: "tags",
datumTokenizer: function datumTokenizer(datum) {
return [datum.name];
},
queryTokenizer: function queryTokenizer(query) {
2017-03-30 19:17:18 +00:00
var tokens = query.split(",");
2017-08-28 00:27:23 +00:00
tokens = [tokens[tokens.length - 1].trim()];
2017-03-30 19:17:18 +00:00
return tokens;
},
remote: {
2017-08-28 00:27:23 +00:00
url: getPath() + "/get_tags_json?q=%QUERY"
}
});
var languages = new Bloodhound({
2017-03-29 19:43:55 +00:00
name: "languages",
datumTokenizer: function datumTokenizer(datum) {
return [datum.name];
},
queryTokenizer: function queryTokenizer(query) {
return [query];
},
remote: {
2017-08-28 00:27:23 +00:00
url: getPath() + "/get_languages_json?q=",
replace: function replace(url, query) {
2017-08-28 00:27:23 +00:00
return url + encodeURIComponent(query);
}
}
});
var publishers = new Bloodhound({
name: "publisher",
datumTokenizer: function datumTokenizer(datum) {
return [datum.name];
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: getPath() + "/get_publishers_json?q=%QUERY"
}
});
2017-03-31 16:31:16 +00:00
function sourceSplit(query, cb, split, source) {
var bhAdapter = source.ttAdapter();
2017-03-31 16:31:16 +00:00
var tokens = query.split(split);
2017-08-28 00:27:23 +00:00
var currentSource = tokens[tokens.length - 1].trim();
2017-08-28 00:27:23 +00:00
tokens.splice(tokens.length - 1, 1); // remove last element
var prefix = "";
2017-03-31 16:31:16 +00:00
var newSplit;
if (split === "&") {
2017-03-31 16:31:16 +00:00
newSplit = " " + split + " ";
} else {
2017-03-31 16:31:16 +00:00
newSplit = split + " ";
}
for (var i = 0; i < tokens.length; i++) {
2017-03-31 16:31:16 +00:00
prefix += tokens[i].trim() + newSplit;
}
2017-04-02 08:05:07 +00:00
prefixedSource(prefix, currentSource, cb, bhAdapter);
}
2017-03-31 16:31:16 +00:00
var promiseAuthors = authors.initialize();
promiseAuthors.done(function() {
2017-03-31 16:31:16 +00:00
$("#bookAuthor").typeahead(
{
highlight: true, minLength: 1,
hint: true
}, {
name: "authors",
displayKey: "name",
source: function source(query, cb) {
return sourceSplit(query, cb, "&", authors); //sourceSplit //("&")
2017-03-31 16:31:16 +00:00
}
}
);
2017-03-31 16:31:16 +00:00
});
var promiseSeries = series.initialize();
promiseSeries.done(function() {
2017-03-31 16:31:16 +00:00
$("#series").typeahead(
{
highlight: true, minLength: 0,
hint: true
}, {
name: "series",
displayKey: "name",
source: series.ttAdapter()
}
2017-04-02 08:05:07 +00:00
);
});
2017-03-31 16:31:16 +00:00
var promiseTags = tags.initialize();
promiseTags.done(function() {
2017-03-31 16:31:16 +00:00
$("#tags").typeahead(
{
highlight: true, minLength: 0,
hint: true
}, {
name: "tags",
displayKey: "name",
source: function source(query, cb) {
return sourceSplit(query, cb, ",", tags);
}
}
);
});
2017-03-31 16:31:16 +00:00
var promiseLanguages = languages.initialize();
promiseLanguages.done(function() {
2017-03-31 16:31:16 +00:00
$("#languages").typeahead(
{
highlight: true, minLength: 0,
hint: true
}, {
name: "languages",
displayKey: "name",
source: function source(query, cb) {
return sourceSplit(query, cb, ",", languages); //(",")
}
}
);
});
2017-03-31 16:31:16 +00:00
var promisePublishers = publishers.initialize();
promisePublishers.done(function() {
$("#publisher").typeahead(
{
highlight: true, minLength: 0,
hint: true
}, {
name: "publishers",
displayKey: "name",
source: publishers.ttAdapter()
}
);
});
$("#search").on("change input.typeahead:selected", function() {
2017-03-30 19:17:18 +00:00
var form = $("form").serialize();
2017-08-28 00:27:23 +00:00
$.getJSON( getPath() + "/get_matching_tags", form, function( data ) {
$(".tags_click").each(function() {
if ($.inArray(parseInt($(this).children("input").first().val(), 10), data.tags) === -1 ) {
if (!($(this).hasClass("active"))) {
$(this).addClass("disabled");
}
} else {
$(this).removeClass("disabled");
}
});
});
});
2017-08-10 10:34:54 +00:00
$("#btn-upload-format").on("change", function () {
var filename = $(this).val();
2017-09-11 15:18:11 +00:00
if (filename.substring(3, 11) === "fakepath") {
filename = filename.substring(12);
} // Remove c:\fake at beginning from localhost chrome
2017-08-10 10:34:54 +00:00
$("#upload-format").html(filename);
});
$("#btn-upload-cover").on("change", function () {
var filename = $(this).val();
if (filename.substring(3, 11) === "fakepath") {
filename = filename.substring(12);
} // Remove c:\fake at beginning from localhost chrome
$("#upload-cover").html(filename);
});