<!-- | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, | |
* software distributed under the License is distributed on an | |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
* KIND, either express or implied. See the License for the | |
* specific language governing permissions and limitations | |
* under the License. | |
--> | |
<html> | |
<head> | |
<title>Store</title> | |
<script type="text/javascript" src="/js/ref.js"></script> | |
<script type="text/javascript"> | |
var store = component("Store"); | |
var catalog = defun(reference(store, "catalog"), "items"); | |
var shoppingCart = reference(store, "shoppingCart"); | |
var shoppingTotal = defun(reference(store, "shoppingTotal"), "total"); | |
var catalogItems; | |
function catalog_itemsResponse(items, exception) { | |
if (exception){ | |
alert(exception.message); | |
return; | |
} | |
var catalog = ""; | |
for (var i=0; i<items.length; i++) { | |
var item = items[i].name + ' - ' + items[i].price; | |
catalog += '<input name="items" type="checkbox" value="' + | |
item + '">' + item + ' <br>'; | |
} | |
document.getElementById('catalog').innerHTML=catalog; | |
catalogItems = items; | |
} | |
function shoppingCart_getResponse(feed) { | |
if (feed != null) { | |
var entries = feed.getElementsByTagName("entry"); | |
var list = ""; | |
for (var i=0; i<entries.length; i++) { | |
var content = entries[i].getElementsByTagName("content")[0]; | |
var name = content.getElementsByTagName("name")[0].firstChild.nodeValue; | |
var price = content.getElementsByTagName("price")[0].firstChild.nodeValue; | |
list += name + ' - ' + price + ' <br>'; | |
} | |
document.getElementById("shoppingCart").innerHTML = list; | |
shoppingTotal.total(shoppingTotal_totalResponse); | |
} | |
} | |
function shoppingTotal_totalResponse(total, exception) { | |
if (exception) { | |
alert(exception.message); | |
return; | |
} | |
document.getElementById('total').innerHTML = total; | |
} | |
function shoppingCart_postResponse(entry) { | |
shoppingCart.get("", shoppingCart_getResponse); | |
} | |
function addToCart() { | |
var items = document.catalogForm.items; | |
var j = 0; | |
for (var i=0; i<items.length; i++) | |
if (items[i].checked) { | |
var entry = '<entry xmlns="http://www.w3.org/2005/Atom"><title type="text">Item</title><content type="application/xml">' + | |
'<item>' + | |
'<name>' + catalogItems[i].name + '</name>' + | |
'<currencyCode>' + catalogItems[i].currencyCode + '</currencyCode>' + | |
'<currencySymbol>' + catalogItems[i].currencySymbol + '</currencySymbol>' + | |
'<price>' + catalogItems[i].price + '</price>' + | |
'</item>' + | |
'</content></entry>'; | |
shoppingCart.post(entry, shoppingCart_postResponse); | |
items[i].checked = false; | |
} | |
} | |
function checkoutCart() { | |
document.getElementById('store').innerHTML='<h2>' + | |
'Thanks for Shopping With Us!</h2>'+ | |
'<h2>Your Order</h2>'+ | |
'<form name="orderForm">'+ | |
document.getElementById('shoppingCart').innerHTML+ | |
'<br>'+ | |
document.getElementById('total').innerHTML+ | |
'<br>'+ | |
'<br>'+ | |
'<input type="submit" value="Continue Shopping">'+ | |
'</form>'; | |
shoppingCart.del("", null); | |
} | |
function deleteCart() { | |
shoppingCart.del("", null); | |
document.getElementById('shoppingCart').innerHTML = ""; | |
document.getElementById('total').innerHTML = ""; | |
} | |
function init() { | |
try { | |
catalog.items(catalog_itemsResponse); | |
shoppingCart.get("", shoppingCart_getResponse); | |
} catch(e){ | |
alert(e); | |
} | |
} | |
</script> | |
</head> | |
<body onload="init()"> | |
<h1>Jane's Store</h1> | |
<div id="store"> | |
<h2>Catalog</h2> | |
<form name="catalogForm"> | |
<div id="catalog" ></div> | |
<br> | |
<input type="button" onClick="addToCart()" value="Add to Cart"> | |
</form> | |
<br> | |
<h2>Your Shopping Cart</h2> | |
<form name="shoppingCartForm"> | |
<div id="shoppingCart"></div> | |
<br> | |
<div id="total"></div> | |
<br> | |
<input type="button" onClick="checkoutCart()" value="Checkout"> | |
<input type="button" onClick="deleteCart()" value="Empty"> | |
<a href="shoppingCart/">(feed)</a> | |
</form> | |
</div> | |
</body> | |
</html> |