new poll example SQL queries
[APKPM.git] / templates / user.html.ep
index 81ebbaf..c97731c 100644 (file)
@@ -5,14 +5,20 @@
       var self = this;
    
       this.fetch = function() {
-        if ( ! self.args ) return;
+       self.clear();
+        if ( ! self.args ) {
+               self.message = 'Enter part of username to search';
+               return;
+       }
        self.url = '/g/' + self.function_name + '/' + self.args + '?callback=JSON_CALLBACK';
         $xhr('JSON', self.url, function(code, response) {
           self.code = code;
           self.response = response;
+         self.message = response.length + ' results for <tt>'+self.args+'</tt>';
         });
+       self.message = 'loading '+self.url;
       };
-   
       this.clear = function() {
         self.url = null;
         self.code = null;
@@ -20,6 +26,7 @@
        self.selected_username = null;
        self.gnuplot_sql = null;
        self.ldap = null;
+       self.message = null;
       };
 
        this.columns = [
                        , function(code, response) {
                                console.debug( code, response );
                                self.ldap = response;
-                               self.gnuplot_sql = '/gnuplot?sql=select timestamp,snrtx,attntx,pwrtx,pwrrx,attnrx,snrrx from adsl where username = \'' + response[0].cn + '\'';
+                               self.gnuplot_sql = '/gnuplot?hide=1;with=points;sql=select timestamp,snrtx,attntx,pwrtx,pwrrx,attnrx,snrrx from adsl where username = \'' + response[0].cn + '\' order by timestamp desc limit 100';
+                               self.message = 'generating ADSL graph for '+response[0].cn;
                        }
                );
+               self.message = 'LDAP search for '+self.selected_username;
        };
 
     }
 #columns:hover ul {
        display: block;
 }
+
+table {
+       border-collapse:collapse;
+}
+
+th {
+       border-bottom: 2px solid gray;
+}
+
+th, td {
+       border-left: 1em solid white;
+       border-right: 1em solid white;
+}
+
+.zebra {
+       background: #eee;
+}
+
+#message {
+       padding: 3px;
+       background: #ff8;
+
+       margin-left: 1em;
+       position: fixed;
+}
+
 </style>
 
   <div ng:controller="CRM">
+
    <form ng:submit="fetch()">
     <input type="hidden" name="function_name" value="CRM_search"      size="20"/>
     <label for="args">username:
     <input type="submit" ng:click="fetch()" value="search">
     <input type="reset"  ng:click="clear()" value="clear">
 
-    <b ng:show="url && ! code">loading {{url}}</b>
-    <b ng:show="response">{{response.length}} results for <tt>{{args}}</tt></b>
+    <span id="message" ng:show="message">{{message | html}}</span>
+
    </form>
 
 <div id="columns" ng:show="response">
     <tr>
        <th ng:repeat="c in columns" ng:click="columns.$remove(c)">{{c}}</th>
     </tr>
-    <tr ng:repeat="u in response" ng:click="select(u)">
+    <tr ng:repeat="u in response" ng:click="select(u)" ng:class-even="'zebra'">
        <td ng:repeat="c in columns" ng:show="! selected_username || selected_username == u.USERNAME">{{u[c]}}</td>
     </tr>
     </table>
 
     <input type=checkbox name=debug value=1>
     <pre ng:show=debug>
+message={{message}}
 url={{url}}
 code={{code}}
 response={{response}}
-username={{username}}
     </pre>
   </div>