File: index.html

package info (click to toggle)
libnb-platform18-java 12.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 729,800 kB
  • sloc: java: 5,059,097; xml: 574,432; php: 78,788; javascript: 29,039; ansic: 10,278; sh: 6,386; cpp: 4,612; jsp: 3,643; sql: 1,097; makefile: 540; objc: 288; perl: 277; haskell: 93
file content (84 lines) | stat: -rw-r--r-- 3,467 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="style.css" type="text/css"/>

        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="js/libs/knockout-2.2.1/knockout-min.js"></script>
        <script>
            function init() {
                // Class to represent a row in the seat reservations grid
                function SeatReservation(name, initialMeal) {
                    var self = this;
                    self.name = name;
                    self.meal = ko.observable(initialMeal);

                    self.formattedPrice = ko.computed(function() {
                        var price = self.meal().price;
                        return price ? "$" + price.toFixed(2) : "None";
                    });
                }

                // Overall viewmodel for this screen, along with initial state
                function ReservationsViewModel() {
                    var self = this;

                    // Non-editable catalog data - would come from the server
                    self.availableMeals = [
                        {mealName: "Standard (sandwich)", price: 0},
                        {mealName: "Premium (lobster)", price: 34.95},
                        {mealName: "Ultimate (whole zebra)", price: 290}
                    ];

                    // Editable data
                    self.seats = ko.observableArray([
                        new SeatReservation("Steve", self.availableMeals[0]),
                        new SeatReservation("Bert", self.availableMeals[0])
                    ]);

                    // Operations
                    self.addSeat = function() {
                        self.seats.push(new SeatReservation("", self.availableMeals[0]));
                    }

                    self.removeSeat = function(seat) {
                        self.seats.remove(seat)
                    }

                    self.totalSurcharge = ko.computed(function() {
                        var total = 0;
                        for (var i = 0; i < self.seats().length; i++)
                            total += self.seats()[i].meal().price;
                        return total;
                    });
                }

                ko.applyBindings(new ReservationsViewModel());
            }
        </script>
    </head>
    <body onload="init();">
        <h2>Your seat reservations</h2>
        <table>
            <thead>
                <tr>
                    <th>Passenger name</th><th>Meal</th><th>Surcharge</th><th></th>
                </tr>
            </thead>
            <tbody data-bind="foreach: seats">
                <tr>
                    <td><input data-bind="value: name" /></td>
                    <td><select data-bind="options: $root.availableMeals, value: meal, optionsText: 'mealName'"></select></td>
                    <td data-bind="text: formattedPrice"></td>
                    <td><a href="#" data-bind="click: $root.removeSeat">Remove</a></td>
                </tr>
            </tbody>
        </table>
        <button data-bind="click: addSeat, enable: seats().length < 5">Reserve another seat</button>
        <h2>Your seat reservations (<span data-bind="text: seats().length"></span>)</h2>
        <h3 data-bind="visible: totalSurcharge() > 0">
            Total surcharge: $<span data-bind="text: totalSurcharge().toFixed(2)"></span>
        </h3>
    </body>
</html>