瀏覽代碼

HUE-5792 [search] Ko-ify creating a new dashboard

Romain Rigaux 8 年之前
父節點
當前提交
1aa4912

+ 1 - 1
apps/search/src/search/static/search/js/search.ko.js

@@ -691,7 +691,7 @@ var Collection = function (vm, collection) {
 
       // TODO Reload QueryResult
       facet.queryResult = ko.observable(new QueryResult(self, {
-         type: self.engine(),
+        type: self.engine(),
       }));
     }
   }

+ 10 - 1
apps/search/src/search/templates/common_search.mako

@@ -75,7 +75,7 @@ from desktop.views import commonheader, commonfooter, _ko
 
     <span data-bind="visible: columns().length != 0">&nbsp;&nbsp;&nbsp;</span>
 
-    <a class="btn" href="${ url('search:new_search') }" title="${ _('New') }" rel="tooltip" data-placement="bottom" data-bind="css: {'btn': true}">
+    <a class="btn" href="javascript:void(0)" title="${ _('New') }" rel="tooltip" data-placement="bottom" data-bind="css: {'btn': true}, click: newSearch">
       <i class="fa fa-file-o"></i>
     </a>
     <a class="btn" href="${ url('search:admin_collections') }" title="${ _('Dashboards') }" rel="tooltip" data-placement="bottom" data-bind="css: {'btn': true}">
@@ -3585,6 +3585,15 @@ $(document).ready(function () {
     checkAutoRefresh();
   });
 
+  function newSearch() {
+    ko.cleanNode($('#searchComponents')[0]);
+    viewModel = new SearchViewModel(${ collection.get_json(user) | n,unicode }, _query, ${ initial | n,unicode });
+    ko.applyBindings(viewModel, $('#searchComponents')[0]);
+    viewModel.init();
+    
+    viewModel.search();
+  }
+
   $("#addFacetDemiModal").on("hidden", function () {
     if (typeof selectedWidget.hasBeenSelected == "undefined"){
       addFacetDemiModalFieldCancel();

+ 14 - 11
apps/search/src/search/views.py

@@ -41,6 +41,18 @@ from django.core.urlresolvers import reverse
 LOG = logging.getLogger(__name__)
 
 
+DEFAULT_LAYOUT = [
+     {"size":2,"rows":[{"widgets":[]}],"drops":["temp"],"klass":"card card-home card-column span2"},
+     {"size":10,"rows":[{"widgets":[
+         {"size":12,"name":"Filter Bar","widgetType":"filter-widget", "id":"99923aef-b233-9420-96c6-15d48293532b",
+          "properties":{},"offset":0,"isLoading":True,"klass":"card card-widget span12"}]},
+                        {"widgets":[
+         {"size":12,"name":"Grid Results","widgetType":"resultset-widget", "id":"14023aef-b233-9420-96c6-15d48293532b",
+          "properties":{},"offset":0,"isLoading":True,"klass":"card card-widget span12"}]}],
+        "drops":["temp"],"klass":"card card-home card-column span10"},
+]
+
+
 def index(request, is_mobile=False, is_embeddable=False):
   hue_collections = SearchController(request.user).get_search_collections()
   collection_id = request.GET.get('collection')
@@ -75,7 +87,7 @@ def index(request, is_mobile=False, is_embeddable=False):
   return render(template, request, {
     'collection': collection,
     'query': json.dumps(query),
-    'initial': json.dumps({'collections': [], 'layout': [], 'is_latest': LATEST.get(),
+    'initial': json.dumps({'collections': [], 'layout': DEFAULT_LAYOUT, 'is_latest': LATEST.get(),
         'engines': get_engines(request.user)
     }),
     'is_owner': collection_doc.doc.get().can_write(request.user),
@@ -107,16 +119,7 @@ def new_search(request, is_embeddable=False):
     'query': query,
     'initial': json.dumps({
          'collections': collections,
-         'layout': [
-              {"size":2,"rows":[{"widgets":[]}],"drops":["temp"],"klass":"card card-home card-column span2"},
-              {"size":10,"rows":[{"widgets":[
-                  {"size":12,"name":"Filter Bar","widgetType":"filter-widget", "id":"99923aef-b233-9420-96c6-15d48293532b",
-                   "properties":{},"offset":0,"isLoading":True,"klass":"card card-widget span12"}]},
-                                 {"widgets":[
-                  {"size":12,"name":"Grid Results","widgetType":"resultset-widget", "id":"14023aef-b233-9420-96c6-15d48293532b",
-                   "properties":{},"offset":0,"isLoading":True,"klass":"card card-widget span12"}]}],
-                 "drops":["temp"],"klass":"card card-home card-column span10"},
-         ],
+         'layout': DEFAULT_LAYOUT,
          'is_latest': LATEST.get(),
          'engines': get_engines(request.user)
      }),