[TIC-Web] fix to filter option 11/120811/4
authorChangHyun Lee <leechwin.lee@samsung.com>
Fri, 24 Mar 2017 08:56:01 +0000 (17:56 +0900)
committerChangHyun Lee <leechwin.lee@samsung.com>
Mon, 27 Mar 2017 01:57:23 +0000 (10:57 +0900)
add filter option
- show all pacakge
- hide debug package
- hide develop package

Change-Id: Ib66464c8479e35a5c2536760411a8c660d090d03
Signed-off-by: ChangHyun Lee <leechwin.lee@samsung.com>
public/src/index.html
public/src/js/page/package.js

index cd610f4..618236c 100644 (file)
                                                 <i class="fa fa-navicon"></i>
                                             </button>
                                             <ul class="dropdown-menu dropdown-menu-right">
-                                                <li><a id="tic-package-toolbar-all">All</a></li>
-                                                <li><a id="tic-package-toolbar-debug">Debug</a></li>
-                                                <li><a id="tic-package-toolbar-devel">Devel</a></li>
+                                                <li><a href="#" tabIndex="-1"><input type="checkbox" id="tic-package-toolbar-debug"/> Hide Debug Packages</a></li>
+                                                <li><a href="#" tabIndex="-1"><input type="checkbox" id="tic-package-toolbar-devel"/> Hide Develop Packages</a></li>
                                             </ul>
                                             <button type="button" class="btn btn-default" id="tic-package-left-col-tree-toolbar-collapse-all">
                                                 <i class="fa fa-minus"></i>
index df2dbf4..831ece7 100644 (file)
@@ -22,6 +22,7 @@ define([
     var logger = Logger('package.js');
 
     var $tree = $('#tic-package-left-col-tree');
+    var defaultFilters = [];
     var repos = [];
     var packages = [];
     var pkgInfo = null;
@@ -1103,52 +1104,90 @@ define([
         // button - image creation
         $('#tic-package-create').on('click', onClickHandlerForImgCreationBtn);
 
-        function _filter(text) {
-            var matchNodes = $tree.treeview('search', [ text, {
-                ignoreCase: true,     // case insensitive
-                exactMatch: false,    // like or equals
-                revealResults: true,  // reveal matching nodes
-            }]);
+        function _filter(patternList) {
+            var matchNodes = [];
+            _.forEach(patternList, function (pattern) {
+                if (!_.isEmpty(_.trim(pattern))) {
+                    var nodes = $tree.treeview('search', [ pattern, {
+                        ignoreCase: true,     // case insensitive
+                        exactMatch: false,    // like or equals
+                        revealResults: true,  // reveal matching nodes
+                    }]);
+                    matchNodes = _.union(matchNodes, nodes);
+                }
+            })
+
+            var filterNodes = [];
+            _.forEach(defaultFilters, function (pattern) {
+                if (!_.isEmpty(_.trim(pattern))) {
+                    var nodes = $tree.treeview('search', [ pattern, {
+                        ignoreCase: true,     // case insensitive
+                        exactMatch: false,    // like or equals
+                        revealResults: true,  // reveal matching nodes
+                    }]);
+                    filterNodes = _.union(filterNodes, nodes);
+                }
+            })
 
             _.forEach(packages, function (node) {
                 node.$el.hide();
             });
+
             if (!_.isEmpty(matchNodes)) {
                 _.forEach(matchNodes, function (node) {
                     node.$el.show();
                 });
             } else {
-                if (_.isEmpty(text)) {
+                // empty input text
+                if (_.isEmpty(_.trim(_.take(patternList)))) {
                     _.forEach(packages, function (node) {
                         node.$el.show();
                     });
                 }
             }
+
+            _.forEach(filterNodes, function (node) {
+                node.$el.hide();
+            });
+            $tree.treeview('clearSearch');
         }
 
         function _filterInput() {
             var filterText = $('#tic-package-toolbar-input').val();
-            _filter(filterText);
+            _filter([filterText]);
             $('#tic-package-toolbar-input-clear').toggleClass('hidden', _.isEmpty(filterText));
         }
         $('#tic-package-toolbar-input').on('keyup', _.debounce(_filterInput, 500));
 
-        function _filterAll() {
-            _filter('');
-        }
-        $('#tic-package-toolbar-all').on('click', _filterAll);
-        function _filterDebug() {
-            _filter('debug');
-        }
-        $('#tic-package-toolbar-debug').on('click', _filterDebug);
-        function _filterDevel() {
-            _filter('devel');
+        function _filterType() {
+            var debug = $('#tic-package-toolbar-debug').is(':checked');
+            if (debug) {
+                if (!_.includes(defaultFilters, '-debug')) {
+                    defaultFilters.push('-debug');
+                }
+            } else {
+                _.remove(defaultFilters, function(filter) {
+                    return filter === '-debug';
+                });
+            }
+            var devel = $('#tic-package-toolbar-devel').is(':checked');
+            if (devel) {
+                if (!_.includes(defaultFilters, '-devel')) {
+                    defaultFilters.push('-devel');
+                }
+            } else {
+                _.remove(defaultFilters, function(filter) {
+                    return filter === '-devel';
+                });
+            }
+            _filter([$('#tic-package-toolbar-input').val()]);
         }
-        $('#tic-package-toolbar-devel').on('click', _filterDevel);
+        $("#tic-package-toolbar-debug").on('click', _filterType);
+        $("#tic-package-toolbar-devel").on('click', _filterType);
 
         function _inputClearBtnHandler() {
             $('#tic-package-toolbar-input').val('').focus();
-            _filter('');
+            _filter([]);
             $(this).toggleClass('hidden', true);
         }
         $('#tic-package-toolbar-input-clear').on('click', _inputClearBtnHandler);