Convert existing AJAX functions to new framework
[infodrom.org/service.infodrom.org] / src / InfoCon / sprit / list.wml
1 #include <infocon.style>
2
3 <future>
4 <page func=InfoCon title="Tankbuch">
5 <calendar_init -5>
6 <popups>
7 <style type="text/css">
8 div#details {
9     width: 270px;
10 }
11 div.bar {
12     background-color: #98c5e5;
13     border-bottom: 1px solid #AAA;
14     font-size: 14px;
15     font-weight: bold;
16 }
17 div.year {
18     float: left;
19 }
20 table.spritlog tbody td {
21     border-bottom: 1px solid #CCC;
22 }
23 table.spritlog thead th {
24     border-bottom: 1px solid #AAA;
25 }
26 table.spritlog tfoot th {
27     border-top: 1px solid #AAA;
28 }
29 table.spritlog tbody tr:hover {
30     background-color: yellow;
31 }
32 </style>
33
34 <div id="details" class="popup" style="margin-top: 5px;display:none;">
35 <div class="popup_title">Bearbeiten</div>
36 <div class="popup_body">
37 <input type="hidden" id="id" name="id" value="">
38 <input type="hidden" id="machine" name="machine">
39 <label for="date">Datum</label>
40 <input type="text" id="date" name="date" size="8">
41 <img class="calendar" src="<root_prefix>pix/calendar.gif" onclick="event.cancelBubble=true;popcalendar('date');">
42
43 <label for="city">Ort</label>
44 <input type="text" id="city" name="city" size="30">
45 <label for="tankstelle">Tankstelle</label>
46 <input type="text" id="tankstelle" name="tankstelle" size="30">
47
48 <label for="price_liter">Preis pro Liter</label>
49 <input type="text" id="price_liter" name="price_liter" size="30">
50
51 <label for="liter">Liter / Preis</label>
52 <input type="text" id="liter" name="liter" size="13">
53 <input type="text" id="price" name="price" size="13">
54
55 <label for="km">Tageskilometer / Gesamt</label>
56 <input type="text" id="km" name="km" size="13">
57 <input type="text" id="km_total" name="km_total" size="13">
58
59 <div style="margin-top: 8px; text-align: center;">
60 <input type="submit" onclick="return log_save()" value="Speichern">
61 &nbsp;&nbsp;&nbsp;
62 <input type="submit" onclick="$('#details').hide();return false" value="Abbrechen">
63 </div>
64  </div>
65 </div>
66
67 <?php
68   $log = new SpritLog();
69   $list = $log->distinctYears();
70   foreach ($list as $row) {
71     echo '<div class="bar">';
72     printf('<div year="%d" class="year">%d</div>', $row->year, $row->year);
73     printf('<div style="float:right;">&euro; %.2f&nbsp;&nbsp;%d km</div>', $row->sum, $row->km);
74     echo '<div style="clear:both;"></div></div>';
75     printf('<div id="list_%d" style="display:none;"></div>', $row->year);
76   }
77   if (count($list)) {
78     $out = <<<EOT
79 <script type="text/javascript">
80 $(function(){
81     load_year({$list[0]->year});
82     $('div.bar').click(toggle_year);
83 });
84 </script>
85 EOT;
86 echo $out;
87   }
88 ?>
89 <div style="height:10px;"></div>
90 </page>
91 <protect><script text="text/javascript">
92 var sprit_machine = <?=intval($_POST['machine'])?>;
93 function log_new()
94 {
95     $('#details input').not('input[type="submit"]').val('');
96     $('input#machine').val(sprit_machine);
97     if ($('#details').css('left') == '0px')
98       $('#details').css('left', ($(window).width()-280)+'px').css('top', '30px');
99     $('#details').show();
100     return false;
101 }
102
103 function log_save()
104 {
105     $.invoke('SpritLog/Add', $('#details input').serialize(), function(data){
106         load_year(data.year);
107         $('#details').hide();
108     });
109
110     return false;
111 }
112
113 function toggle_year(event)
114 {
115     var year = $(this).find('div.year').attr('year');
116
117     if ($('div#list_'+year).is(':visible'))
118         $('div#list_'+year).hide();
119     else
120         load_year(year);
121 }
122
123 function load_year(year)
124 {
125     $('div#list_'+year).show();
126     $.invoke('SpritLog/List', {year: year});
127 }
128 </script></protect>