ソースを参照

HUE-7832 [frontend] Extract a global list of available document types

Johan Ahlen 8 年 前
コミット
6beb7fd

+ 6 - 26
desktop/core/src/desktop/static/desktop/js/home2.vm.js

@@ -34,40 +34,20 @@ var HomeViewModel = (function () {
     // self.apiHelper.withTotalStorage('assist', 'assist_panel_visible', self.isLeftPanelVisible, true);
 
     self.serverTypeFilter = ko.observable();
-    self.allDocumentTypes = ko.observableArray();
 
     var initialType = window.location.getParameter('type') !== '' ? window.location.getParameter('type') : 'all';
-    var availableTypes = $.map(HUE_I18n.documentType, function (value, key) {
-      var type = {
-        type: key,
-        label: value
-      };
-      if (initialType === type.type) {
-        self.serverTypeFilter(type);
+
+    DOCUMENT_TYPES.some(function (docType) {
+      if (docType.type === initialType) {
+        self.serverTypeFilter(docType);
+        return true;
       }
-      return type;
     });
 
     if (!self.serverTypeFilter()) {
-      var unknownType = {
-        type: initialType,
-        label: initialType
-      };
-      self.serverTypeFilter(unknownType);
-      availableTypes.push(unknownType);
+      self.serverTypeFilter(DOCUMENT_TYPES[0]);
     }
 
-    availableTypes.sort(function (a, b) {
-      if (a.type === 'all') {
-        return -1;
-      }
-      if (b.type === 'all') {
-        return 1;
-      }
-      return a.label.localeCompare(b.label);
-    });
-    self.allDocumentTypes(availableTypes);
-
     self.activeEntry = ko.observable();
     self.trashEntry = ko.observable();
 

+ 1 - 1
desktop/core/src/desktop/templates/document_browser.mako

@@ -301,7 +301,7 @@ from desktop.views import _ko
                 <div class="doc-browser-action doc-browser-search-container pull-left"><input class="clearable" type="text" placeholder="${ _('Search for name, description, etc...') }" data-bind="hasFocus: searchFocus, textInput: searchQuery, clearable: searchQuery"></div>
                 <!-- /ko -->
                 <!-- ko with: activeEntry -->
-                <div class="doc-browser-action doc-browser-type-filter margin-right-10 pull-left" data-bind="component: { name: 'hue-drop-down', params: { value: serverTypeFilter, entries: $root.allDocumentTypes, linkTitle: '${ _ko('Type filter') }' } }"></div>
+                <div class="doc-browser-action doc-browser-type-filter margin-right-10 pull-left" data-bind="component: { name: 'hue-drop-down', params: { value: serverTypeFilter, entries: DOCUMENT_TYPES, linkTitle: '${ _ko('Type filter') }' } }"></div>
                 <a class="btn margin-right-20" title="${_('Search')}" href="javascript:void(0);" data-bind="tooltip: { placement: 'bottom', delay: 750 }, toggle: $parent.searchVisible, click: function () { $parent.searchFocus($parent.searchVisible()) }, css: { 'blue' : ($parent.searchVisible() || $parent.searchQuery()) }"><i class="fa fa-fw fa-search"></i></a>
                 <!-- ko if: app === 'documents' -->
                 <div class="inline">

+ 10 - 0
desktop/core/src/desktop/templates/global_js_constants.mako

@@ -167,6 +167,16 @@
 
   window.IS_S3_ENABLED = '${ is_s3_enabled }' === 'True';
 
+  var docTypes = [];
+  Object.keys(window.HUE_I18n.documentType).forEach(function (key) {
+    if (key !== 'all') {
+      docTypes.push({ type: key, label: window.HUE_I18n.documentType[key] });
+    }
+  })
+  docTypes.sort(function (a, b) { return a.label.localeCompare(b.label); });
+  docTypes.unshift({ type: 'all', label: window.HUE_I18n.documentType['all'] });
+  window.DOCUMENT_TYPES = docTypes;
+
   window.LEAFLET_DEFAULTS = {
     layer: '${ leaflet['layer'] |n,unicode }',
     attribution: '${ leaflet['attribution'] |n,unicode }',

+ 2 - 2
desktop/core/src/desktop/templates/ko_components/ko_drop_down.mako

@@ -157,10 +157,10 @@ from desktop.views import _ko
         });
         self.filteredEntries = ko.pureComputed(function () {
           if (self.filter() === '' || ! self.filterEdited()) {
-            return self.entries();
+            return ko.unwrap(self.entries);
           } else {
             var lowerFilter = self.filter().toLowerCase();
-            return self.entries().filter(function (database) {
+            return ko.unwrap(self.entries).filter(function (database) {
               return database.toLowerCase().indexOf(lowerFilter) !== -1;
             });
           }