Преглед на файлове

[impala] Select the field from dropdown when creating a facet

Romain Rigaux преди 11 години
родител
ревизия
f3ceadd
променени са 3 файла, в които са добавени 20 реда и са изтрити 18 реда
  1. 12 5
      apps/impala/src/impala/templates/dashboard.mako
  2. 5 8
      apps/impala/src/impala/views.py
  3. 3 5
      apps/impala/static/js/impala-dashboard.ko.js

+ 12 - 5
apps/impala/src/impala/templates/dashboard.mako

@@ -157,6 +157,16 @@ ${ dashboard.layout_skeleton() }
 </script>
 
 
+<script type="text/html" id="select-field">
+  <!-- ko ifnot: $root.getFacetFromResult(id()) -->
+    <select data-bind="options: $root.dashboard.fieldNames, value: $root.dashboard.selectedNewFacetField"></select>
+    <a href="javascript:void(0)" data-bind="click: $root.dashboard.addFacet">      
+      <i class="fa fa-plus"></i>
+    </a>
+  <!-- /ko -->  
+</script>
+
+
 <script type="text/html" id="facet-widget">
   <!-- ko if: $root.getFacetFromResult(id()) -->
   <div class="row-fluid" data-bind="with: $root.getFacetFromResult(id())">
@@ -172,11 +182,8 @@ ${ dashboard.layout_skeleton() }
     </span>
   </div>
   <!-- /ko -->
-  <!-- ko ifnot: $root.getFacetFromResult(id()) -->
-    <a href="javascript:void(0)" data-bind="click: $root.dashboard.addFacet">
-      <i class="fa fa-plus"></i>
-    </a>
-  <!-- /ko -->
+  
+  <span data-bind="template: { name: 'select-field' }"></span>
 </script>
 
 

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

@@ -48,7 +48,6 @@ def dashboard(request):
                     'properties': {'limit': 10}}],
         'properties': [{'database': 'default', 'table': 'sample_07'}]
         }), 
-                                            # type: MAX, / ORDER BY, LIMIT 100
   })
 
 
@@ -95,16 +94,14 @@ def new_facet(request):
   try:
     dashboard = json.loads(request.POST.get('dashboard', '{}')) # Perms
     facet_json = json.loads(request.POST.get('facet_json', '{}'))
-    
-
-#    facet_id = request.POST['id']
-#    facet_label = request.POST['label']
-#    facet_field = request.POST['field']
-#    widget_type = request.POST['widget_type']
+    facet_field = request.POST['field']
 
     result['message'] = ''
     result['facet'] =  {
-        'id': facet_json['id'], 'label': 'Top salaries', 'field': 'total_emp', 'widget_type': facet_json['widgetType'], 
+        'id': facet_json['id'],
+        'label': facet_field,
+        'field': facet_field,
+        'widget_type': facet_json['widgetType'], 
         'properties': {'limit': 10}
     }
     result['status'] = 0

+ 3 - 5
apps/impala/static/js/impala-dashboard.ko.js

@@ -101,19 +101,17 @@ var Dashboard = function (vm, dashboard) {
   self.facets = ko.mapping.fromJS(dashboard.facets);
   self.properties = ko.observable(dashboard.properties);
   
-  self.fields = ko.mapping.fromJS([{'name': 'code', 'name': 'description', 'name': 'total_emp', 'name': 'salary'}]);
+  self.fields = ko.mapping.fromJS([{'name': 'code'}, {'name': 'description'}, {'name': 'total_emp'}, {'name': 'salary'}]);
   self.fieldNames = ko.computed(function () {
 	return $.map(self.fields(), function (field) { return field.name()});
   });
+  self.selectedNewFacetField = ko.observable();
   
   self.addFacet = function(facet_json) {
    $.post("/impala/dashboard/new_facet", {
        "dashboard": ko.mapping.toJSON(self),
        "facet_json": ko.mapping.toJSON(facet_json),
-       //"id": facet_json.widget_id,
-       //"label": facet_json.name,
-       //"field": facet_json.name,
-       //"widget_type": facet_json.widgetType
+       "field": self.selectedNewFacetField(),
      }, function (data) {
        if (data.status == 0) {
          var facet = ko.mapping.fromJS(data.facet);