ATLAS-385 Support for Lineage for entities with SuperType as DataSet (anilsg via sumasai)
diff --git a/dashboard/public/css/lineage.css b/dashboard/public/css/lineage.css
index d700e34..180bebf 100644
--- a/dashboard/public/css/lineage.css
+++ b/dashboard/public/css/lineage.css
@@ -86,4 +86,5 @@
 .alignLineage{
     text-align: center;
     margin-top: 100px;
+    font-size: 24px;
 }
diff --git a/dashboard/public/modules/details/detailsController.js b/dashboard/public/modules/details/detailsController.js
index c03824c..cc6bb2d 100644
--- a/dashboard/public/modules/details/detailsController.js
+++ b/dashboard/public/modules/details/detailsController.js
@@ -22,14 +22,14 @@
 
         $scope.tableName = false;
         $scope.isTable = false;
-
+        $scope.isLineage = false;
+        
         DetailsResource.get({
             id: $stateParams.id
 
         }, function(data) {
             $scope.details = data;
             $scope.tableName = data.values.name;
-            $scope.isTable = (typeof data.typeName !== 'undefined' && data.typeName.toLowerCase().indexOf('table') !== -1) ? true : false;
             $scope.onActivate('io');
             $scope.isTags = (typeof data.traits !== 'undefined' && typeof data.traits === 'object') ? true : false;
 
@@ -56,6 +56,9 @@
             }
         });
 
+        $scope.$on('show_lineage', function() {
+            $scope.isLineage = true;
+        });
 
         $scope.isNumber = angular.isNumber;
         $scope.isObject = angular.isObject;
@@ -64,7 +67,8 @@
         $scope.onActivate = function tabActivate(tabname) {
             $scope.$broadcast('render-lineage', {
                 type: tabname,
-                tableName: $scope.tableName
+                tableName: $scope.tableName,
+                guid : $stateParams.id
             });
         };
 
diff --git a/dashboard/public/modules/details/views/details.html b/dashboard/public/modules/details/views/details.html
index 0878308..c84aeb2 100644
--- a/dashboard/public/modules/details/views/details.html
+++ b/dashboard/public/modules/details/views/details.html
@@ -28,7 +28,7 @@
             <h4 ng-if="details.values && details.values.name && details.values.name != ''">
             <b>Name:</b> <span class="black">{{details.values.name}}</span></h2>
             <h4 ng-if="details.values && details.values.description && details.values.description != ''"><b>Description:</b> <span class="black">{{details.values.description}}</span></h4>
-            <h4 data-ng-show="isTable" data-disable="!tableName" data-select="onActivate('io')">
+            <h4 data-disable="!tableName" data-select="onActivate('io')" id="lineageGraph" class="hide">
                 <span class="lineage">Lineage</span> 
                 <ng-include data-table-type="io" src="'/modules/lineage/views/lineage_io.html'"/>
             </h4>
diff --git a/dashboard/public/modules/lineage/lineage_ioController.js b/dashboard/public/modules/lineage/lineage_ioController.js
index e7b2734..bb8fcec 100644
--- a/dashboard/public/modules/lineage/lineage_ioController.js
+++ b/dashboard/public/modules/lineage/lineage_ioController.js
@@ -39,51 +39,64 @@
             LineageResource.get({
                 tableName: tableData.tableName,
                 type: 'outputs'
-            }, function lineageSuccess(response1) {
+            }).$promise.then(
+                function lineageSuccess(response1) {
+                  //  $scope.$emit('show_lineage');
+                  $('#lineageGraph').removeClass('hide');
+                    LineageResource.get({
+                        tableName: tableData.tableName,
+                        type: 'inputs'
+                    }).$promise.then(
+                        //success
+                        function lineageSuccess(response) {
+                            if (response && response.results) {
+                                response.results.values.edges = inVertObj(response.results.values.edges);
 
-                LineageResource.get({
-                    tableName: tableData.tableName,
-                    type: 'inputs'
-                }, function lineageSuccess(response) {
-                    response.results.values.edges = inVertObj(response.results.values.edges);
-
-                    angular.forEach(response.results.values.edges, function(value, key) {
-                        angular.forEach(response1.results.values.edges, function(value1, key1) {
-                            if (key === key1) {
-                                var array1 = value;
-                                angular.forEach(value1, function(value2) {
-                                    array1.push(value2);
+                                angular.forEach(response.results.values.edges, function(value, key) {
+                                    angular.forEach(response1.results.values.edges, function(value1, key1) {
+                                        if (key === key1) {
+                                            var array1 = value;
+                                            angular.forEach(value1, function(value2) {
+                                                array1.push(value2);
+                                            });
+                                            response.results.values.edges[key] = array1;
+                                            response1.results.values.edges[key] = array1;
+                                        }
+                                    });
                                 });
-                                response.results.values.edges[key] = array1;
-                                response1.results.values.edges[key] = array1;
-                            }
-                        });
-                    });
 
-                    angular.extend(response.results.values.edges, response1.results.values.edges);
-                    angular.extend(response.results.values.vertices, response1.results.values.vertices);
+                                angular.extend(response.results.values.edges, response1.results.values.edges);
+                                angular.extend(response.results.values.vertices, response1.results.values.vertices);
 
-                    if (!_.isEmpty(response.results.values.vertices)) {
-                        loadProcess(response.results.values.edges, response.results.values.vertices)
-                            .then(function(res) {
-                                guidsList = res;
+                                if (!_.isEmpty(response.results.values.vertices)) {
+                                    loadProcess(response.results.values.edges, response.results.values.vertices)
+                                        .then(function(res) {
+                                            guidsList = res;
 
-                                $scope.lineageData = transformData(response.results);
+                                            $scope.lineageData = transformData(response.results);
 
-                                if (callRender) {
-                                    render();
+                                            if (callRender) {
+                                                render();
+                                            }
+                                        });
+                                } else {
+                                    $scope.requested = false;
                                 }
-                            });
-                    } else {
-                        $scope.requested = false;
-                    }
-                });
-
-            });
-
+                            } else {
+                                $scope.requested = false;
+                            }
+                        },
+                        function() {
+                            $scope.requested = false;
+                        }
+                    );
+                },
+                function() {
+                    $scope.requested = false;
+                }
+            );
         }
 
