Quellcode durchsuchen

[impala] Edit facet properties

Romain Rigaux vor 11 Jahren
Ursprung
Commit
99e856ef68

+ 4 - 0
apps/impala/src/impala/templates/dashboard.mako

@@ -100,6 +100,10 @@ ${ dashboard.layout_skeleton() }
 <script type="text/html" id="pie-widget">
 <script type="text/html" id="pie-widget">
   <!-- ko if: $root.getFacetFromResult(id()) -->
   <!-- ko if: $root.getFacetFromResult(id()) -->
   <div class="row-fluid" data-bind="with: $root.getFacetFromResult(id())">
   <div class="row-fluid" data-bind="with: $root.getFacetFromResult(id())">
+    <div data-bind="visible: $root.isEditing, with: $root.dashboard.getFacetById ($parent.id())" style="margin-bottom: 20px">
+      <input type="text" data-bind="value: properties.limit"></input>
+    </div>
+  
     <span data-bind="foreach: data()">
     <span data-bind="foreach: data()">
       <span data-bind="text: $data"></span>
       <span data-bind="text: $data"></span>
     </span>
     </span>

+ 7 - 5
apps/impala/src/impala/views.py

@@ -44,8 +44,9 @@ def dashboard(request):
                    "properties":{},"offset":0,"isLoading":True,"klass":"card card-widget span12"}]}],
                    "properties":{},"offset":0,"isLoading":True,"klass":"card card-widget span12"}]}],
               "drops":["temp"],"klass":"card card-home card-column span10"}
               "drops":["temp"],"klass":"card card-home card-column span10"}
          ],
          ],
-        'facets': [{'id': '52f07188-f30f-1296-2450-f77e02e1a5c1', 'label': 'aa', 'field': 'salary', 'widget_type': 'pie'}],
-        'properties': [{'database': 'default', 'table': 'sample_07'}]
+        'facets': [{'id': '52f07188-f30f-1296-2450-f77e02e1a5c1', 'label': 'Top salaries', 'field': 'salary', 'widget_type': 'pie', 
+                    'properties': {'limit': 10}}],
+        'properties': {'database': 'default', 'table': 'sample_07'}
         }), 
         }), 
                                             # type: MAX, / ORDER BY, LIMIT 100
                                             # type: MAX, / ORDER BY, LIMIT 100
   })
   })
@@ -58,10 +59,11 @@ def query(request):
   }
   }
     
     
   if 'facet' in request.POST: 
   if 'facet' in request.POST: 
+    facet = json.loads(request.POST['facet'])
     database = 'default'
     database = 'default'
-    table = 'sample_07'    
-    hql = "SELECT salary FROM %s.%s WHERE salary IS NOT NULL ORDER BY salary DESC LIMIT 10" % (database, table,)
-    result['id'] = json.loads(request.POST['facet'])['id']
+    table = 'sample_07'  
+    hql = "SELECT salary FROM %s.%s WHERE salary IS NOT NULL ORDER BY salary DESC LIMIT %s" % (database, table, facet['properties']['limit'])
+    result['id'] = facet['id']
   else:
   else:
     database = 'default'
     database = 'default'
     table = 'sample_07'    
     table = 'sample_07'    

+ 21 - 8
apps/impala/static/js/search.ko.js

@@ -65,6 +65,17 @@ var Dashboard = function (vm, dashboard) {
   self.addFacet = function(data) {
   self.addFacet = function(data) {
     
     
   }
   }
+  
+  self.getFacetById = function (facet_id) {
+    var _facet = null;
+    $.each(self.facets(), function (index, facet) {
+      if (facet.id == facet_id) {
+        _facet = facet;
+        return false;
+      }
+    });
+    return _facet;
+  }   
 }
 }
 
 
 var TestViewModel = function (query_json, dashboard_json) {
 var TestViewModel = function (query_json, dashboard_json) {
@@ -84,18 +95,18 @@ var TestViewModel = function (query_json, dashboard_json) {
     self.results_facet = ko.observableArray([]);
     self.results_facet = ko.observableArray([]);
 
 
     self.search = function (callback) {
     self.search = function (callback) {
-    	self.results.removeAll();
+      self.results.removeAll();
     	
     	
-    	var multiQs = $.map(self.dashboard.facets(), function(facet) {
+      var multiQs = $.map(self.dashboard.facets(), function(facet) {
             return $.post("/impala/query", {
             return $.post("/impala/query", {
                 "query": ko.mapping.toJSON(self.query),
                 "query": ko.mapping.toJSON(self.query),
                 "dashboard": ko.mapping.toJSON(self.dashboard),
                 "dashboard": ko.mapping.toJSON(self.dashboard),
                 "layout": ko.mapping.toJSON(self.columns),
                 "layout": ko.mapping.toJSON(self.columns),
                 "facet": ko.mapping.toJSON(facet),
                 "facet": ko.mapping.toJSON(facet),
               }, function (data) {return data});
               }, function (data) {return data});
-          });    	
+      });    	
     	
     	
-    	$.when.apply($, [
+      $.when.apply($, [
           $.post("/impala/query", {
           $.post("/impala/query", {
             "query": ko.mapping.toJSON(self.query),
             "query": ko.mapping.toJSON(self.query),
             "dashboard": ko.mapping.toJSON(self.dashboard),
             "dashboard": ko.mapping.toJSON(self.dashboard),
@@ -110,8 +121,8 @@ var TestViewModel = function (query_json, dashboard_json) {
               }
               }
             })
             })
           ].concat(multiQs)
           ].concat(multiQs)
-        )
-        .done(function() {
+      )
+      .done(function() {
           if (arguments.length > 1) { // If multi queries
           if (arguments.length > 1) { // If multi queries
             for (var i = 1; i < arguments.length; i++) {
             for (var i = 1; i < arguments.length; i++) {
               var facet = arguments[i][0];
               var facet = arguments[i][0];
@@ -120,13 +131,15 @@ var TestViewModel = function (query_json, dashboard_json) {
             }
             }
           }
           }
         })
         })
-        .fail(function (xhr, textStatus, errorThrown) {});
+      .fail(function (xhr, textStatus, errorThrown) {
+    	  $(document).trigger("error", data.message);
+       });
     };
     };
 
 
     function removeFrom(collection, item_id) {
     function removeFrom(collection, item_id) {
       $.each(collection(), function (index, item) {
       $.each(collection(), function (index, item) {
         if (item.id() == item_id) {
         if (item.id() == item_id) {
-          self.collection.remove(item);
+          collection.remove(item);
           return false;
           return false;
         }
         }
       });
       });