lychee/assets/js/search.js
2014-07-12 19:05:56 +02:00

98 lines
2.0 KiB
JavaScript
Executable File

/**
* @name Search Module
* @description Searches through your photos and albums.
* @author Tobias Reich
* @copyright 2014 by Tobias Reich
*/
search = {
code: null,
find: function(term) {
var params,
albumsData = "",
photosData = "",
code;
clearTimeout($(window).data("timeout"));
$(window).data("timeout", setTimeout(function() {
if ($("#search").val().length!==0) {
params = "search&term=" + term;
lychee.api(params, function(data) {
if (data&&data.albums) {
albums.json = { content: data.albums };
$.each(albums.json.content, function() {
albums.parse(this);
albumsData += build.album(this);
});
}
if (data&&data.photos) {
album.json = { content: data.photos };
$.each(album.json.content, function() {
album.parse(this);
photosData += build.photo(this);
});
}
if (albumsData===""&&photosData==="") code = "error";
else if (albumsData==="") code = build.divider("Photos")+photosData;
else if (photosData==="") code = build.divider("Albums")+albumsData;
else code = build.divider("Photos")+photosData+build.divider("Albums")+albumsData;
if (search.code!==md5(code)) {
$(".no_content").remove();
lychee.animate(".album:nth-child(-n+100), .photo:nth-child(-n+100)", "contentZoomOut");
lychee.animate(".divider", "fadeOut");
search.code = md5(code);
setTimeout(function() {
if (code==="error") $("body").append(build.no_content("search"));
else {
lychee.content.html(code);
lychee.animate(".album:nth-child(-n+100), .photo:nth-child(-n+100)", "contentZoomIn");
$("img[data-type!='svg']").retina();
}
}, 300);
}
});
} else search.reset();
}, 250));
},
reset: function() {
$("#search").val("");
$(".no_content").remove();
if (search.code!=="") {
// Trash data
albums.json = null;
album.json = null;
photo.json = null;
search.code = "";
lychee.animate(".divider", "fadeOut");
albums.load();
}
}
};