-
         function loadProcess(edges, vertices) {
 
             var urlCalls = [];
@@ -141,6 +154,7 @@
                     render();
                 }
             }
+            $scope.guid = lineageData.guid;
         });
 
         function transformData(metaData) {
@@ -157,11 +171,11 @@
                     var loadProcess = getLoadProcessTypes(guid);
                     if (typeof loadProcess !== "undefined") {
                         name = loadProcess.name;
-                        type = loadProcess.typeName;
+                        type = 'edges';
                         tip = loadProcess.tip;
                     } else {
                         name = 'Load Process';
-                        type = 'Load Process';
+                        type = 'edges';
                     }
                 }
                 var vertex = {
@@ -433,29 +447,6 @@
                 zoomListener.scale(scale);
                 zoomListener.translate([x, y]);
             }
-
-            // Toggle children function
-
-            // function toggleChildren(d) {
-            //     if (d.children) {
-            //         d._children = d.children;
-            //         d.children = null;
-            //     } else if (d._children) {
-            //         d.children = d._children;
-            //         d._children = null;
-            //     }
-            //     return d;
-            // }
-
-            // Toggle children on click.
-
-            // function click(d) {
-            //     if (d3.event.defaultPrevented) return; // click suppressed
-            //     d = toggleChildren(d);
-            //     update(d);
-            //     //centerNode(d);
-            // }
-
             //arrow
             baseSvg.append("svg:defs")
                 .append("svg:marker")
@@ -568,10 +559,10 @@
                 nodeEnter.append("image")
                     .attr("class", "nodeImage")
                     .attr("xlink:href", function(d) {
-                        return d.type === 'Table' ? '../img/tableicon.png' : '../img/process.png';
+                        return (d.type && d.type !== '' && d.type.toLowerCase().indexOf('edges') !== -1) ? '../img/process.png' : '../img/tableicon.png';
                     })
                     .on('mouseover', function(d) {
-                        if (d.type === 'LoadProcess' || 'Table') {
+                        if (d.type === 'edges' || 'Table') {
                             tooltip.show(d);
                         }
                     })
@@ -623,18 +614,6 @@
                         return nameDis;
                     });
 
-                // Change the circle fill depending on whether it has children and is collapsed
-                // Change the circle fill depending on whether it has children and is collapsed
-                node.select("image.nodeImage")
-                    .attr("r", 4.5)
-                    .attr("xlink:href", function(d) {
-                        if (d._children) {
-                            return d.type === 'Table' ? '../img/tableicon1.png' : '../img/process1.png';
-                        }
-                        return d.type === 'Table' ? '../img/tableicon.png' : '../img/process.png';
-                    });
-
-
                 // Transition nodes to their new position.
                 var nodeUpdate = node.transition()
                     .duration(duration)
diff --git a/release-log.txt b/release-log.txt
index 2124965..6866bfd 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -9,6 +9,7 @@
 ATLAS-3 Mixed Index creation fails with Date types (sumasai via shwethags)
 
 ALL CHANGES:
+ATLAS-385 Support for Lineage for entities with SuperType as DataSet (anilsg via sumasai)
 ATLAS-342 Atlas is sending an ENTITY_CREATE event to the ATLAS_ENTITIES topic even if the entity exists already (shwethags)
 ATLAS-386 Handle hive rename Table (shwethags)
 ATLAS-374 Doc: Create a wiki for documenting fault tolerance and HA options for Atlas data (yhemath via sumasai)