add a CVS Format link to the advanced query page
[monitor.git] / web / MonitorWeb / monitorweb / templates / query.kid
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <?python
3 layout_params['page_title'] = "MyOps Detail View"
4 from monitor.util import diff_time
5 from monitor import config
6 from time import mktime
7 from pcucontrol.reboot import pcu_name, model_to_object
8 from links import *
9 import cherrypy
10 ?>
11 <html py:layout="'sitemenu.kid'"
12       xmlns:py="http://purl.org/kid/ns#"
13           xmlns:mochi="http://www.mochi.org">
14
15   <div py:match="item.tag == 'content'">
16                 <h2>Advanced Search</h2>
17
18 <img id="toggle-image-visible-query" src="/plekit/icons/toggle-visible.png" style="height:18px;" onclick="plc_toggle('query')" />
19 <img id="toggle-image-hidden-query" src="/plekit/icons/toggle-hidden.png" style="height:18px;display:none" onclick="plc_toggle('query')" /> <span style="font-size:2em;">Monitor Query</span>
20
21 <div id="toggle-area-query">
22                 <table>
23                         <tr>
24                                 <td>${queryform.display(method="GET", value=data)}</td>
25                         </tr>
26                 </table>
27 </div>
28
29 <h4>Results</h4>
30     <a href="${link('query', tg_format='plain', **cherrypy.request.params)}">CSV Format</a>
31         <table py:if="fields and len(fields.keys()) > 0" id="querylist" cellpadding="0" border="0" class="plekit_table sortable-onload-0 colstyle-alt no-arrow paginationcallback-querylist_paginator max-pages-10 paginate-999" width="100%">
32         <thead>
33         <tr class='pagesize_area'><td class='pagesize_area' colspan='5'>
34          <form class='pagesize' action='satisfy_xhtml_validator'><fieldset>
35             <input class='pagesize_input' type='text' id="querylist_pagesize" value='50'
36                    onkeyup='plekit_pagesize_set("querylist","querylist_pagesize", 50);' 
37                    size='3' maxlength='3' />                                                          
38             <label class='pagesize_label'> items/page </label>                                     
39             <img class='reset' src="/planetlab/icons/clear.png" alt="reset visible size"           
40                  onmousedown='plekit_pagesize_reset("querylist","querylist_pagesize", 999);' />
41         </fieldset></form></td></tr>                                                                        
42         <tr class='search_area'><td class='search_area' colspan='5'>
43         <div class='search'><fieldset>
44             <label class='search_label'> Search </label>                 
45             <input class='search_input' type='text' id='querylist_search' 
46                    onkeyup='plekit_table_filter("querylist","querylist_search","querylist_search_and");'
47                    size='self.search_width' maxlength='256' />                                            
48             <label>and</label>                                                                        
49             <input id='querylist_search_and' class='search_and'                                        
50                    type='checkbox' checked='checked'                                                      
51                    onchange='plekit_table_filter("querylist","querylist_search","querylist_search_and");' />
52             <img class='reset' src="/planetlab/icons/clear.png" alt="reset search"
53                  onmousedown='plekit_table_filter_reset("querylist","querylist_search","querylist_search_and");' />
54         </fieldset></div></td></tr>
55
56 <tr style="border:0px;">
57   <span py:for="key in sorted(fields.keys())" ><td></td></span>
58 <td style="text-align:right;padding:0.5em;">
59   <span style="display:none" id="values_box_clippy"></span>
60     <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
61             width="110"
62             height="14"
63             id="clippy" >
64       <param name="movie" value="static/flash/clippy.swf?v5"/>
65       <param name="allowScriptAccess" value="always" />
66       <param name="quality" value="high" />
67       <param name="scale" value="noscale" />
68       <param name="bgcolor" value="#FFFFFF" />
69       <param name="FlashVars" value="id=values_box_clippy" />
70         <embed src="static/flash/clippy.swf"
71                width="110"
72                height="14"
73                name="clippy"
74                quality="high"
75                allowScriptAccess="always"
76                type="application/x-shockwave-flash"
77                pluginspage="http://www.macromedia.com/go/getflashplayer"
78                FlashVars="id=values_box_clippy"
79                bgcolor="#FFFFFF"
80                />
81     </object>
82 </td></tr>
83
84                 <!-- for keys show each th -->
85                 <tr>
86                         <span py:for="key in sorted(fields.keys())" >
87                                 <span py:if="key == 'uptime'">
88                                         <th class="sortable-numeric plekit_table">${key}</th>
89                                 </span>
90                                 <span py:if="key != 'uptime'">
91                                         <th class="sortable plekit_table">${key}</th>
92                                 </span>
93                         </span>
94                         <th class="plekit_table"> C </th>
95                 </tr>
96         </thead>
97         <tbody>
98                 <!-- for keys show value -->
99 <?python
100 num = 0
101 ?>
102                 <tr py:for="row in query"  >
103 <?python
104 values = []
105 num += 1
106 checkboxname="checkbox%d" % num
107 ?>
108                         <span py:for="key in sorted(fields.keys())" >
109                                 <td>${row[key]}</td>
110 <?python
111 values.append(str(row[key]))
112 ?>
113                         </span>
114 <?python
115 values = ",".join(values)
116 ?>
117
118                         <td><input type="checkbox" class="clippy_checkbox" name="${checkboxname}" value="${values}" onclick="setup_clippy()"/></td>
119
120                 </tr>
121         </tbody>
122         </table>
123         
124 <script type="text/javascript">
125 var lst = $("querylist");
126 var tbody = lst.getElementsBySelector("tbody")[0];
127 var trs = tbody.getElementsBySelector("tr");
128 if (trs.length > 2) {
129  plc_toggle("query");
130 }
131
132
133 function setup_clippy () {
134 var values = "";
135 var checkboxes = $$$('.clippy_checkbox').each(function(e){if (e.checked == true) {values += e.value + "\n";} });
136 $$$('#values_box_clippy').each(function(e){e.innerHTML=values;});
137 }
138
139 </script>
140
141   </div>
142
143
144 </html>