[TIC-Web] fix multi-selection bug 64/111664/1
authorChulwoo Shin <cw1.shin@samsung.com>
Mon, 23 Jan 2017 18:06:04 +0000 (03:06 +0900)
committerChulwoo Shin <cw1.shin@samsung.com>
Mon, 23 Jan 2017 18:06:04 +0000 (03:06 +0900)
Fixed a multi-selection bug

Change-Id: I46288455651ca4566fc75afe678dadf5f3db4bfe
Signed-off-by: Chulwoo Shin <cw1.shin@samsung.com>
public/src/js/page/package.js

index 27885c2..db9850b 100644 (file)
@@ -54,6 +54,8 @@ define([
             _.forEach(value.view, function(node) {
                 nodes.push(node);
             });
+            // update local state
+            value.checked = true;
         });
 
         $tree.treeview('checkNode', [nodes, { silent: true }]);
@@ -572,7 +574,12 @@ define([
     function _onNodeChecked(event, node) {
         var startTS = performance.now();
         var localNode = _find(node.text);
-        if (localNode.view[0].state.checked === true) {
+
+        if (_.isEmpty(localNode)){
+            // MISC is virtual pacakge.
+            return;
+        }
+        if (localNode.checked === true) {
             $tree.treeview('uncheckNode', [node, { silent: false }]);
             return;
         }
@@ -581,7 +588,6 @@ define([
 
         _nodeSelected(event, node);
         localNode.selfChecked = true;
-        localNode.view[0].state.checked = true;
 
         // analyze install-dependency (requires)
         var depPkg = _analyzeInstallDependency(localNode)
@@ -596,6 +602,9 @@ define([
         var toggleNode = [];
         if (!_.isEmpty(depPkg)) {
             _.forEach(depPkg, function(value, key) {
+                // update local data
+                value.checked = true;
+                // update treeview data
                 _.forEach(value.view, function(node) {
                     if (node.state.checked === false) {
                         toggleNode.push(node);
@@ -604,10 +613,6 @@ define([
             });
 
             $tree.treeview('checkNode', [toggleNode, { silent: true }]);
-            // update local data
-            _.forEach(toggleNode, function(node) {
-                node.state.checked = true;
-            });
             _updateSummary();
 
             var endTS = performance.now();
@@ -623,7 +628,12 @@ define([
     function _onNodeUnchecked(event, node) {
         var startTS = performance.now();
         var localNode = _find(node.text);
-        if (localNode.view[0].state.checked === false) {
+
+        if (_.isEmpty(localNode)){
+            // MISC is virtual pacakge.
+            return;
+        }
+        if (localNode.checked === false) {
             $tree.treeview('checkNode', [node, { silent: false }]);
             return;
         }
@@ -642,6 +652,9 @@ define([
         var toggleNode = [];
         if (!_.isEmpty(uncheckPkgs)) {
             _.forEach(uncheckPkgs, function(value, key) {
+                // update local data
+                value.checked = false;
+                // update treeview data
                 _.forEach(value.view, function(node) {
                     if (node.state.checked === true) {
                         toggleNode.push(node);
@@ -650,12 +663,6 @@ define([
             });
 
             $tree.treeview('uncheckNode', [toggleNode, { silent: true }]);
-            // update local data
-            _.forEach(toggleNode, function(node) {
-                node.state.checked = false;
-            });
-
-            //node.state.checked = false;
             localNode.selfChecked = false;
             _updateSummary();
         } else {
@@ -663,7 +670,6 @@ define([
 
             // selected node change to check state
             $tree.treeview('checkNode', [[node], { silent: true }]);
-            node.state.checked = true;
         }
 
         var endTS = performance.now();