diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-05-17 13:45:27 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-05-17 13:45:27 +0000 |
commit | c157664f028a3db91ebcc667b3377e3247dc73a1 (patch) | |
tree | c85e80615c0504f20208b5a019d5a46feac11639 /sandbox/travelsample/contributions/fullapp-ui-contribution/src/main/resources/scatours.html | |
parent | 996059c453cec6fa783f5eeb4c2beb01358e8889 (diff) |
Add ui contribution for the full travel booking application. This is just getting it basically working after the reorg of the code. Payment not fixed up yet.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@775647 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/travelsample/contributions/fullapp-ui-contribution/src/main/resources/scatours.html')
-rw-r--r-- | sandbox/travelsample/contributions/fullapp-ui-contribution/src/main/resources/scatours.html | 391 |
1 files changed, 391 insertions, 0 deletions
diff --git a/sandbox/travelsample/contributions/fullapp-ui-contribution/src/main/resources/scatours.html b/sandbox/travelsample/contributions/fullapp-ui-contribution/src/main/resources/scatours.html new file mode 100644 index 0000000000..731fa1ba1b --- /dev/null +++ b/sandbox/travelsample/contributions/fullapp-ui-contribution/src/main/resources/scatours.html @@ -0,0 +1,391 @@ +<!-- + * 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>SCA Tours</title> + +<link rel="stylesheet" type="text/css" href="style.css" /> + +<script type="text/javascript" src="scatours.js"></script> + +<script language="JavaScript"> + + //@Reference + var scaToursCatalog = new tuscany.sca.Reference("scaToursCatalog"); + + //@Reference + var scaToursBooking = new tuscany.sca.Reference("scaToursBooking"); + + //@Reference + var scaToursCart = new tuscany.sca.Reference("scaToursCart"); + + //local state + var packagedItems; + var bespokeItems; + var cartId; + + //the constructor for trip leg beans + function TripLegType(id, + fromLocation, + toLocation, + fromDate, + toDate, + noOfPeople) { + this.id = id; + this.fromLocation = fromLocation; + this.toLocation = toLocation; + this.fromDate = fromDate; + this.toDate = toDate; + this.noOfPeople = noOfPeople; + } + + function getTripLeg(){ + return new TripLegType(cartId, + document.searchForm.fromLocation.value, + document.searchForm.toLocation.value, + document.searchForm.fromDate.value, + document.searchForm.toDate.value, + document.searchForm.noOfPeople.value); + } + + //the constructor for bespoke trip beans + function TripType() { + this.id = cartId; + this.type = "Bespoke"; + this.tripItems = new Array(); + // json databinding can't tolerate having a class hint set as the + // databinding transformer is not in the right classloader to load + // the class pointed to by the hint + //this.javaClass = "scatours.common.TripItem"; + } + + function getTrip(){ + return new TripType(); + } + + // remove class hint from the trip object + // can also be used to limit the amount of + // data returned to the server + function copyTrip(trip){ + var tripCopy = new TripType(); + + tripCopy.id = trip.id; + tripCopy.tripId = trip.tripId; + tripCopy.type = trip.type; + tripCopy.name = trip.name; + tripCopy.description = trip.description; + tripCopy.location = trip.location; + tripCopy.fromDate = trip.fromDate; + tripCopy.toDate = trip.toDate; + tripCopy.price = trip.price; + tripCopy.currency = trip.currency; + tripCopy.link = trip.link; + + return tripCopy; + } + + function init() { + try { + newCart(); + } + catch(e) { + alert(e); + } + } + + function reset() { + document.getElementById('packagedTripItems').innerHTML = ""; + document.getElementById('bespokeTripItems').innerHTML = ""; + document.getElementById('cartItems').innerHTML = ""; + document.getElementById('cartPrice').innerHTML = ""; + packagedItems = new Array(); + bespokeItems = new Array(); + } + + function newCart() { + scaToursCart.newCart(newCart_response); + reset(); + } + + function newCart_response(newCartId, exception) { + if(exception){ + alert(exception.javaStack); + return; + } + cartId = newCartId + } + + function searchTravelCatalog() { + scaToursCatalog.search(getTripLeg(), search_response); + } + + function search_response(items, exception) { + if(exception){ + alert(exception.javaStack); + return; + } + + var packagedHTML = '<h3>Packaged Trip Items</h3>'; + packagedHTML += '<table border="0">'; + packagedHTML += '<tr>'; + packagedHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>'; + packagedHTML += '</tr>'; + + var bespokeHTML = '<h3>Bespoke Trip Items</h3>'; + bespokeHTML += '<table border="0">'; + bespokeHTML += '<tr>'; + bespokeHTML += '<td>Select</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>'; + bespokeHTML += '</tr>'; + + for (var i=0; i<items.length; i++) { + if (items[i].type == "Trip") { + packagedHTML += '<tr>'; + packagedHTML += '<td><input onClick="processPackagedSelection()" name="packagedTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>' + packagedHTML += '<td>' + items[i].name + '</td>'; + packagedHTML += '<td>' + items[i].description + '</td>'; + packagedHTML += '<td>' + items[i].location + '</td>'; + packagedHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>'; + packagedHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>'; + packagedHTML += '</tr>'; + packagedItems.push(items[i]); + } else { + bespokeHTML += '<tr>'; + bespokeHTML += '<td><input onClick="processBespokeSelection()" name="bespokeTripItemSelection" type="checkbox" value="' + items[i].id + '"></td>' + bespokeHTML += '<td>' + items[i].name + '</td>'; + bespokeHTML += '<td>' + items[i].description + '</td>'; + bespokeHTML += '<td>' + items[i].location + '</td>'; + bespokeHTML += '<td>' + items[i].fromDate + ' - ' + items[i].toDate +'</td>'; + bespokeHTML += '<td>' + items[i].price + ' ' + items[i].currency + '</td>'; + bespokeHTML += '</tr>'; + bespokeItems.push(items[i]); + } + } + + packagedHTML += '</table>'; + packagedHTML += '<input type="button" onClick="bookPackagedTrip()" value="Book Packaged Trip">'; + + bespokeHTML += '<tr><td/><td/><td>Total Price</td><td/><td/><td><div id="bespokeTripPrice"></div> </td></tr>'; + bespokeHTML += '</table>'; + bespokeHTML += '<input type="button" onClick="bookBespokeTrip()" value="Book Bespoke Trip">'; + + if (packagedItems.length > 0){ + document.getElementById('packagedTripItems').innerHTML = packagedHTML; + } + + if (bespokeItems.length > 0){ + document.getElementById('bespokeTripItems').innerHTML = bespokeHTML; + } + } + + function processPackagedSelection() { + // do nothing at the moment + } + + function processBespokeSelection() { + // calculate total price + var items = document.getElementsByName("bespokeTripItemSelection"); + var totalPrice = 0.0; + for (var i=0; i<items.length; i++) { + + // find the items that are checked + if (items[i].checked == true) { + totalPrice = totalPrice + bespokeItems[i].price; + } + } + document.getElementById('bespokeTripPrice').innerHTML = totalPrice + ' ' + bespokeItems[0]. currency; + } + + function bookPackagedTrip() { + // find first selected trip item + var trip = null; + var items = document.getElementsByName("packagedTripItemSelection"); + for (var i=0; i<items.length; i++) { + + // find the items that are checked + if (items[i].checked == true) { + trip = copyTrip(packagedItems[i]); + break; + } + } + + if (trip != null) { + // book trip + scaToursBooking.bookTrip(cartId, trip); + + // reset the display + reset(); + + // re-populate the cart with all entries + getCartTrips(); + } else { + alert ("Please select a trip") + } + } + + function bookBespokeTrip() { + // create a trip object + var trip = getTrip(); + + // add selected trip items to trip + var items = document.getElementsByName("bespokeTripItemSelection"); + for (var i=0; i<items.length; i++) { + + // find the items that are checked + if (items[i].checked == true) { + trip.tripItems.push(copyTrip(bespokeItems[i])); + } + } + + if (trip.tripItems.length > 0) { + // book trip + scaToursBooking.bookTrip(cartId, trip); + + // reset the display + reset(); + + // re-populate the cart with all entries + getCartTrips(); + } else { + alert ("Please select some trip items!") + } + } + + function getCartTrips() { + scaToursCart.getTrips(cartId, getCartTrips_response); + } + + function getCartTrips_response(trips, exception) { + if(exception){ + alert(exception.javaStack); + return; + } + var itemsHTML = ''; + var totalPrice = 0.0; + + for (var x=0; x<trips.length; x++){ + itemsHTML += '<h3>Trip - ' + trips[x].id + '</h3>'; + itemsHTML += '<table border="0">'; + itemsHTML += '<tr>'; + itemsHTML += '<td>Booking Ref</td><td>Name</td><td>Description</td><td>Location</td><td>From - To</td><td>Price</td>'; + itemsHTML += '</tr>'; + + if (trips[x].type == "Trip") { + itemsHTML += '<tr>'; + itemsHTML += '<td>' + trips[x].bookingCode + '</td>'; + itemsHTML += '<td>' + trips[x].name + '</td>'; + itemsHTML += '<td>' + trips[x].description + '</td>'; + itemsHTML += '<td>' + trips[x].location + '</td>'; + itemsHTML += '<td>' + trips[x].fromDate + ' - ' + trips[x].toDate +'</td>'; + itemsHTML += '<td>' + trips[x].price + ' ' + trips[x].currency + '</td>'; + itemsHTML += '</tr>'; + totalPrice = totalPrice + trips[x].price; + + } else { + var tripItems = trips[x].tripItems; + + for (var i=0; i<tripItems.length; i++) { + itemsHTML += '<tr>'; + itemsHTML += '<td>' + tripItems[i].bookingCode + '</td>'; + itemsHTML += '<td>' + tripItems[i].name + '</td>'; + itemsHTML += '<td>' + tripItems[i].description + '</td>'; + itemsHTML += '<td>' + tripItems[i].location + '</td>'; + itemsHTML += '<td>' + tripItems[i].fromDate + ' - ' + tripItems[i].toDate +'</td>'; + itemsHTML += '<td>' + tripItems[i].price + ' ' + tripItems[i].currency + '</td>'; + itemsHTML += '</tr>'; + totalPrice = totalPrice + tripItems[i].price; + } + } + + itemsHTML += '</table>'; + } + + document.getElementById('cartItems').innerHTML = itemsHTML; + document.getElementById('cartPrice').innerHTML = totalPrice + ' ' + trips[0].currency; + } + + function checkout() { + scaToursCart.checkout(cartId); + + document.getElementById('packagedTripItems').innerHTML = ""; + document.getElementById('bespokeTripItems').innerHTML = ""; + document.getElementById('cartItems').innerHTML = "Thank you for shopping with SCA Tours"; + document.getElementById('cartPrice').innerHTML = ""; + searchResponseItems = null; + tripItems = null; + } + + function purchase() { + } + +</script> + +</head> + +<body onload="init()" background=""> + <img src="scatours.png" border="0" /> + <div id="scatours"> + <form name="searchForm"> + <h3>Search for trips, hotels, flights and cars</h3> + <br/> + <table border="0"> + <tr> + <td>From Location:</td> + <td><input type="text" name="fromLocation" value="LGW"></td> + <td>To Location:</td> + <td><input type="text" name="toLocation" value="FLR"></td> + </tr> + <tr> + <td>Start Date:</td> + <td><input type="text" name="fromDate" value="06/12/09"></td> + <td>End Date:</td> + <td><input type="text" name="toDate" value="13/12/09"></td> + </tr> + <tr> + <td>Number of people:</td> + <td><select name="noOfPeople"> + <option>1 + <option selected>2 + <option>3 + <option>4 + </select></td> + <td/> + <td/> + </tr> + </table> + <br/> + <input type="button" onClick="searchTravelCatalog()" value="Search"> + </form> + <form name="packagedTripForm"> + <div id="packagedTripItems"></div> + </form> + <form name="bespokeTripForm"> + <div id="bespokeTripItems"></div> + </form> + <form name="cartForm"> + <h3>Shopping Cart</h3> + <div id="cartItems"></div> + <br/> + Total Price: <div id="cartPrice"></div> + <br/> + <input type="button" onClick="checkout()" value="Checkout"> + </form> + </div> + +</body> +</html> |