131 lines
3.1 KiB
JavaScript
131 lines
3.1 KiB
JavaScript
jQuery(document).ready(function($) {
|
|
|
|
if(!$("html").hasClass("loggedIn"))
|
|
return;
|
|
|
|
var search_input = $("div.search input.autocomplete");
|
|
var selected_item = [];
|
|
var selection = false;
|
|
var lock = false;
|
|
var items = [false];
|
|
|
|
var buyItem = function(id, callback) {
|
|
$.post("/api2/buyable/item/" + id, {
|
|
"POSTDATA": "Y U NO CANT BE EMPTY"
|
|
}, callback);
|
|
};
|
|
|
|
$.extend($.gritter.options, {
|
|
position: "bottom-right",
|
|
fade_in_speed: 250,
|
|
fade_out_speed: 500,
|
|
time: 4000
|
|
});
|
|
|
|
$("a.buy").click(function(evt) {
|
|
var button = $(this);
|
|
evt.preventDefault();
|
|
|
|
if(button.hasClass("locked"))
|
|
return;
|
|
|
|
dataContainer = button.parent();
|
|
dataContainer.children().addClass("locked");
|
|
|
|
var id = dataContainer.attr("data-id");
|
|
var name = dataContainer.attr("data-name");
|
|
var image = dataContainer.attr("data-image");
|
|
|
|
buyItem(id, function(data, status) {
|
|
$.gritter.add({
|
|
title: name + " gekauft",
|
|
text: "Der Artikel wurde erfolgreich gebucht",
|
|
image: image
|
|
});
|
|
|
|
dataContainer.children().removeClass("locked");
|
|
});
|
|
});
|
|
|
|
$.getJSON("/api2/buyable/item", function(data) {
|
|
if(data.error === undefined) {
|
|
source = [];
|
|
|
|
$.each(data, function(key, item) {
|
|
items[item.id] = item;
|
|
|
|
source.push({
|
|
value: item.id,
|
|
label: "<span class='preview pk" + item.id + "'><img src='" +
|
|
MEDIA_URL + item.image + "' alt='" +
|
|
item.name + "' /></span>" +
|
|
"<span class='meta'>" + item.name +
|
|
"<br />Preis: " + parseFloat(item.price).toFixed(2) +
|
|
" €</span><span class='buy'></span>"
|
|
});
|
|
});
|
|
|
|
search_input.val("");
|
|
$("div.search form").removeAttr("action")
|
|
.children("input[type='submit']").remove();
|
|
|
|
search_input.autocomplete({
|
|
source: source,
|
|
html: true,
|
|
appendTo: ".search",
|
|
close: function(event, ui) {
|
|
|
|
},
|
|
focus: function(event, ui) {
|
|
selection = ui.item;
|
|
|
|
$("ul.ui-autocomplete").children().removeClass("focus");
|
|
$(".pk" + selection.value).parent().parent()
|
|
.addClass("focus");
|
|
|
|
event.preventDefault();
|
|
},
|
|
select: function(event, ui) {
|
|
location.href = "/store/show/" + ui.item.value + "/";
|
|
|
|
search_input.val(items[ui.item.value].fields.name);
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
|
|
search_input.keydown(function(event) {
|
|
selected_item = $(".pk" + selection.value).siblings(".buy");
|
|
|
|
if(lock && event.keyCode === 39) {
|
|
selected_item.addClass("load");
|
|
|
|
buyItem(selection.value, function(data, status) {
|
|
selected_item.removeClass("load");
|
|
|
|
if(status === "success") {
|
|
selected_item.addClass("success");
|
|
//TODO neuer kontostand wär schnaffte
|
|
} else {
|
|
selected_item.addClass("failure");
|
|
}
|
|
|
|
lock = false;
|
|
});
|
|
} else {
|
|
lock = (event.keyCode === 18 && selection)
|
|
}
|
|
|
|
if(!lock)
|
|
selected_item.removeClass("lock");
|
|
else
|
|
selected_item.addClass("lock");
|
|
|
|
selected_item.removeClass("failure success");
|
|
});
|
|
|
|
search_input.removeAttr("disabled"); search_input.focus();
|
|
} else {
|
|
search_input.val("Fehler beim Laden der Daten...");
|
|
}
|
|
});
|
|
}); |