Pārlūkot izejas kodu

HUE-6859 [index] Support creating collection aliases without page refresh

Romain Rigaux 8 gadi atpakaļ
vecāks
revīzija
5da671d5c5

+ 3 - 2
desktop/libs/indexer/src/indexer/solr_api.py

@@ -149,13 +149,14 @@ def delete_indexes(request):
 def create_alias(request):
   response = {'status': -1}
 
-  alias = request.POST.get('alias', '')
+  name = request.POST.get('name', '')
   collections = json.loads(request.POST.get('collections', '[]'))
 
   client = SolrClient(request.user)
 
-  client.create_alias(alias, collections)
   response['status'] = 0
+  response['response'] = client.create_alias(name, collections)
+  response['alias'] = {'name': name, 'type': 'alias', 'collections': collections, 'isSelected': False}
   response['message'] = _('Alias created or modified!')
 
   return JsonResponse(response)

+ 4 - 0
desktop/libs/indexer/src/indexer/solr_client.py

@@ -107,6 +107,10 @@ class SolrClient(object):
       self._create_non_solr_cloud_index(name, fields, unique_key_field, df)
 
 
+  def create_alias(self, name, collections):
+    return self.api.create_alias(name, collections)
+
+
   def index(self, name, data, content_type='csv', version=None, **kwargs):
     """
     e.g. Parameters: separator = ',', fieldnames = 'a,b,c', header=true, skip 'a,b', encapsulator="

+ 16 - 15
desktop/libs/indexer/src/indexer/templates/indexes.mako

@@ -246,17 +246,12 @@ ${ assist.assistPanel() }
             </div>
           </div>
 
-
         </div>
       </div>
     </div>
   </div>
 
 
-
-
-
-
 </div>
 
 
@@ -442,14 +437,19 @@ ${ assist.assistPanel() }
         });
       });
 
-      self.create = function () {
+      self.create = function () {console.log(vm.indexes());
         $.post("${ url('indexer:create_alias') }", {
-          "alias": self.name,
-          "collections": ko.mapping.toJSON(ko.utils.arrayMap(self.chosenCollections, function (c) {
-            return new c.name();
+          "name": self.name,
+          "collections": ko.mapping.toJSON($.map(self.chosenCollections(), function (collection) {
+            return collection.name();
           }))
-        }, function () {
-          window.location.reload();
+        }, function (data) {
+          if (data.status == 0) {
+            vm.indexes.push(ko.mapping.fromJS(data.alias));
+          } else {
+            $(document).trigger("error", data.message);
+          }
+          $('#createAlias').modal('hide');
         }).fail(function (xhr, textStatus, errorThrown) {
           $(document).trigger("error", xhr.responseText);
         });
@@ -503,11 +503,12 @@ ${ assist.assistPanel() }
       };
 
       self.delete = function () {
+        var indexName = self.name();
         $.post("${ url('indexer:delete_indexes') }", {
-          "indexes": ko.mapping.toJSON([{'name': self.name(), 'type': self.type()}])
+          "indexes": ko.mapping.toJSON([{'name': indexName, 'type': self.type()}])
         }, function (data) {
           if (data.status == 0) {
-            window.location.reload();
+            vm.indexes.remove(function(index) { return index.name() == indexName; });
           } else {
             $(document).trigger("error", data.message);
           }
@@ -534,7 +535,7 @@ ${ assist.assistPanel() }
       self.section = ko.observable('list-indexes');
       self.tab = ko.observable('');
 
-      self.indexes = ko.observable([]);
+      self.indexes = ko.observableArray([]);
       self.alias = new Alias(self);
       self.index = ko.observable();
 
@@ -644,7 +645,7 @@ ${ assist.assistPanel() }
           "indexes": ko.mapping.toJSON(self.selectedIndexes)
         }, function (data) {
           if (data.status == 0) {
-            window.location.reload();
+            self.indexes.removeAll(self.selectedIndexes());
           } else {
             $(document).trigger("error", data.message);
           }