You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ve...@apache.org on 2015/09/12 00:52:38 UTC

[01/11] incubator-atlas git commit: ATLAS-154 Update website for 0.5-incubating release. Contributed by Venkatesh Seetharam

Repository: incubator-atlas
Updated Branches:
  refs/heads/master 367f5f8ee -> 016e36c00


ATLAS-154 Update website for 0.5-incubating release. Contributed by Venkatesh Seetharam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/e4c5648b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/e4c5648b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/e4c5648b

Branch: refs/heads/master
Commit: e4c5648b642851519d7877945545fe7183234050
Parents: 367f5f8
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 14:51:18 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 14:51:18 2015 -0700

----------------------------------------------------------------------
 docs/src/site/site.xml | 6 ++++--
 release-log.txt        | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/e4c5648b/docs/src/site/site.xml
----------------------------------------------------------------------
diff --git a/docs/src/site/site.xml b/docs/src/site/site.xml
index c2ab126..b412569 100755
--- a/docs/src/site/site.xml
+++ b/docs/src/site/site.xml
@@ -94,12 +94,14 @@
         </menu>
 
         <menu name="Releases">
-            <item name="Coming soon" href="https://cwiki.apache.org/confluence/display/ATLAS"/>
+            <item name="0.5-incubating"
+                  href="http://www.apache.org/dyn/closer.cgi/incubator/atlas/0.5.0-incubating/"/>
         </menu>
 
         <menu name="Documentation">
             <!-- current points to latest release -->
-            <item name="current" href="index.html"/>
+            <item name="current" href="./0.5.0-incubating/index.html"/>
+            <item name="0.5-incubating" href="./0.5.0-incubating/index.html"/>
         </menu>
 
         <menu name="Resources">

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/e4c5648b/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index e2e5557..0711f7c 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,7 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-154 Update website for 0.5-incubating release (Venkatesh Seetharam)
 ATLAS-153 Build failure - org.glassfish:javax.el (shwethags)
 ATLAS-117 Build fails on the latest commit (dossett@gmail.com via shwethags)
 ATLAS-115 Remove unnecessary log4j.xml in typesystem (jmaron)


[09/11] incubator-atlas git commit: ATLAS-112 UI: Make lineage graph extensible for multiple nodes. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-112 UI: Make lineage graph extensible for multiple nodes. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/1e1ed482
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/1e1ed482
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/1e1ed482

Branch: refs/heads/master
Commit: 1e1ed482cebff075664577d383d5e7a3bc6d12c3
Parents: ff5b1f1
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:16:37 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:16:37 2015 -0700

----------------------------------------------------------------------
 dashboard/.jshintrc                             |   5 +-
 .../public/modules/lineage/lineageController.js | 582 +++++++++++++++----
 .../public/modules/lineage/views/lineage.html   |  15 +-
 release-log.txt                                 |   2 +
 4 files changed, 482 insertions(+), 122 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1e1ed482/dashboard/.jshintrc
----------------------------------------------------------------------
diff --git a/dashboard/.jshintrc b/dashboard/.jshintrc
index 62b5e65..f42738e 100644
--- a/dashboard/.jshintrc
+++ b/dashboard/.jshintrc
@@ -39,7 +39,8 @@
     "undef": true, // Require all non-global variables be declared before they are used.
     "unused": true, // Warn unused variables.
     "globals": { // Globals variables.
-        "angular": true
+        "angular": true,
+        "$": false
     },
     "predef": [ // Extra globals.
         "define",
@@ -60,4 +61,4 @@
         "expect",
         "ngGridFlexibleHeightPlugin"
     ]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1e1ed482/dashboard/public/modules/lineage/lineageController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/lineageController.js b/dashboard/public/modules/lineage/lineageController.js
index b8bd09c..151002f 100644
--- a/dashboard/public/modules/lineage/lineageController.js
+++ b/dashboard/public/modules/lineage/lineageController.js
@@ -36,8 +36,9 @@ angular.module('dgc.lineage').controller('LineageController', ['$element', '$sco
                             render();
                         }
                     });
+                }else{ 
+                    $scope.requested = false;
                 }
-                $scope.requested = false;
             });
         }
 
@@ -62,16 +63,28 @@ angular.module('dgc.lineage').controller('LineageController', ['$element', '$sco
 
         $scope.type = $element.parent().attr('data-table-type');
         $scope.requested = false;
+        $scope.height = $element[0].offsetHeight;
+        $scope.width = $element[0].offsetWidth;
 
         function render() {
             renderGraph($scope.lineageData, {
+                eleObj : $element,
                 element: $element[0],
-                height: $element[0].offsetHeight,
-                width: $element[0].offsetWidth
+                height: $scope.height,
+                width: $scope.width
             });
             $scope.rendered = true;
         }
 
+        $scope.onReset = function(){
+            renderGraph($scope.lineageData, {
+                eleObj : $element,
+                element: $element[0],
+                height: $scope.height,
+                width: $scope.width
+            }); 
+        };
+
         $scope.$on('render-lineage', function(event, lineageData) {
             if (lineageData.type === $scope.type) {
                 if (!$scope.lineageData) {
@@ -155,50 +168,249 @@ angular.module('dgc.lineage').controller('LineageController', ['$element', '$sco
         }
 
         function renderGraph(data, container) {
-            // ************** Generate the tree diagram	 *****************
-            var element = d3.select(container.element),
-                width = Math.max(container.width, 960),
-                height = Math.max(container.height, 350);
-
-            var margin = {
-                top: 100,
-                right: 80,
-                bottom: 30,
-                left: 80
-            };
-            width = width - margin.right - margin.left;
-            height = height - margin.top - margin.bottom;
-
-            var i = 0;
-
-            var tree = d3.layout.tree()
-                .size([height, width]);
-
-            var diagonal = d3.svg.diagonal()
-                .projection(function(d) {
-                    return [d.y, d.x];
-                });
+            // ************** Generate the tree diagram  *****************
+            var element = d3.select(container.element),  
+                widthg = Math.max(container.width, 960),
+                heightg = Math.max(container.height, 500),
+
+                totalNodes = 0,
+                maxLabelLength = 0,
+                selectedNode = null,
+                draggingNode = null,
+                dragListener = null,
+                dragStarted = true,
+                domNode = null,
+                multiParents = null,
+                nodes = null,
+                tooltip = null,
+                node = null,  
+                i = 0,
+                duration = 750,
+                root,
+                depthwidth = 10;
+                
+
+            var viewerWidth = widthg - 15,
+                viewerHeight = heightg;
+ 
+             var tree = d3.layout.tree().nodeSize([100, 200]);
+                /*.size([viewerHeight, viewerWidth]);*/
+
+    container.eleObj.find(".graph").html('');    
+    container.eleObj.find("svg").remove();
+
+    // define a d3 diagonal projection for use by the node paths later on.
+    var diagonal = d3.svg.diagonal()
+        .projection(function(d) {
+            return [d.y, d.x];
+        });
 
-            /* Initialize tooltip */
-            var tooltip = d3.tip()
-                .attr('class', 'd3-tip')
-                .html(function(d) {
-                    return '<pre class="alert alert-success">' + d.tip + '</pre>';
-                });
+    // A recursive helper function for performing some setup by walking through all nodes
+
+    function visit(parent, visitFn, childrenFn) {
+        if (!parent) return;
+
+        visitFn(parent);
+
+        var children = childrenFn(parent);
+        if (children) {
+            var count = children.length;
+            for (var i = 0; i < count; i++) {
+                visit(children[i], visitFn, childrenFn);
+            }
+        }
+    }
+
+    // Call visit function to establish maxLabelLength
+    visit(data, function(d) {
+        totalNodes++;
+        maxLabelLength = Math.max(d.name.length, maxLabelLength);
+
+    }, function(d) {
+        return d.children && d.children.length > 0 ? d.children : null;
+    });
+
+
+    // sort the tree according to the node names
+
+    function sortTree() {
+        tree.sort(function(a, b) {
+            return b.name.toLowerCase() < a.name.toLowerCase() ? 1 : -1;
+        });
+    }
+    // Sort the tree initially incase the JSON isn't in a sorted order.
+    sortTree(); 
+     
+    // Define the zoom function for the zoomable tree
+
+    function zoom() {
+        svgGroup.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
+    }
+
+
+    // define the zoomListener which calls the zoom function on the "zoom" event constrained within the scaleExtents
+    var zoomListener = d3.behavior.zoom().scaleExtent([0.1, 3]).on("zoom", zoom);
+     /* Initialize tooltip */
+    tooltip = d3.tip()
+        .attr('class', 'd3-tip')
+        .html(function(d) {
+            return '<pre class="alert alert-success">' + d.name + '</pre>';
+        });
 
-            var svg = element.select('svg')
-                .attr('width', width + margin.right + margin.left)
-                .attr('height', height + margin.top + margin.bottom)
-                /* Invoke the tip in the context of your visualization */
-                .call(tooltip)
-                .select('g')
-                .attr('transform',
-                    'translate(' + margin.left + ',' + margin.right + ')');
-            //arrow
-            svg.append("svg:defs").append("svg:marker").attr("id", "arrow").attr("viewBox", "0 0 10 10").attr("refX", 26).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 6).attr("markerHeight", 9).attr("orient", "auto").append("svg:path").attr("d", "M 0 0 L 10 5 L 0 10 z");
+    // define the baseSvg, attaching a class for styling and the zoomListener
+    var baseSvg = element.append('svg')        
+        .attr("width", viewerWidth)
+        .attr("height", viewerHeight)
+        .attr("class", "overlay")
+        .call(zoomListener)
+        .call(tooltip);
+
+
+    // Define the drag listeners for drag/drop behaviour of nodes.
+    dragListener = d3.behavior.drag()
+        .on("dragstart", function(d) {
+            if (d ===root) {
+                return;
+            }
+            dragStarted = true;
+            nodes = tree.nodes(d);
+            d3.event.sourceEvent.stopPropagation();
+            // it's important that we suppress the mouseover event on the node being dragged. Otherwise it will absorb the mouseover event and the underlying node will not detect it d3.select(this).attr('pointer-events', 'none');
+        }) 
+        .on("dragend", function(d) {
+            if (d ===root) {
+                return;
+            }
+            domNode = this;
+            if (selectedNode) {
+                // now remove the element from the parent, and insert it into the new elements children
+                var index = draggingNode.parent.children.indexOf(draggingNode);
+                if (index > -1) {
+                    draggingNode.parent.children.splice(index, 1);
+                }
+                if (typeof selectedNode.children !== 'undefined' || typeof selectedNode._children !== 'undefined') {
+                    if (typeof selectedNode.children !== 'undefined') {
+                        selectedNode.children.push(draggingNode);
+                    } else {
+                        selectedNode._children.push(draggingNode);
+                    }
+                } else {
+                    selectedNode.children = [];
+                    selectedNode.children.push(draggingNode);
+                }
+                // Make sure that the node being added to is expanded so user can see added node is correctly moved
+                expand(selectedNode);
+                sortTree();
+                endDrag();
+            } else {
+                endDrag();
+            }
+        });
+
+    function endDrag() {
+        selectedNode = null;
+        d3.selectAll('.ghostCircle').attr('class', 'ghostCircle');
+        d3.select(domNode).attr('class', 'node');
+        // now restore the mouseover event or we won't be able to drag a 2nd time
+        d3.select(domNode).select('.ghostCircle').attr('pointer-events', '');
+        updateTempConnector();
+        if (draggingNode !== null) {
+            update(root);
+            centerNode(draggingNode);
+            draggingNode = null;
+        }
+    }
+
+
+    function expand(d) {
+        if (d._children) {
+            d.children = d._children;
+            d.children.forEach(expand);
+            d._children = null;
+        }
+    } 
+
+    // Function to update the temporary connector indicating dragging affiliation
+    var updateTempConnector = function() {
+        var data = [];
+        if (draggingNode !== null && selectedNode !== null) {
+            // have to flip the source coordinates since we did this for the existing connectors on the original tree
+            data = [{
+                source: {
+                    x: selectedNode.y0,
+                    y: selectedNode.x0
+                },
+                target: {
+                    x: draggingNode.y0,
+                    y: draggingNode.x0
+                }
+            }];
+        }
+        var link = svgGroup.selectAll(".templink").data(data);
+
+        link.enter().append("path")
+            .attr("class", "templink")
+            .attr("d", d3.svg.diagonal())
+            .attr('pointer-events', 'none');
+
+        link.attr("d", d3.svg.diagonal());
+
+        link.exit().remove();
+    };
+
+    // Function to center node when clicked/dropped so node doesn't get lost when collapsing/moving with large amount of children.
+
+    function centerNode(source) {
+        var scale =  (depthwidth === 10) ? zoomListener.scale() : 0.4;
+        var x = -source.y0;
+        var y = -source.x0;
+        x = x * scale + 150;
+        y = y * scale + viewerHeight / 2;
+        d3.select('g').transition()
+            .duration(duration)
+            .attr("transform", "translate(" + x + "," + y + ")scale(" + scale + ")");
+        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")
+                .attr("id", "arrow")
+                .attr("viewBox", "0 0 10 10")
+                .attr("refX", 22)
+                .attr("refY", 5)
+                .attr("markerUnits", "strokeWidth")
+                .attr("markerWidth", 6)
+                .attr("markerHeight", 9)
+                .attr("orient", "auto")
+                .append("svg:path")
+                .attr("d", "M 0 0 L 10 5 L 0 10 z");
 
             //marker for input type graph
-            svg.append("svg:defs")
+            baseSvg.append("svg:defs")
                 .append("svg:marker")
                 .attr("id", "input-arrow")
                 .attr("viewBox", "0 0 10 10")
@@ -211,88 +423,228 @@ angular.module('dgc.lineage').controller('LineageController', ['$element', '$sco
                 .append("svg:path")
                 .attr("d", "M -2 5 L 8 0 L 8 10 z");
 
-            var root = data;
-
-            function update(source) {
+    function update(source) {
+        // Compute the new height, function counts total children of root node and sets tree height accordingly.
+        // This prevents the layout looking squashed when new nodes are made visible or looking sparse when nodes are removed
+        // This makes the layout more consistent.
+        var levelWidth = [1];
+        var childCount = function(level, n) {
 
-                // Compute the new tree layout.
-                var nodes = tree.nodes(source).reverse(),
-                    links = tree.links(nodes);
+            if (n.children && n.children.length > 0) {
+                if (levelWidth.length <= level + 1) levelWidth.push(0);
 
-                // Normalize for fixed-depth.
-                nodes.forEach(function(d) {
-                    d.y = d.depth * 180;
+                levelWidth[level + 1] += n.children.length;
+                n.children.forEach(function(d) {
+                    childCount(level + 1, d);
                 });
+            }
+        };
+        childCount(0, root);
+        tree = tree.nodeSize([50, 100]); 
+
+        // Compute the new tree layout.
+        var nodes = tree.nodes(root).reverse(),
+            links = tree.links(nodes);
+
+        // Set widths between levels based on maxLabelLength.
+        nodes.forEach(function(d) {
+            if(levelWidth.length > 1 && depthwidth === 10){
+               for(var o=0; o < levelWidth.length; o++){
+                  if(levelWidth[o] > 4 ) { depthwidth = 70;  break;}
+               }
+            }  
+            var maxLebal = maxLabelLength;
+            if(depthwidth === 10) { maxLebal = 20;}
+            d.y = (d.depth * (maxLebal * depthwidth));           
+        }); 
+
+        // Update the nodes…
+        node = svgGroup.selectAll("g.node")
+            .data(nodes, function(d) {
+                return d.id || (d.id = ++i);
+            });
 
-                // Declare the nodes…
-                var node = svg.selectAll('g.node')
-                    .data(nodes, function(d) {
-                        return d.id || (d.id = ++i);
-                    });
+        // Enter any new nodes at the parent's previous position.
+        var nodeEnter = node.enter().append("g")
+            .call(dragListener)
+            .attr("class", "node")
+            .attr("transform", function() {
+                return "translate(" + source.y0 + "," + source.x0 + ")";
+            })
+            .on('click', click);
+ 
+         nodeEnter.append("image")
+            .attr("class","nodeImage")
+            .attr("xlink:href", function(d) { 
+                return d.type === 'Table' ? '../img/tableicon.png' : '../img/process.png';
+            })
+            .on('mouseover', function(d) {
+                if (d.type === 'LoadProcess' || 'Table') {
+                    tooltip.show(d);
+                }
+            })
+            .on('mouseout', function(d) {
+                if (d.type === 'LoadProcess' || 'Table') {
+                    tooltip.hide(d);
+                }
+            })
+            .attr("x", "-18px")
+            .attr("y", "-18px")
+            .attr("width", "34px")
+            .attr("height", "34px");    
+
+        nodeEnter.append("text")
+            .attr("x", function(d) {
+                return d.children || d._children ? -10 : 10;
+            })
+            .attr("dx", function (d) { return d.children ? 50 : -50; })
+            .attr("dy", -24) 
+            .attr('class', 'place-label')
+            .attr("text-anchor", function(d) {
+                return d.children || d._children ? "end" : "start";
+            })
+            .text(function(d) {
+                var nameDis = (d.name.length > 15) ? d.name.substring(0,15) + "..." : d.name;
+                $(this).attr('title', d.name);
+                return nameDis;
+            })
+            .style("fill-opacity", 0); 
+
+        // Update the text to reflect whether node has children or not.
+        node.select('text')
+            .attr("x", function(d) {
+                return d.children || d._children ? -10 : 10;
+            })
+            .attr("text-anchor", function(d) {
+                return d.children || d._children ? "end" : "start";
+            })
+            .text(function(d) {
+                var nameDis = (d.name.length > 15) ? d.name.substring(0,15) + "..." : d.name;
+                $(this).attr('title', d.name);
+                return nameDis;
+            });
 
-                // Enter the nodes.
-                var nodeEnter = node.enter().append('g')
-                    .attr('class', 'node')
-                    .attr('transform', function(d) {
-                        return 'translate(' + d.y + ',' + d.x + ')';
-                    });
+        // 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';
+            });
 
-                nodeEnter.append("image")
-                    .attr("xlink:href", function(d) {
-                        //return d.icon;
-                        return d.type === 'Table' ? '../img/tableicon.png' : '../img/process.png';
-                    })
-                    .on('mouseover', function(d) {
-                        if (d.type === 'LoadProcess') {
-                            tooltip.show(d);
-                        }
-                    })
-                    .on('mouseout', function(d) {
-                        if (d.type === 'LoadProcess') {
-                            tooltip.hide(d);
-                        }
-                    })
-                    .attr("x", "-18px")
-                    .attr("y", "-18px")
-                    .attr("width", "34px")
-                    .attr("height", "34px");
-
-                nodeEnter.append('text')
-                    .attr('x', function(d) {
-                        return d.children || d._children ?
-                            (5) * -1 : +15;
-                    })
-                    .attr('dy', '-1.75em')
-                    .attr('text-anchor', function(d) {
-                        return d.children || d._children ? 'middle' : 'middle';
-                    })
-                    .text(function(d) {
-                        return d.name;
-                    })
-
-                .style('fill-opacity', 1);
-
-                // Declare the links…
-                var link = svg.selectAll('path.link')
-                    .data(links, function(d) {
-                        return d.target.id;
-                    });
 
-                link.enter().insert('path', 'g')
-                    .attr('class', 'link')
-                    //.style('stroke', function(d) { return d.target.level; })
-                    .style('stroke', 'green')
-                    .attr('d', diagonal);
+        // Transition nodes to their new position.
+        var nodeUpdate = node.transition()
+            .duration(duration)
+            .attr("transform", function(d) {
+                return "translate(" + d.y + "," + d.x  + ")";
+            });
 
-                if ($scope.type === 'inputs') {
-                    link.attr("marker-start", "url(#input-arrow)"); //if input
-                } else {
-                    link.attr("marker-end", "url(#arrow)"); //if input
-                }
+        // Fade the text in
+        nodeUpdate.select("text")
+            .style("fill-opacity", 1);
 
-            }
+        // Transition exiting nodes to the parent's new position.
+        var nodeExit = node.exit().transition()
+            .duration(duration)
+            .attr("transform", function() {
+                return "translate(" + source.y + "," + source.x + ")";
+            })
+            .remove();
 
-            update(root);
+        nodeExit.select("circle")
+            .attr("r", 0);
+
+        nodeExit.select("text")
+            .style("fill-opacity", 0);
+
+        // Update the links…
+        var link = svgGroup.selectAll("path.link")
+            .data(links, function(d) {
+                return d.target.id;
+            });
+
+        // Enter any new links at the parent's previous position.
+        link.enter().insert("path", "g")
+            .attr("class", "link")
+            .style('stroke', 'green') 
+            .attr("d", function() {
+                var o = {
+                    x: source.x0,
+                    y: source.y0
+                };
+                return diagonal({
+                    source: o,
+                    target: o
+                });
+            });
+
+        // Transition links to their new position.
+        link.transition()
+            .duration(duration)
+            .attr("d", diagonal);
+
+        // Transition exiting nodes to the parent's new position.
+        link.exit().transition()
+            .duration(duration)
+            .attr("d", function() {
+                var o = {
+                    x: source.x,
+                    y: source.y
+                };
+                return diagonal({
+                    source: o,
+                    target: o
+                });
+            })
+            .remove();
+
+        // Stash the old positions for transition.
+        nodes.forEach(function(d) {
+            d.x0 = d.x;
+            d.y0 = d.y;
+        });
+
+        if ($scope.type === 'inputs') {
+            link.attr("marker-start", "url(#input-arrow)"); //if input
+        }  else {
+            link.attr("marker-end", "url(#arrow)"); //if input
+        }
+    }
+
+    // Append a group which holds all nodes and which the zoom Listener can act upon.
+    var svgGroup = baseSvg.append("g")
+                    .attr("transform", "translate(120 ," + heightg/2 + ")");
+
+    // Define the root
+    root = data;
+    root.x0 = viewerHeight / 2;
+    root.y0 = 0;
+
+    // Layout the tree initially and center on the root node.
+    update(root);
+    centerNode(root);
+    
+    var couplingParent1 = tree.nodes(root).filter(function(d) {
+            return d.name === 'cluster';
+        })[0];
+    var couplingChild1 = tree.nodes(root).filter(function(d) {
+            return d.name === 'JSONConverter';
+        })[0];
+    
+    multiParents = [{
+                    parent: couplingParent1,
+                    child: couplingChild1
+                }];
+    
+    multiParents.forEach(function() {
+            svgGroup.append("path", "g"); 
+        }); 
+
+           
         }
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1e1ed482/dashboard/public/modules/lineage/views/lineage.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/views/lineage.html b/dashboard/public/modules/lineage/views/lineage.html
index e2e9ebd..3b412f7 100644
--- a/dashboard/public/modules/lineage/views/lineage.html
+++ b/dashboard/public/modules/lineage/views/lineage.html
@@ -17,9 +17,14 @@
   -->
 
 <div class="lineage-viz" data-ng-controller="LineageController">
-    <h4 data-ng-if="!requested && !lineageData">No lineage data found</h4>
-    <i data-ng-if="requested" class="fa fa-spinner fa-spin fa-5x"></i>
-    <svg >
-        <g/>
-    </svg>
+    <button type="button" class="btn btn-primary pull-right" ng-click="onReset()">
+        Reset
+    </button>
+    <div class="graph">
+      <h4 data-ng-if="!requested && !lineageData">No lineage data found</h4>
+      <i data-ng-if="requested" class="fa fa-spinner fa-spin fa-5x"></i>
+      <svg >
+          <g/>
+      </svg>
+    </div>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1e1ed482/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index dd50765..26e37d7 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,8 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-112 UI: Make lineage graph extensible for multiple nodes (Vishal Kadam
+via Venkatesh Seetharam)
 ATLAS-152 TimeStamp fields not showing the details tab (Vishal Kadam
 via Venkatesh Seetharam)
 ATLAS-111 UI: Create Help Link (Vishal Kadam via Venkatesh Seetharam)


[08/11] incubator-atlas git commit: ATLAS-152 TimeStamp fields not showing the details tab. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-152 TimeStamp fields not showing the details tab. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/ff5b1f17
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/ff5b1f17
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/ff5b1f17

Branch: refs/heads/master
Commit: ff5b1f172b18442c404db949f657e3f8e1317327
Parents: d1eef49
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:14:24 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:14:24 2015 -0700

----------------------------------------------------------------------
 dashboard/public/modules/details/detailsController.js | 2 ++
 dashboard/public/modules/details/views/details.html   | 8 ++++----
 release-log.txt                                       | 5 +++--
 3 files changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/ff5b1f17/dashboard/public/modules/details/detailsController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/detailsController.js b/dashboard/public/modules/details/detailsController.js
index 0e96d42..7bfed9b 100644
--- a/dashboard/public/modules/details/detailsController.js
+++ b/dashboard/public/modules/details/detailsController.js
@@ -33,6 +33,8 @@ angular.module('dgc.details').controller('DetailsController', ['$window', '$scop
             $scope.isTable = data.typeName === 'Table';
         });
 
+        $scope.isNumber = angular.isNumber;
+        
         $scope.isString = angular.isString;
 
         $scope.onActivate = function tabActivate(tabname) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/ff5b1f17/dashboard/public/modules/details/views/details.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/views/details.html b/dashboard/public/modules/details/views/details.html
index 19f0ce0..c0419cb 100644
--- a/dashboard/public/modules/details/views/details.html
+++ b/dashboard/public/modules/details/views/details.html
@@ -33,10 +33,10 @@
                     </tr>
                     </thead>
                     <tbody>
-                    <tr data-ng-repeat="(key,value) in details.values" ng-if="value && !(key==='columns') && !(key==='name') && !(key==='description')">
-                        <td>{{key}}</td>
-                        <td data-ng-if="!isString(value)" data-ng-include="'/modules/details/views/attribute.html'"></td>
-                        <td data-ng-if="isString(value)">{{value | date:'medium'}}</td>
+                   <tr data-ng-repeat="(key,value) in details.values" ng-if="value && !(key==='columns') && !(key==='name') && !(key==='description')">
+                        <td>{{key}}</td>   
+                        <td data-ng-if="!isString(value) && !isNumber(value)" data-ng-include="'/modules/details/views/attribute.html'"></td>
+                        <td data-ng-if="isString(value) || isNumber(value)">{{value | date:'medium'}}</td> 
                     </tr>
                     </tbody>
                 </table>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/ff5b1f17/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index babfa10..dd50765 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,8 +8,9 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
-ATLAS-111
-UI: Create Help Link  (Vishal Kadam via Venkatesh Seetharam)
+ATLAS-152 TimeStamp fields not showing the details tab (Vishal Kadam
+via Venkatesh Seetharam)
+ATLAS-111 UI: Create Help Link (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-113 Add an About Dialog to Apache Atlas UI with version number (Vishal Kadam
 via Venkatesh Seetharam)
 ATLAS-109 Remove v2 Folder (Vishal Kadam via Venkatesh Seetharam)


[10/11] incubator-atlas git commit: ATLAS-110 UI: Lineage should be clickable. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-110 UI: Lineage should be clickable. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/c4d47974
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/c4d47974
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/c4d47974

Branch: refs/heads/master
Commit: c4d4797445d0e80a6badbd0834239477512c52a6
Parents: 1e1ed48
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:17:45 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:17:45 2015 -0700

----------------------------------------------------------------------
 dashboard/public/modules/lineage/lineageController.js | 5 +++++
 release-log.txt                                       | 1 +
 2 files changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/c4d47974/dashboard/public/modules/lineage/lineageController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/lineageController.js b/dashboard/public/modules/lineage/lineageController.js
index 151002f..2d88147 100644
--- a/dashboard/public/modules/lineage/lineageController.js
+++ b/dashboard/public/modules/lineage/lineageController.js
@@ -35,6 +35,11 @@ angular.module('dgc.lineage').controller('LineageController', ['$element', '$sco
                         if (callRender) {
                             render();
                         }
+                    })
+                    .on("dblclick", function(d) {
+                        $state.go("details", {
+                            id: d.guid
+                        });
                     });
                 }else{ 
                     $scope.requested = false;

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/c4d47974/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 26e37d7..9be6e3d 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,7 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-110 UI: Lineage should be clickable (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-112 UI: Make lineage graph extensible for multiple nodes (Vishal Kadam
 via Venkatesh Seetharam)
 ATLAS-152 TimeStamp fields not showing the details tab (Vishal Kadam


[03/11] incubator-atlas git commit: ATLAS-109 Remove v2 Folder. Contributed by Vishal Kadam

Posted by ve...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/home/headerController.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/headerController.js b/dashboard/v2/public/modules/home/headerController.js
deleted file mode 100755
index a8d1411..0000000
--- a/dashboard/v2/public/modules/home/headerController.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.home').controller('HeaderController', ['$scope', function($scope) {
-
-    $scope.menu = [];
-
-    $scope.isCollapsed = true;
-    $scope.isLoggedIn = function() {
-        return true;
-    };
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/home/homeModule.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/homeModule.js b/dashboard/v2/public/modules/home/homeModule.js
deleted file mode 100755
index 017811c..0000000
--- a/dashboard/v2/public/modules/home/homeModule.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.home', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/home/views/header.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/views/header.html b/dashboard/v2/public/modules/home/views/header.html
deleted file mode 100755
index 85c5f4d..0000000
--- a/dashboard/v2/public/modules/home/views/header.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<div data-ng-controller="HeaderController" class="row">
-    <div class="navbar-header">
-        <button class="navbar-toggle" type="button" data-ng-click="isCollapsed = !isCollapsed">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-        </button>
- <a data-ui-sref="search({ query: '' })" data-ui-sref-active="active"><img src="../img/ApacheAtlasLogo.png" /></a>
-    </div>
-    <nav class="collapse navbar-collapse" data-collapse="isCollapsed" data-role="navigation">
-        <ul class="navbar-nav nav" data-ng-if="isLoggedIn()">
-            <li data-ng-repeat="item in menu" data-ui-sref-active="active">
-                <a data-ui-sref="{{item.state}}">{{item.title}}</a>
-            </li>
-        </ul>
-    </nav>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/home/views/home.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/views/home.html b/dashboard/v2/public/modules/home/views/home.html
deleted file mode 100755
index 4e93782..0000000
--- a/dashboard/v2/public/modules/home/views/home.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<section class="text-center">
-    <img data-ui-sref="search" class="pointer" src="modules/home/img/splash.png"/>
-</section>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/lineage/lineageController.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/lineage/lineageController.js b/dashboard/v2/public/modules/lineage/lineageController.js
deleted file mode 100755
index b8bd09c..0000000
--- a/dashboard/v2/public/modules/lineage/lineageController.js
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * 'License'); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an 'AS IS' BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.lineage').controller('LineageController', ['$element', '$scope', '$state', '$stateParams', 'lodash', 'LineageResource', 'd3', 'DetailsResource', '$q',
-    function($element, $scope, $state, $stateParams, _, LineageResource, d3, DetailsResource, $q) {
-        var guidsList = [];
-
-        function getLineageData(tableData, callRender) {
-            LineageResource.get({
-                tableName: tableData.tableName,
-                type: tableData.type
-            }, function lineageSuccess(response) {
-                if (!_.isEmpty(response.results.values.vertices)) {
-                    var allGuids = loadProcess(response.results.values.edges, response.results.values.vertices);
-                    allGuids.then(function(res) {
-                        guidsList = res;
-                        $scope.lineageData = transformData(response.results);
-                        if (callRender) {
-                            render();
-                        }
-                    });
-                }
-                $scope.requested = false;
-            });
-        }
-
-        function loadProcess(edges, vertices) {
-
-            var urlCalls = [];
-            var deferred = $q.defer();
-            for (var guid in edges) {
-                if (!vertices.hasOwnProperty(guid)) {
-                    urlCalls.push(DetailsResource.get({
-                        id: guid
-                    }).$promise);
-                }
-
-            }
-            $q.all(urlCalls)
-                .then(function(results) {
-                    deferred.resolve(results);
-                });
-            return deferred.promise;
-        }
-
-        $scope.type = $element.parent().attr('data-table-type');
-        $scope.requested = false;
-
-        function render() {
-            renderGraph($scope.lineageData, {
-                element: $element[0],
-                height: $element[0].offsetHeight,
-                width: $element[0].offsetWidth
-            });
-            $scope.rendered = true;
-        }
-
-        $scope.$on('render-lineage', function(event, lineageData) {
-            if (lineageData.type === $scope.type) {
-                if (!$scope.lineageData) {
-                    if (!$scope.requested) {
-                        getLineageData(lineageData, true);
-                        $scope.requested = true;
-                    }
-                } else {
-                    render();
-                }
-            }
-        });
-
-        function transformData(metaData) {
-            var edges = metaData.values.edges,
-                vertices = metaData.values.vertices,
-                nodes = {};
-
-            function getNode(guid) {
-                var name, type, tip;
-                if (vertices.hasOwnProperty(guid)) {
-                    name = vertices[guid].values.name;
-                    type = vertices[guid].values.vertexId.values.typeName;
-                } else {
-                    var loadProcess = getLoadProcessTypes(guid);
-                    if (typeof loadProcess !== "undefined") {
-                        name = loadProcess.name;
-                        type = loadProcess.typeName;
-                        tip = loadProcess.tip;
-                    } else {
-                        name = 'Load Process';
-                        type = 'Load Process';
-                    }
-                }
-                var vertex = {
-                    guid: guid,
-                    name: name,
-                    type: type,
-                    tip: tip
-                };
-                if (!nodes.hasOwnProperty(guid)) {
-                    nodes[guid] = vertex;
-                }
-                return nodes[guid];
-            }
-
-            function getLoadProcessTypes(guid) {
-                var procesRes = [];
-                angular.forEach(guidsList, function(value) {
-                    if (value.id.id === guid) {
-                        procesRes.name = value.values.name;
-                        procesRes.typeName = value.typeName;
-                        procesRes.tip = value.values.queryText;
-                    }
-                });
-                return procesRes;
-            }
-
-            function attachParent(edge, node) {
-                edge.forEach(function eachPoint(childGuid) {
-                    var childNode = getNode(childGuid);
-                    node.children = node.children || [];
-                    node.children.push(childNode);
-                    childNode.parent = node.guid;
-                });
-            }
-
-            /* Loop through all edges and attach them to correct parent */
-            for (var guid in edges) {
-                var edge = edges[guid],
-                    node = getNode(guid);
-
-                /* Attach parent to each endpoint of edge */
-                attachParent(edge, node);
-            }
-
-            /* Return the first node w/o parent, this is root node*/
-            return _.find(nodes, function(node) {
-                return !node.hasOwnProperty('parent');
-            });
-        }
-
-        function renderGraph(data, container) {
-            // ************** Generate the tree diagram	 *****************
-            var element = d3.select(container.element),
-                width = Math.max(container.width, 960),
-                height = Math.max(container.height, 350);
-
-            var margin = {
-                top: 100,
-                right: 80,
-                bottom: 30,
-                left: 80
-            };
-            width = width - margin.right - margin.left;
-            height = height - margin.top - margin.bottom;
-
-            var i = 0;
-
-            var tree = d3.layout.tree()
-                .size([height, width]);
-
-            var diagonal = d3.svg.diagonal()
-                .projection(function(d) {
-                    return [d.y, d.x];
-                });
-
-            /* Initialize tooltip */
-            var tooltip = d3.tip()
-                .attr('class', 'd3-tip')
-                .html(function(d) {
-                    return '<pre class="alert alert-success">' + d.tip + '</pre>';
-                });
-
-            var svg = element.select('svg')
-                .attr('width', width + margin.right + margin.left)
-                .attr('height', height + margin.top + margin.bottom)
-                /* Invoke the tip in the context of your visualization */
-                .call(tooltip)
-                .select('g')
-                .attr('transform',
-                    'translate(' + margin.left + ',' + margin.right + ')');
-            //arrow
-            svg.append("svg:defs").append("svg:marker").attr("id", "arrow").attr("viewBox", "0 0 10 10").attr("refX", 26).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 6).attr("markerHeight", 9).attr("orient", "auto").append("svg:path").attr("d", "M 0 0 L 10 5 L 0 10 z");
-
-            //marker for input type graph
-            svg.append("svg:defs")
-                .append("svg:marker")
-                .attr("id", "input-arrow")
-                .attr("viewBox", "0 0 10 10")
-                .attr("refX", -15)
-                .attr("refY", 5)
-                .attr("markerUnits", "strokeWidth")
-                .attr("markerWidth", 6)
-                .attr("markerHeight", 9)
-                .attr("orient", "auto")
-                .append("svg:path")
-                .attr("d", "M -2 5 L 8 0 L 8 10 z");
-
-            var root = data;
-
-            function update(source) {
-
-                // Compute the new tree layout.
-                var nodes = tree.nodes(source).reverse(),
-                    links = tree.links(nodes);
-
-                // Normalize for fixed-depth.
-                nodes.forEach(function(d) {
-                    d.y = d.depth * 180;
-                });
-
-                // Declare the nodes…
-                var node = svg.selectAll('g.node')
-                    .data(nodes, function(d) {
-                        return d.id || (d.id = ++i);
-                    });
-
-                // Enter the nodes.
-                var nodeEnter = node.enter().append('g')
-                    .attr('class', 'node')
-                    .attr('transform', function(d) {
-                        return 'translate(' + d.y + ',' + d.x + ')';
-                    });
-
-                nodeEnter.append("image")
-                    .attr("xlink:href", function(d) {
-                        //return d.icon;
-                        return d.type === 'Table' ? '../img/tableicon.png' : '../img/process.png';
-                    })
-                    .on('mouseover', function(d) {
-                        if (d.type === 'LoadProcess') {
-                            tooltip.show(d);
-                        }
-                    })
-                    .on('mouseout', function(d) {
-                        if (d.type === 'LoadProcess') {
-                            tooltip.hide(d);
-                        }
-                    })
-                    .attr("x", "-18px")
-                    .attr("y", "-18px")
-                    .attr("width", "34px")
-                    .attr("height", "34px");
-
-                nodeEnter.append('text')
-                    .attr('x', function(d) {
-                        return d.children || d._children ?
-                            (5) * -1 : +15;
-                    })
-                    .attr('dy', '-1.75em')
-                    .attr('text-anchor', function(d) {
-                        return d.children || d._children ? 'middle' : 'middle';
-                    })
-                    .text(function(d) {
-                        return d.name;
-                    })
-
-                .style('fill-opacity', 1);
-
-                // Declare the links…
-                var link = svg.selectAll('path.link')
-                    .data(links, function(d) {
-                        return d.target.id;
-                    });
-
-                link.enter().insert('path', 'g')
-                    .attr('class', 'link')
-                    //.style('stroke', function(d) { return d.target.level; })
-                    .style('stroke', 'green')
-                    .attr('d', diagonal);
-
-                if ($scope.type === 'inputs') {
-                    link.attr("marker-start", "url(#input-arrow)"); //if input
-                } else {
-                    link.attr("marker-end", "url(#arrow)"); //if input
-                }
-
-            }
-
-            update(root);
-        }
-
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/lineage/lineageModule.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/lineage/lineageModule.js b/dashboard/v2/public/modules/lineage/lineageModule.js
deleted file mode 100755
index 4fda24d..0000000
--- a/dashboard/v2/public/modules/lineage/lineageModule.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.lineage', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/lineage/lineageResource.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/lineage/lineageResource.js b/dashboard/v2/public/modules/lineage/lineageResource.js
deleted file mode 100755
index e729a35..0000000
--- a/dashboard/v2/public/modules/lineage/lineageResource.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.lineage').factory('LineageResource', ['$resource', function($resource) {
-    return $resource('/api/atlas/lineage/hive/table/:tableName/:type/graph', {});
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/lineage/views/lineage.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/lineage/views/lineage.html b/dashboard/v2/public/modules/lineage/views/lineage.html
deleted file mode 100755
index e2e9ebd..0000000
--- a/dashboard/v2/public/modules/lineage/views/lineage.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<div class="lineage-viz" data-ng-controller="LineageController">
-    <h4 data-ng-if="!requested && !lineageData">No lineage data found</h4>
-    <i data-ng-if="requested" class="fa fa-spinner fa-spin fa-5x"></i>
-    <svg >
-        <g/>
-    </svg>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/navigation/navigationController.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/navigation/navigationController.js b/dashboard/v2/public/modules/navigation/navigationController.js
deleted file mode 100644
index a012885..0000000
--- a/dashboard/v2/public/modules/navigation/navigationController.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.navigation').controller('NavigationController', ['$scope', 'NavigationResource',
-    function($scope, NavigationResource) {
-
-        $scope.leftnav = NavigationResource.get();
-        $scope.updateVar = function(event) {
-            $scope.$$prevSibling.query = angular.element(event.target).text();
-
-        };
-
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/navigation/navigationModule.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/navigation/navigationModule.js b/dashboard/v2/public/modules/navigation/navigationModule.js
deleted file mode 100644
index 504eb1f..0000000
--- a/dashboard/v2/public/modules/navigation/navigationModule.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.navigation', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/navigation/navigationResource.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/navigation/navigationResource.js b/dashboard/v2/public/modules/navigation/navigationResource.js
deleted file mode 100644
index 3d9797d..0000000
--- a/dashboard/v2/public/modules/navigation/navigationResource.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.navigation').factory('NavigationResource', ['$resource', function($resource) {
-    return $resource('/api/atlas/types?type=TRAIT', {}, {
-        get: {
-            'method': 'GET',
-            'responseType': 'json',
-            'isArray': true,
-            'transformResponse': function(data) {
-                var results = [];
-                angular.forEach(data && data.results, function(val) {
-                    results.push(val);
-                });
-                return results;
-            }
-        }
-    });
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/navigation/views/navigation.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/navigation/views/navigation.html b/dashboard/v2/public/modules/navigation/views/navigation.html
deleted file mode 100644
index 1c94671..0000000
--- a/dashboard/v2/public/modules/navigation/views/navigation.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<div data-ng-controller="NavigationController">
-    <h4>Tags</h4>
-    <div class="list-group">
-        <a ng-repeat="nav in leftnav" ui-sref="search({ query: nav })" class="list-group-item">{{nav}} </a>
-    </div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/notification/notificationController.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/notification/notificationController.js b/dashboard/v2/public/modules/notification/notificationController.js
deleted file mode 100755
index ac36b0f..0000000
--- a/dashboard/v2/public/modules/notification/notificationController.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.system.notification').controller('NotificationController', ['$scope', 'NotificationService',
-    function($scope, NotificationService) {
-
-        $scope.getNotifications = NotificationService.getAll;
-
-        $scope.close = function(notification) {
-            NotificationService.close(notification);
-        };
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/notification/notificationModule.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/notification/notificationModule.js b/dashboard/v2/public/modules/notification/notificationModule.js
deleted file mode 100755
index e99736f..0000000
--- a/dashboard/v2/public/modules/notification/notificationModule.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.system.notification', ['ui.router']).constant('ColorCoding', {
-    info: 'success',
-    error: 'danger'
-}).run(['$rootScope', 'NotificationService', function($rootScope, NotificationService) {
-    $rootScope.$on('$locationChangeSuccess', function(evt, from, to) {
-        if (from !== to) {
-            NotificationService.reset();
-        }
-    });
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/notification/notificationService.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/notification/notificationService.js b/dashboard/v2/public/modules/notification/notificationService.js
deleted file mode 100755
index 613cc22..0000000
--- a/dashboard/v2/public/modules/notification/notificationService.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.system.notification').service('NotificationService', ['$timeout', 'lodash', 'ColorCoding', function($timeout, _, colorCoding) {
-
-    var notifications = [],
-        service = {
-            timeout: 2000,
-            getAll: function() {
-                return notifications;
-            },
-            reset: function() {
-                notifications = [];
-            },
-            close: function(notification) {
-                _.remove(notifications, notification);
-            }
-        };
-
-    _.each(colorCoding, function(value, key) {
-        service[key] = function(message, timeout) {
-            var notification = message;
-            if (_.isString(message)) {
-                notification = {
-                    message: message
-                };
-            }
-
-            notification.message = notification.msg || notification.message;
-            delete notification.msg;
-            notification.type = value;
-            notification.timeout = _.isUndefined(timeout) ? (_.isUndefined(notification.timeout) ? true : notification.timeout) : timeout;
-            notifications.push(notification);
-
-            if (notification.timeout) {
-                $timeout(function() {
-                    service.close(notification);
-                }, angular.isNumber(notification.timeout) ? notification.timeout : service.timeout);
-            }
-        };
-    });
-
-    return service;
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/notification/views/notifications.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/notification/views/notifications.html b/dashboard/v2/public/modules/notification/views/notifications.html
deleted file mode 100755
index dcc02c5..0000000
--- a/dashboard/v2/public/modules/notification/views/notifications.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<div class="container" data-ng-controller="NotificationController">
-    <alert data-ng-repeat="notification in getNotifications()" data-type="{{notification.type}}" data-close="close(notification)">
-        {{notification.message}}
-    </alert>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/searchController.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/searchController.js b/dashboard/v2/public/modules/search/searchController.js
deleted file mode 100755
index b5e6c37..0000000
--- a/dashboard/v2/public/modules/search/searchController.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.search').controller('SearchController', ['$scope', '$location', '$http', '$state', '$stateParams', 'lodash', 'SearchResource', 'NotificationService',
-    function($scope, $location, $http, $state, $stateParams, _, SearchResource, NotificationService) {
-
-        $scope.results = [];
-        $scope.resultCount = 0;
-        $scope.isCollapsed = true;
-        $scope.currentPage = 1;
-        $scope.itemsPerPage = 10;
-        $scope.filteredResults = [];
-        $scope.resultRows = [];
-        $scope.setPage = function(pageNo) {
-            $scope.currentPage = pageNo;
-        };
-        $scope.search = function(query) {
-            $scope.results = [];
-            NotificationService.reset();
-            $scope.limit = 4;
-            $scope.searchMessage = 'load-gif';
-
-            $scope.$parent.query = query;
-            SearchResource.search({
-                query: query
-            }, function searchSuccess(response) {
-                $scope.resultCount = response.count;
-                $scope.results = response.results;
-                $scope.resultRows = $scope.results.rows;
-                $scope.totalItems = $scope.resultCount;
-                $scope.transformedResults = {};
-                $scope.dataTransitioned = false;
-                if (response.results.dataType && response.results.dataType.typeName.indexOf('__') === 0) {
-                    $scope.dataTransitioned = true;
-                    var attrDef = response.results.dataType.attributeDefinitions;
-                    angular.forEach(attrDef, function(value) {
-                        if (value.dataTypeName === '__IdType') {
-                            $scope.searchKey = value.name;
-                        }
-                    });
-                    $scope.transformedResults = $scope.filterResults();
-                } else {
-                    $scope.transformedResults = $scope.resultRows;
-                }
-                if ($scope.results.rows)
-                    $scope.searchMessage = $scope.resultCount + ' results matching your search query ' + $scope.query + ' were found';
-                else
-                    $scope.searchMessage = '0 results matching your search query ' + $scope.query + ' were found';
-
-                $scope.$watch('currentPage + itemsPerPage', function() {
-                    var begin = (($scope.currentPage - 1) * $scope.itemsPerPage),
-                        end = begin + $scope.itemsPerPage;
-                    if ($scope.transformedResults) $scope.filteredResults = $scope.transformedResults.slice(begin, end);
-                    $scope.pageCount = function() {
-                        return Math.ceil($scope.resultCount / $scope.itemsPerPage);
-                    };
-                    if ($scope.results.length < 1) {
-                        NotificationService.error('No Result found', false);
-                    }
-                });
-            }, function searchError(err) {
-                $scope.searchMessage = '0 results matching your search query ' + $scope.query + ' were found';
-                NotificationService.error('Error occurred during executing search query, error status code = ' + err.status + ', status text = ' + err.statusText, false);
-            });
-            $state.go('search', {
-                query: query
-            }, {
-                location: 'replace'
-            });
-        };
-
-        $scope.filterResults = function() {
-            var res = [];
-            angular.forEach($scope.resultRows, function(value) {
-                res.push(value[$scope.searchKey]);
-            });
-            return res;
-        };
-        $scope.doToggle = function($event, el) {
-            this.isCollapsed = !el;
-        };
-        $scope.filterSearchResults = function(items) {
-            var res = {};
-            var count = 0;
-            items = _.omit(items, ['name', 'description', 'guid']);
-            angular.forEach(items, function(value, key) {
-                if (typeof value !== 'object' && (key.indexOf('$$') < 0)) {
-                    res[key] = value;
-                    count++;
-                }
-            });
-            $scope.keyLength = count;
-            return res;
-        };
-        $scope.searchQuery = $location.search();
-        $scope.query = ($location.search()).query;
-        if ($scope.query) {
-
-            $scope.search($scope.query);
-        }
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/searchDirective.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/searchDirective.js b/dashboard/v2/public/modules/search/searchDirective.js
deleted file mode 100644
index 5c9fc48..0000000
--- a/dashboard/v2/public/modules/search/searchDirective.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.search').directive(
-    "myDirective",
-    function() {
-        return {
-            restrict: 'EA',
-            template: '<a href="javascript: void(0);" button-toggle toggle="isCollapsed" class="show-more" ng-click="isCollapsed = !isCollapsed">..show more</a>',
-            link: function($scope) {
-                $scope.isCollapsed = true;
-                console.log($scope.isCollapsed);
-            },
-            transclude: true,
-            scope: {}
-        };
-    });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/searchModule.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/searchModule.js b/dashboard/v2/public/modules/search/searchModule.js
deleted file mode 100755
index ac82e3e..0000000
--- a/dashboard/v2/public/modules/search/searchModule.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.search', ['dgc.details']);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/searchResource.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/searchResource.js b/dashboard/v2/public/modules/search/searchResource.js
deleted file mode 100755
index 19de021..0000000
--- a/dashboard/v2/public/modules/search/searchResource.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.search').factory('SearchResource', ['$resource', function($resource) {
-    return $resource('/api/atlas/discovery/search/', {}, {
-        search: {
-            'method': 'GET',
-            'responseType': 'json',
-            'transformResponse': function(data) {
-                return data;
-            }
-        }
-    });
-
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/searchRoutes.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/searchRoutes.js b/dashboard/v2/public/modules/search/searchRoutes.js
deleted file mode 100755
index abfe322..0000000
--- a/dashboard/v2/public/modules/search/searchRoutes.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-//Setting up route
-angular.module('dgc.search').config(['$stateProvider',
-    function($stateProvider) {
-        $stateProvider.state('search', {
-            url: '/search?query',
-            templateUrl: '/modules/search/views/search.html',
-            controller: 'SearchController'
-        });
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/search.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/search.html b/dashboard/v2/public/modules/search/views/search.html
deleted file mode 100755
index 389364d..0000000
--- a/dashboard/v2/public/modules/search/views/search.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<div class="row mt20px">
-    <form class="col-lg-offset-3 col-lg-9" name="form" novalidate>
-        <div class="input-group">
-            <input type="text" class="form-control" placeholder="Search" data-ng-model="query" required/>
-                <span class="input-group-btn">
-                    <button class="btn btn-success" type="submit" data-ng-disabled="form.$invalid" ui-sref="search({ query: query })">
-                        <i class="glyphicon glyphicon-search white "></i>
-                    </button>
-                </span>
-        </div>
-        <div>
-            <small class="small-txt">Search: Table, DB, Column</small>
-        </div>
-    </form>
-</div>
-<div class="row mt10px">
-    <div class="col-lg-3" data-ng-include="'/modules/navigation/views/navigation.html'"></div>
-    <div class="col-lg-9">
-        <div ng-switch on="searchMessage">
-            <div ng-switch-when="load-gif" class="search-spinner"><img src="../img/spinner.gif" align="middle" /></div>
-            <div ng-switch-default><h4 ng-show="searchMessage">{{searchMessage}}</h4></div>
-        </div>
-        <ul class="list-unstyled"  ng-show='resultCount > 0'>
-            <li ng-repeat="result in filteredResults" class="searchresults">
-                <h4><a data-ui-sref="details({id:result['$id$'].id || result.guid})">{{result.name || result.guid}}</a></h4>
-
-                <p>{{result.description}}</p>
-                            <span ng-repeat="(key, value) in filterSearchResults(result)">
-                                <span ng-show="$index <= 3  "><b>{{key}}: </b>{{value}} {{(($index+1 === limit) || $last ) ? '' : ', '}}</span>
-                            </span>
-
-                <div collapse="isCollapsed">
-                                <span ng-repeat="(key, value) in filterSearchResults(result)">
-                                <span ng-show="$index > 3"><b>{{key}}: </b>{{value}}{{$last ? '' : ', '}}</span>
-                            </span>
-                </div>
-                <a href ng-show="isCollapsed && (keyLength > 4)" ng-click="doToggle($event,isCollapsed)">..show more</a>
-                <a href ng-show="!isCollapsed" ng-click="doToggle($event,isCollapsed)">..show less</a>
-
-                <h5 ng-show="!dataTransitioned">Tags : <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search({query: key})">{{key}}</a></h5>
-
-            </li>
-        </ul>
-        <div class="pull-right" ng-show='resultCount > 0'>
-            <pagination total-items="totalItems" items-per-page="itemsPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
-            <p>
-        </div>
-    </div>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/searchResult.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/searchResult.html b/dashboard/v2/public/modules/search/views/searchResult.html
deleted file mode 100755
index 0faf3bb..0000000
--- a/dashboard/v2/public/modules/search/views/searchResult.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<!--
-<h4 ng-show='results.rows.length > 0'>{{results.rows.length}} results matching your search query "{{query}}" were found</h4>
-<h4 ng-show='results.rows.length == "0"'>searching .....</h4>
-<h4 ng-show='!(results.rows)'>0 results matching your search query "{{query}}" were found</h4>-->
-
-<h4 ng-show="searchMessage">{{searchMessage}}</h4>
-
-<ul class="list-unstyled">
-    <li ng-repeat="result in filteredResults" class="searchresults">
-        <h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
-        <p>{{result.description}}</p>
-            <span ng-repeat="(key, value) in filterSearchResults(result)" >
-                <span ng-show="$index < 4"><b>{{key}}: </b>{{value}}{{$index+1 === limit ? '' : ', '}}</span>
-            </span>
-        <div collapse="isCollapsed">
-                <span ng-repeat="(key, value) in filterSearchResults(result)" >
-                <span ng-show="$index > 4"><b>{{key}}: </b>{{value}}{{$last ? '' : ', '}}</span>
-            </span>
-        </div>
-        <a href ng-show="isCollapsed && (keyLength > 4)"  ng-click="doToggle($event,isCollapsed)">..show more</a>
-        <a href ng-show="!isCollapsed"  ng-click="doToggle($event,isCollapsed)">..show less</a>
-
-        <h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
-        <div data-ng-if="!searchTypesAvailable" data-ng-include="'/modules/search/views/types/guid.html'"></div>
-    </li>
-</ul>
-<div class="resultsPagination" ng-show='filteredResults.length > 0'>
-    <pagination total-items="totalItems" items-per-page="itemsPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
-    <p>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/column.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/column.html b/dashboard/v2/public/modules/search/views/types/column.html
deleted file mode 100644
index 3bbb6c0..0000000
--- a/dashboard/v2/public/modules/search/views/types/column.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
-<p><b>Comment:</b> {{result.comment}}, <b>DataType:</b> {{result.dataType}},<b>Table:</b> {{result.table}}</p>
-<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/db.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/db.html b/dashboard/v2/public/modules/search/views/types/db.html
deleted file mode 100644
index 28467b0..0000000
--- a/dashboard/v2/public/modules/search/views/types/db.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
-<p>{{result.description}}</p>
-<p><b>locationUri:</b> {{result.locationUri}}, <b>Owner: </b>{{result.owner}}</p>
-<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/guid.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/guid.html b/dashboard/v2/public/modules/search/views/types/guid.html
deleted file mode 100755
index 483ca80..0000000
--- a/dashboard/v2/public/modules/search/views/types/guid.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<h4><a data-ui-sref="details({id:result.instanceInfo.guid})">{{result.instanceInfo.guid}}</a></h4>
-<p><b>TypeName: </b>{{result.instanceInfo.typeName}}</p>
-<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/hiveLineage.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/hiveLineage.html b/dashboard/v2/public/modules/search/views/types/hiveLineage.html
deleted file mode 100755
index b150722..0000000
--- a/dashboard/v2/public/modules/search/views/types/hiveLineage.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<a data-ui-sref="details({id:result.guid})">{{result.guid}}</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/hive_table.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/hive_table.html b/dashboard/v2/public/modules/search/views/types/hive_table.html
deleted file mode 100755
index 84b747e..0000000
--- a/dashboard/v2/public/modules/search/views/types/hive_table.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<a data-ui-sref="details({id:result.guid})">{{result["hive_table.name"]}}</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/loadprocess.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/loadprocess.html b/dashboard/v2/public/modules/search/views/types/loadprocess.html
deleted file mode 100644
index 652cd97..0000000
--- a/dashboard/v2/public/modules/search/views/types/loadprocess.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
-<p>{{result.description}}</p>
-<p><b>inputTables: </b>{{result.inputTables['id']}},<b>queryText: </b>{{result.queryText}},<b>startTime: </b>{{result.startTime | date:'medium'}},<b>endTime: </b> {{result.endTime | date:'medium'}}</p>
-<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/storagedesc.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/storagedesc.html b/dashboard/v2/public/modules/search/views/types/storagedesc.html
deleted file mode 100644
index 0587f26..0000000
--- a/dashboard/v2/public/modules/search/views/types/storagedesc.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
-<p><b>compressed: </b>{{result.compressed}},<b>outputFormat: </b>{{result.outputFormat}},<b>location: </b>{{result.location}}, <b>inputFormat: </b>{{result.inputFormat}}</p>
-<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/search/views/types/table.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/table.html b/dashboard/v2/public/modules/search/views/types/table.html
deleted file mode 100644
index a678ff9..0000000
--- a/dashboard/v2/public/modules/search/views/types/table.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
-<p>{{result.description}}</p>
-<p><b>owner: </b>{{result.owner}}, <b>createTime: </b>{{result.createTime}}</p>
-<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/distro/src/main/assemblies/src-package.xml
----------------------------------------------------------------------
diff --git a/distro/src/main/assemblies/src-package.xml b/distro/src/main/assemblies/src-package.xml
index ca03c7a..7df4c7a 100755
--- a/distro/src/main/assemblies/src-package.xml
+++ b/distro/src/main/assemblies/src-package.xml
@@ -36,11 +36,11 @@
                 <exclude>**/*.iml</exclude>
                 <exclude>**/*.log</exclude>
                 <exclude>**/*.pyc</exclude> <!-- python compiled executable -->
-                <exclude>dashboard/**/.bower-*/**</exclude> <!-- temp libs -->
-                <exclude>dashboard/v2/lib/**</exclude>  <!-- temp libs -->
-                <exclude>dashboard/v2/node*/**</exclude>  <!-- temp libs -->
-                <exclude>dashboard/v2/dist/**</exclude>  <!-- package -->
-                <exclude>dashboard/v2/**/*.min.js*</exclude> <!-- minified JS -->
+                <exclude>dashboard/.bower-*/**</exclude> <!-- temp libs -->
+                <exclude>dashboard/lib/**</exclude>  <!-- temp libs -->
+                <exclude>dashboard/node*/**</exclude>  <!-- temp libs -->
+                <exclude>dashboard/dist/**</exclude>  <!-- package -->
+                <exclude>dashboard/*.min.js*</exclude> <!-- minified JS -->
             </excludes>
         </fileSet>
     </fileSets>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a18e968..e8d18a2 100755
--- a/pom.xml
+++ b/pom.xml
@@ -1255,7 +1255,7 @@
                     <artifactId>frontend-maven-plugin</artifactId>
                     <version>0.0.23</version>
                     <configuration>
-                        <workingDirectory>../dashboard/v2/</workingDirectory>
+                        <workingDirectory>../dashboard/</workingDirectory>
                     </configuration>
                 </plugin>
 
@@ -1552,19 +1552,19 @@
                         <exclude>**/.externalToolBuilders/**</exclude>
                         <exclude>**/build.log</exclude>
                         <!-- temp libs -->
-                        <exclude>dashboard/**/.bower-*/**</exclude>
+                        <exclude>dashboard/.bower-*/**</exclude>
                         <!-- json file -->
-                        <exclude>dashboard/v2/.bowerrc</exclude>
+                        <exclude>dashboard/.bowerrc</exclude>
                         <!-- temp libs -->
-                        <exclude>dashboard/v2/lib/**</exclude>
+                        <exclude>dashboard/lib/**</exclude>
                         <!-- temp libs -->
-                        <exclude>dashboard/v2/node*/**</exclude>
+                        <exclude>dashboard/node*/**</exclude>
                         <!-- package -->
-                        <exclude>dashboard/v2/dist/**</exclude>
+                        <exclude>dashboard/dist/**</exclude>
                         <!-- lib files -->
-                        <exclude>dashboard/v2/public/lib/**</exclude>
+                        <exclude>dashboard/public/lib/**</exclude>
                         <!-- minified JS -->
-                        <exclude>dashboard/v2/**/*.min.js*</exclude>
+                        <exclude>dashboard/**/*.min.js*</exclude>
                     </excludes>
                 </configuration>
                 <executions>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 851cbdc..26512ac 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,7 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-109 Remove v2 Folder (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-90 Support offline builds (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-154 Update website for 0.5-incubating release (Venkatesh Seetharam)
 ATLAS-153 Build failure - org.glassfish:javax.el (shwethags)


[11/11] incubator-atlas git commit: ATLAS-109 Remove v2 Folder - removed left over files. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-109 Remove v2 Folder - removed left over files. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/016e36c0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/016e36c0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/016e36c0

Branch: refs/heads/master
Commit: 016e36c007f05dbba0071b1d21d9b26fa8fe0b01
Parents: c4d4797
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:54:41 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:54:41 2015 -0700

----------------------------------------------------------------------
 dashboard/public/modules/home/views/header.html   |   2 +-
 dashboard/v2/public/img/ApacheAtlasLogo.png       | Bin 3115 -> 0 bytes
 dashboard/v2/public/img/favicon.ico               | Bin 3638 -> 0 bytes
 dashboard/v2/public/img/loader.gif                | Bin 9315 -> 0 bytes
 dashboard/v2/public/img/process.png               | Bin 3204 -> 0 bytes
 dashboard/v2/public/img/spinner.gif               | Bin 8275 -> 0 bytes
 dashboard/v2/public/img/tableicon.png             | Bin 478 -> 0 bytes
 .../v2/public/modules/home/img/logo-green.png     | Bin 7271 -> 0 bytes
 dashboard/v2/public/modules/home/img/logo-sm.png  | Bin 2161 -> 0 bytes
 dashboard/v2/public/modules/home/img/splash.png   | Bin 275202 -> 0 bytes
 .../public/modules/search/views/types/view.html   | Bin 1242 -> 0 bytes
 11 files changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/public/modules/home/views/header.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/views/header.html b/dashboard/public/modules/home/views/header.html
index a0f515e..538321d 100644
--- a/dashboard/public/modules/home/views/header.html
+++ b/dashboard/public/modules/home/views/header.html
@@ -32,7 +32,7 @@
                 <a data-ui-sref="{{item.state}}">{{item.title}}</a>
             </li>
         </ul>
-        <a  ng-if="!username" class="pull-right menulink" href="https://cwiki.apache.org/confluence/display/ATLAS/Atlas+Home;jsessionid=3678CAD2035F4BE464481DD625BAFC1F"  target="_blank">Help</a>
+        <a  ng-if="!username" class="pull-right menulink" href="https://cwiki.apache.org/confluence/display/ATLAS/Atlas+Home" target="_blank">Help</a>
         <a  ng-if="!username" class="pull-right menulink" href="javascript:void(0)" ng-click="ShowAbout()">About</a>
     </nav>
 </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/img/ApacheAtlasLogo.png
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/img/ApacheAtlasLogo.png b/dashboard/v2/public/img/ApacheAtlasLogo.png
deleted file mode 100644
index 50c0ffd..0000000
Binary files a/dashboard/v2/public/img/ApacheAtlasLogo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/img/favicon.ico
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/img/favicon.ico b/dashboard/v2/public/img/favicon.ico
deleted file mode 100644
index f0c22ad..0000000
Binary files a/dashboard/v2/public/img/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/img/loader.gif
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/img/loader.gif b/dashboard/v2/public/img/loader.gif
deleted file mode 100755
index 72a9b35..0000000
Binary files a/dashboard/v2/public/img/loader.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/img/process.png
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/img/process.png b/dashboard/v2/public/img/process.png
deleted file mode 100644
index ec841af..0000000
Binary files a/dashboard/v2/public/img/process.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/img/spinner.gif
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/img/spinner.gif b/dashboard/v2/public/img/spinner.gif
deleted file mode 100644
index 06fec2a..0000000
Binary files a/dashboard/v2/public/img/spinner.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/img/tableicon.png
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/img/tableicon.png b/dashboard/v2/public/img/tableicon.png
deleted file mode 100755
index d56d328..0000000
Binary files a/dashboard/v2/public/img/tableicon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/modules/home/img/logo-green.png
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/img/logo-green.png b/dashboard/v2/public/modules/home/img/logo-green.png
deleted file mode 100755
index fc3f234..0000000
Binary files a/dashboard/v2/public/modules/home/img/logo-green.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/modules/home/img/logo-sm.png
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/img/logo-sm.png b/dashboard/v2/public/modules/home/img/logo-sm.png
deleted file mode 100755
index 7bfaa84..0000000
Binary files a/dashboard/v2/public/modules/home/img/logo-sm.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/modules/home/img/splash.png
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/home/img/splash.png b/dashboard/v2/public/modules/home/img/splash.png
deleted file mode 100755
index f85ceed..0000000
Binary files a/dashboard/v2/public/modules/home/img/splash.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/016e36c0/dashboard/v2/public/modules/search/views/types/view.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/search/views/types/view.html b/dashboard/v2/public/modules/search/views/types/view.html
deleted file mode 100644
index e26d3e0..0000000
Binary files a/dashboard/v2/public/modules/search/views/types/view.html and /dev/null differ


[05/11] incubator-atlas git commit: ATLAS-109 Remove v2 Folder. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-109 Remove v2 Folder. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/37db9955
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/37db9955
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/37db9955

Branch: refs/heads/master
Commit: 37db995596f5a571a148e584eaf4242381b19450
Parents: fd4ff8e
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:07:22 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:07:22 2015 -0700

----------------------------------------------------------------------
 dashboard/.bowerrc                              |   8 +
 dashboard/.gitignore                            |  28 ++
 dashboard/.jshintignore                         |  19 ++
 dashboard/.jshintrc                             |  63 ++++
 dashboard/README.md                             |  37 +++
 dashboard/bower.json                            |  25 ++
 dashboard/gruntfile.js                          | 187 ++++++++++++
 dashboard/package.json                          |  62 ++++
 dashboard/public/css/common.css                 | 125 ++++++++
 dashboard/public/css/d3tip.css                  |  46 +++
 dashboard/public/css/details.css                |  21 ++
 dashboard/public/css/lineage.css                |  79 +++++
 dashboard/public/css/sticky-footer-navbar.css   |  41 +++
 dashboard/public/index.html                     |  72 +++++
 dashboard/public/js/app.js                      |  80 +++++
 dashboard/public/js/init.js                     |  29 ++
 dashboard/public/js/routes.js                   |  28 ++
 .../public/modules/details/detailsController.js |  50 ++++
 .../public/modules/details/detailsModule.js     |  21 ++
 .../public/modules/details/detailsResource.js   |  34 +++
 .../public/modules/details/detailsRoutes.js     |  30 ++
 .../public/modules/details/views/attribute.html |  29 ++
 .../public/modules/details/views/details.html   |  49 +++
 .../public/modules/details/views/schema.html    |  52 ++++
 .../public/modules/home/headerController.js     |  29 ++
 dashboard/public/modules/home/homeModule.js     |  21 ++
 dashboard/public/modules/home/views/header.html |  36 +++
 dashboard/public/modules/home/views/home.html   |  21 ++
 .../public/modules/lineage/lineageController.js | 299 +++++++++++++++++++
 .../public/modules/lineage/lineageModule.js     |  21 ++
 .../public/modules/lineage/lineageResource.js   |  23 ++
 .../public/modules/lineage/views/lineage.html   |  25 ++
 .../modules/navigation/navigationController.js  |  31 ++
 .../modules/navigation/navigationModule.js      |  21 ++
 .../modules/navigation/navigationResource.js    |  36 +++
 .../modules/navigation/views/navigation.html    |  24 ++
 .../notification/notificationController.js      |  30 ++
 .../modules/notification/notificationModule.js  |  30 ++
 .../modules/notification/notificationService.js |  61 ++++
 .../notification/views/notifications.html       |  23 ++
 .../public/modules/search/searchController.js   | 119 ++++++++
 .../public/modules/search/searchDirective.js    |  34 +++
 dashboard/public/modules/search/searchModule.js |  21 ++
 .../public/modules/search/searchResource.js     |  32 ++
 dashboard/public/modules/search/searchRoutes.js |  30 ++
 .../public/modules/search/views/search.html     |  67 +++++
 .../modules/search/views/searchResult.html      |  47 +++
 .../modules/search/views/types/column.html      |  21 ++
 .../public/modules/search/views/types/db.html   |  22 ++
 .../public/modules/search/views/types/guid.html |  21 ++
 .../modules/search/views/types/hiveLineage.html |  19 ++
 .../modules/search/views/types/hive_table.html  |  19 ++
 .../modules/search/views/types/loadprocess.html |  22 ++
 .../modules/search/views/types/storagedesc.html |  21 ++
 .../modules/search/views/types/table.html       |  22 ++
 dashboard/v2/.bowerrc                           |   8 -
 dashboard/v2/.gitignore                         |  28 --
 dashboard/v2/.jshintignore                      |  19 --
 dashboard/v2/.jshintrc                          |  63 ----
 dashboard/v2/README.md                          |  37 ---
 dashboard/v2/bower.json                         |  25 --
 dashboard/v2/gruntfile.js                       | 187 ------------
 dashboard/v2/package.json                       |  62 ----
 dashboard/v2/public/css/common.css              | 125 --------
 dashboard/v2/public/css/d3tip.css               |  46 ---
 dashboard/v2/public/css/details.css             |  21 --
 dashboard/v2/public/css/lineage.css             |  79 -----
 .../v2/public/css/sticky-footer-navbar.css      |  41 ---
 dashboard/v2/public/index.html                  |  72 -----
 dashboard/v2/public/js/app.js                   |  80 -----
 dashboard/v2/public/js/init.js                  |  29 --
 dashboard/v2/public/js/routes.js                |  28 --
 .../public/modules/details/detailsController.js |  50 ----
 .../v2/public/modules/details/detailsModule.js  |  21 --
 .../public/modules/details/detailsResource.js   |  34 ---
 .../v2/public/modules/details/detailsRoutes.js  |  30 --
 .../public/modules/details/views/attribute.html |  29 --
 .../public/modules/details/views/details.html   |  49 ---
 .../v2/public/modules/details/views/schema.html |  52 ----
 .../v2/public/modules/home/headerController.js  |  29 --
 dashboard/v2/public/modules/home/homeModule.js  |  21 --
 .../v2/public/modules/home/views/header.html    |  36 ---
 .../v2/public/modules/home/views/home.html      |  21 --
 .../public/modules/lineage/lineageController.js | 299 -------------------
 .../v2/public/modules/lineage/lineageModule.js  |  21 --
 .../public/modules/lineage/lineageResource.js   |  23 --
 .../public/modules/lineage/views/lineage.html   |  25 --
 .../modules/navigation/navigationController.js  |  31 --
 .../modules/navigation/navigationModule.js      |  21 --
 .../modules/navigation/navigationResource.js    |  36 ---
 .../modules/navigation/views/navigation.html    |  24 --
 .../notification/notificationController.js      |  30 --
 .../modules/notification/notificationModule.js  |  30 --
 .../modules/notification/notificationService.js |  61 ----
 .../notification/views/notifications.html       |  23 --
 .../public/modules/search/searchController.js   | 119 --------
 .../v2/public/modules/search/searchDirective.js |  34 ---
 .../v2/public/modules/search/searchModule.js    |  21 --
 .../v2/public/modules/search/searchResource.js  |  32 --
 .../v2/public/modules/search/searchRoutes.js    |  30 --
 .../v2/public/modules/search/views/search.html  |  67 -----
 .../modules/search/views/searchResult.html      |  47 ---
 .../modules/search/views/types/column.html      |  21 --
 .../public/modules/search/views/types/db.html   |  22 --
 .../public/modules/search/views/types/guid.html |  21 --
 .../modules/search/views/types/hiveLineage.html |  19 --
 .../modules/search/views/types/hive_table.html  |  19 --
 .../modules/search/views/types/loadprocess.html |  22 --
 .../modules/search/views/types/storagedesc.html |  21 --
 .../modules/search/views/types/table.html       |  22 --
 distro/src/main/assemblies/src-package.xml      |  10 +-
 pom.xml                                         |  16 +-
 release-log.txt                                 |   1 +
 113 files changed, 2477 insertions(+), 2476 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/.bowerrc
----------------------------------------------------------------------
diff --git a/dashboard/.bowerrc b/dashboard/.bowerrc
new file mode 100644
index 0000000..010bb05
--- /dev/null
+++ b/dashboard/.bowerrc
@@ -0,0 +1,8 @@
+{
+  "directory": "../webapp/target/dist/lib/",
+  "storage": {
+          "packages": ".bower-cache",
+          "registry": ".bower-registry"
+  },
+  "tmp": ".bower-tmp"
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/.gitignore
----------------------------------------------------------------------
diff --git a/dashboard/.gitignore b/dashboard/.gitignore
new file mode 100644
index 0000000..e5ee796
--- /dev/null
+++ b/dashboard/.gitignore
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.DS_Store
+.bower-*/
+.idea/
+node_modules/
+lib/
+public/lib
+public/dist
+*.log
+*.tgz
+node/
+dist/
+**/app.min.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/.jshintignore
----------------------------------------------------------------------
diff --git a/dashboard/.jshintignore b/dashboard/.jshintignore
new file mode 100644
index 0000000..efd063f
--- /dev/null
+++ b/dashboard/.jshintignore
@@ -0,0 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+test/coverage/**
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/.jshintrc
----------------------------------------------------------------------
diff --git a/dashboard/.jshintrc b/dashboard/.jshintrc
new file mode 100644
index 0000000..62b5e65
--- /dev/null
+++ b/dashboard/.jshintrc
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+{
+    "browser": true, // Standard browser globals e.g. `window`, `document`.
+    "bitwise": false, // Prohibit bitwise operators (&, |, ^, etc.).
+    "camelcase": false, // Permit only camelcase for `var` and `object indexes`.
+    "curly": false, // Require {} for every new block or scope.
+    "devel": true, // Allow development statements e.g. `console.log();`.
+    "esnext": true, // Allow ES.next specific features such as `const` and `let`.
+    "eqeqeq": true, // Require triple equals i.e. `===`.
+    "immed": true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );`
+    "indent": false, // Specify indentation spacing
+    "latedef": true, // Prohibit variable use before definition.
+    "node": true, // Enable globals available when code is running inside of the NodeJS runtime environment.
+    "newcap": false, // Require capitalization of all constructor functions e.g. `new F()`.
+    "noarg": true, // Prohibit use of `arguments.caller` and `arguments.callee`.
+    "noempty": true, // Prohibit use of empty blocks.
+    "quotmark": false, // Define quotes to string values.
+    "regexp": true, // Prohibit `.` and `[^...]` in regular expressions.
+    "strict": true, // Require `use strict` pragma in every file.
+    "smarttabs": false, // Suppresses warnings about mixed tabs and spaces
+    "trailing": true, // Prohibit trailing whitespaces.
+    "undef": true, // Require all non-global variables be declared before they are used.
+    "unused": true, // Warn unused variables.
+    "globals": { // Globals variables.
+        "angular": true
+    },
+    "predef": [ // Extra globals.
+        "define",
+        "require",
+        "exports",
+        "module",
+        "spyOn",
+        "describe",
+        "xdescribe",
+        "before",
+        "beforeEach",
+        "after",
+        "afterEach",
+        "jasmine",
+        "it",
+        "xit",
+        "inject",
+        "expect",
+        "ngGridFlexibleHeightPlugin"
+    ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/README.md
----------------------------------------------------------------------
diff --git a/dashboard/README.md b/dashboard/README.md
new file mode 100644
index 0000000..0957582
--- /dev/null
+++ b/dashboard/README.md
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+# Apache Atlas
+
+## Instructions
+
+### Prerequisite
+1. Nodejs (http://nodejs.org/download/)
+2. ```npm install -g grunt-cli```
+
+### Setup:
+
+```
+git clone $git-repo-url
+git checkout dal
+cd dashboard/v2
+npm install
+grunt server
+```
+Server will start at: 
+<http://localhost:3010/>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/bower.json
----------------------------------------------------------------------
diff --git a/dashboard/bower.json b/dashboard/bower.json
new file mode 100644
index 0000000..2ffdc90
--- /dev/null
+++ b/dashboard/bower.json
@@ -0,0 +1,25 @@
+{
+    "name": "atlas-metadata",
+    "description": "Apache Atlas",
+    "version": "1.0.0-SNAPSHOT",
+    "devDependencies": {
+        "angular": "~1.2.15",
+        "angular-resource": "~1.2.15",
+        "angular-cookies": "~1.2.15",
+        "angular-route": "~1.2.15",
+        "angular-sanitize": "~1.2.15",
+        "bootstrap": "~3.1.1",
+        "angular-bootstrap": "~0.12.0",
+        "angular-ui-router": "~0.2.13",
+        "d3": "~3.5.3",
+        "d3-tip": "~0.6.6",
+        "lodash": "~3.0.0",
+        "angular-ui-utils": "~0.1.1",
+        "font-awesome": "~4.2.0",
+        "closure-compiler": "https://dl.google.com/closure-compiler/compiler-20140814.zip",
+        "ng-closure-runner": "https://raw.github.com/angular/ng-closure-runner/v0.2.3/assets/ng-closure-runner.zip"
+    },
+    "resolutions": {
+        "d3": "~3.5.3"
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/gruntfile.js
----------------------------------------------------------------------
diff --git a/dashboard/gruntfile.js b/dashboard/gruntfile.js
new file mode 100644
index 0000000..76ca84a
--- /dev/null
+++ b/dashboard/gruntfile.js
@@ -0,0 +1,187 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+var git = require('git-rev');
+
+module.exports = function(grunt) {
+    var classPathSep = (process.platform === "win32") ? ';' : ':',
+        gitHash = '',
+        pkg = grunt.file.readJSON('package.json'),
+        distPath = '../webapp/target/dist';
+
+    grunt.initConfig({
+        watch: {
+            options: {
+                livereload: 35729
+            },
+            js: {
+                files: ['public/**/*.js', '!public/lib/**', '!public/dist/**', '!public/js/app.min.js'],
+                tasks: ['shell']
+            },
+            html: {
+                files: ['public/**/*.html'],
+                tasks: ['copy:dist']
+            },
+            css: {
+                files: ['public/**/*.css'],
+                tasks: ['copy:dist']
+            },
+            image: {
+                files: ['public/**/*.{ico,gif,png}'],
+                tasks: ['copy:dist']
+            }
+        },
+        jshint: {
+            all: {
+                src: ['gruntfile.js', 'package.json', 'server.js', 'server/**/*.js', 'public/**/*.js', '!public/lib/**', '!public/dist/**', '!public/**/app.min.js'],
+                options: {
+                    jshintrc: true
+                }
+            }
+        },
+        concurrent: {
+            tasks: ['watch', 'proxitserver'],
+            options: {
+                logConcurrentOutput: true
+            }
+        },
+        jsbeautifier: {
+            'default': {
+                src: ['<%= jshint.all.src %>', 'bower.json'],
+                options: {
+                    js: {
+                        preserveNewlines: true,
+                        maxPreserveNewlines: 2
+                    }
+                }
+            },
+            'build': {
+                src: '<%= jsbeautifier.default.src %>',
+                options: {
+                    mode: 'VERIFY_ONLY',
+                    js: '<%= jsbeautifier.default.options.js%>'
+                }
+            }
+        },
+        bower: {
+            install: {
+                options: {
+                    verbose: true,
+                    targetDir: '.bower-components'
+                }
+            }
+        },
+        dist: distPath + '/js/app.min.js',
+        modules: grunt.file.expand(
+            'public/js/app.js',
+            'public/js/routes.js',
+            'public/modules/**/*Module.js',
+            'public/modules/**/*.js',
+            'public/js/init.js'
+        ).join(' '),
+        shell: {
+            min: {
+                command: 'java ' +
+                    '-cp ' + distPath + '/lib/closure-compiler/compiler.jar' + classPathSep +
+                    '' + distPath + '/lib/ng-closure-runner/ngcompiler.jar ' +
+                    'org.angularjs.closurerunner.NgClosureRunner ' +
+                    '--compilation_level SIMPLE_OPTIMIZATIONS ' +
+                    //'--formatting PRETTY_PRINT ' +
+                    '--language_in ECMASCRIPT5_STRICT ' +
+                    '--angular_pass ' +
+                    '--manage_closure_dependencies ' +
+                    '--js <%= modules %> ' +
+                    '--js_output_file <%= dist %>'
+            }
+        },
+        devUpdate: {
+            main: {
+                options: {
+                    updateType: 'force'
+                }
+            }
+        },
+        compress: {
+            release: {
+                options: {
+                    archive: function() {
+                        return [pkg.name, pkg.version, gitHash].join('_') + '.tgz';
+                    }
+                },
+                src: ['node_modules/**', 'package.json', 'server.js', 'server/**', 'public/**', '!public/js/**', '!public/modules/**/*.js']
+            }
+        },
+        copy: {
+            dist: {
+                expand: true,
+                cwd: 'public/',
+                src: ['**', '!js/**/*.js', '!modules/**/*.js'],
+                dest: distPath
+            }
+        },
+        clean: {
+            build: [distPath],
+            options: {
+                force: true
+            }
+        },
+        proxit: {
+            dev: {
+                options: {
+                    'port': 3010,
+                    'verbose': true,
+                    'hosts': [{
+                        'hostnames': ['*'],
+                        'routes': {
+                            '/': distPath,
+                            '/api': 'http://162.249.6.50:21000/api'
+                        }
+                    }]
+                }
+            }
+        }
+    });
+
+    require('load-grunt-tasks')(grunt);
+    grunt.registerTask('default', ['devUpdate', 'bower', 'jshint', 'jsbeautifier:default']);
+
+    grunt.registerTask('server', ['jshint', 'clean', 'bower', 'copy:dist', 'minify', 'concurrent']);
+    grunt.registerTask('build', ['copy:dist', 'minify']);
+
+    grunt.registerTask('minify', 'Minify the all js', function() {
+        var done = this.async();
+        grunt.task.run(['shell:min']);
+        done();
+    });
+    grunt.loadNpmTasks('proxit');
+    grunt.registerTask('proxitserver', 'Proxit', function() {
+        var done = this.async();
+        grunt.task.run(['proxit:dev']);
+        done();
+    });
+    grunt.registerTask('release', 'Create release package', function() {
+        var done = this.async();
+        git.short(function(str) {
+            gitHash = str;
+            grunt.task.run(['minify', 'compress:release']);
+            done();
+        });
+    });
+};

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/package.json
----------------------------------------------------------------------
diff --git a/dashboard/package.json b/dashboard/package.json
new file mode 100644
index 0000000..3772654
--- /dev/null
+++ b/dashboard/package.json
@@ -0,0 +1,62 @@
+{
+    "name": "atlas-metadata",
+    "description": "Apache Atlas",
+    "version": "0.5.0-incubating",
+    "private": true,
+    "repository": {
+        "type": "git",
+        "url": "https://git-wip-us.apache.org/repos/asf/incubator-atlas.git"
+    },
+    "engines": {
+        "node": "0.10.x",
+        "npm": "1.3.x"
+    },
+    "keywords": [
+        "Apache",
+        "Atlas",
+        "HortonWorks"
+    ],
+    "dependencies": {
+        "body-parser": "^1.2.0",
+        "bower": "~1.3.1",
+        "compression": "^1.0.2",
+        "consolidate": "~0.10.0",
+        "cookie-parser": "^1.0.1",
+        "cookies": "~0.4.0",
+        "express": "~4.2.0",
+        "express-load": "^1.1.14",
+        "forever": "~0.11.1",
+        "lodash": "~2.4.1",
+        "method-override": "^1.0.0",
+        "morgan": "^1.0.1",
+        "path-extra": "~0.1.1",
+        "proxit": "^0.6.0",
+        "q": "~1.0.1",
+        "rc": "~0.3.4",
+        "serve-favicon": "^2.0.0",
+        "static-favicon": "^2.0.0-alpha",
+        "superagent": "^0.20.0",
+        "swig": "~1.3.2",
+        "view-helpers": "~0.1.4",
+        "grunt-contrib-clean": "~0.6.0"
+    },
+    "devDependencies": {
+        "git-rev": "^0.2.1",
+        "grunt": "~0.4.2",
+        "grunt-bower-task": "~0.4.0",
+        "grunt-cli": "~0.1.11",
+        "grunt-concurrent": "^1.0.0",
+        "grunt-contrib-compress": "^0.13.0",
+        "grunt-contrib-jshint": "^0.11.0",
+        "grunt-contrib-watch": "^0.6.0",
+        "grunt-dev-update": "^1.0.2",
+        "grunt-jsbeautifier": "^0.2.6",
+        "grunt-nodemon": "^0.4.0",
+        "grunt-shell": "^1.1.1",
+        "load-grunt-tasks": "^3.1.0",
+        "grunt-nginx": "~0.2.2",
+        "grunt-contrib-copy": "~0.8.0",
+        "grunt-contrib-clean": "~0.6.0",
+        "proxit": "~0.6.4"
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/css/common.css
----------------------------------------------------------------------
diff --git a/dashboard/public/css/common.css b/dashboard/public/css/common.css
new file mode 100644
index 0000000..c6af853
--- /dev/null
+++ b/dashboard/public/css/common.css
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+div.separator {
+    position: relative;
+    font-size: 18px;
+    color: #aaa;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding-top: 10px;
+    padding-bottom: 10px;
+}
+
+span.separator {
+    display: block;
+    position: absolute;
+    left: 50%;
+    top: -2px;
+    margin-left: -25px;
+    background-color: #fff;
+    width: 50px;
+    text-align: center;
+}
+
+hr.separator {
+    background-color: #cdcdcd;
+    height: 1px;
+    margin-top: 0px !important;
+    margin-bottom: 0px !important;
+}
+
+.pointer {
+    cursor: pointer;
+}
+
+.form-control {
+    border-color: #5cbb5a;
+    border-width: 2px;
+}
+
+.small-txt {
+    color: #999999;
+    padding-left: 14px;
+}
+
+/* Header background */
+header.navbar-top {
+    background-color: #fafafa;
+    border-bottom: solid 4px #5cbb5a;
+    margin-bottom: 0px;
+}
+
+header .container {
+    padding: 12px;
+}
+
+/* Footer */
+footer.navbar-bottom {
+    background-color: #fafafa;
+    border-top: solid 4px #5cbb5a;
+}
+
+footer.navbar-bottom p {
+    color: #333333;
+    margin: 23px 10px 10px;
+}
+
+footer.navbar-bottom img {
+    padding-left: 5px;
+    margin-top: -21px;
+}
+
+.searchresults {
+    border: 1px solid #ddd;
+    padding: 10px;
+}
+
+.mt10px {
+    margin-top: 10px;
+}
+
+.mt20px {
+    margin-top: 20px;
+}
+
+.searchresults:first-child {
+    border-top-right-radius: 4px;
+    border-top-left-radius: 4px;
+}
+
+.searchresults:last-child {
+    margin-bottom: 0;
+    border-bottom-right-radius: 4px;
+    border-bottom-left-radius: 4px;
+}
+.searchresults hr {
+    margin: 0;
+    border: 0;
+}
+.searchresults .well {
+    background-color: #fff;
+    border: 0;
+    box-shadow: none;
+    height: auto;
+    min-height: 0;
+    padding: 5px 5px 5px 0;
+}
+.search-spinner {
+    text-align: center;
+}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/css/d3tip.css
----------------------------------------------------------------------
diff --git a/dashboard/public/css/d3tip.css b/dashboard/public/css/d3tip.css
new file mode 100644
index 0000000..11e12b2
--- /dev/null
+++ b/dashboard/public/css/d3tip.css
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.d3-tip {
+    line-height: 1;
+    font-weight: bold;
+    padding: 12px;
+    background: rgba(0, 0, 0, 0.8);
+    color: #fff;
+    border-radius: 2px;
+}
+
+/* Creates a small triangle extender for the tooltip */
+.d3-tip:after {
+    box-sizing: border-box;
+    display: inline;
+    font-size: 10px;
+    width: 100%;
+    line-height: 1;
+    color: rgba(0, 0, 0, 0.8);
+    content: "\25BC";
+    position: absolute;
+    text-align: center;
+}
+
+/* Style northward tooltips differently */
+.d3-tip.n:after {
+    margin: -1px 0 0 0;
+    top: 100%;
+    left: 0;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/css/details.css
----------------------------------------------------------------------
diff --git a/dashboard/public/css/details.css b/dashboard/public/css/details.css
new file mode 100644
index 0000000..156d5f6
--- /dev/null
+++ b/dashboard/public/css/details.css
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+.tab-content .table-bordered {
+    border-top: none;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/css/lineage.css
----------------------------------------------------------------------
diff --git a/dashboard/public/css/lineage.css b/dashboard/public/css/lineage.css
new file mode 100644
index 0000000..fddc0b0
--- /dev/null
+++ b/dashboard/public/css/lineage.css
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*g circle {*/
+    /*cursor: pointer;*/
+    /*stroke: green;*/
+    /*stroke-width: 2px;*/
+    /*fill: url(#process-image);*/
+/*}*/
+
+/*g circle.empty {*/
+    /*fill: #90ef96;*/
+/*}*/
+
+.link {
+    fill: none;
+    stroke: green;
+    stroke-width: 2px;
+
+}
+
+g text {
+    pointer-events: none;
+    text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff;
+    text-align: center;
+}
+
+.d3-tip pre {
+    max-width: 400px;
+}
+
+div.lineage {
+    border-bottom: 2px solid #006600;
+
+}
+
+/*.node rect {*/
+    /*stroke: #333;*/
+    /*fill: #fff;*/
+/*}*/
+
+.edgePath path {
+    stroke: #333;
+    fill: #333;
+    stroke-width: 1.5px;
+}
+
+/*.node rect,*/
+/*.node circle {*/
+    /*stroke: #333;*/
+    /*fill: #fff;*/
+    /*stroke-width: 1.5px;*/
+/*}*/
+
+.lineage-viz {
+    margin: 0 auto;
+    overflow: auto;
+    /*border: 1px solid #ddd;
+    border-top: none;*/
+
+}
+/*.images {*/
+    /*background-image: url("../img/process.png");*/
+/*}​*/

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/css/sticky-footer-navbar.css
----------------------------------------------------------------------
diff --git a/dashboard/public/css/sticky-footer-navbar.css b/dashboard/public/css/sticky-footer-navbar.css
new file mode 100644
index 0000000..3a2444b
--- /dev/null
+++ b/dashboard/public/css/sticky-footer-navbar.css
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* Sticky footer styles
+-------------------------------------------------- */
+html {
+  position: relative;
+  min-height: 100%;
+}
+body {
+  /* Margin bottom by footer height */
+  margin-bottom: 60px;
+}
+
+.content {
+  padding-bottom: 90px;
+}
+
+.footer {
+  position: absolute;
+  bottom: 0;
+  width: 100%;
+  /* Set the fixed height of the footer here */
+  height: 60px;
+  background-color: #f5f5f5;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/index.html
----------------------------------------------------------------------
diff --git a/dashboard/public/index.html b/dashboard/public/index.html
new file mode 100644
index 0000000..5ce839d
--- /dev/null
+++ b/dashboard/public/index.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<html lang="en" xmlns="http://www.w3.org/1999/xhtml" itemscope="itemscope" itemtype="http://schema.org/Product">
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width,initial-scale=1">
+
+  <title>Apache Atlas</title>
+  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+
+  <link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
+
+  <link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
+  <link rel="stylesheet" href="/css/sticky-footer-navbar.css">
+  <link rel="stylesheet" href="/css/common.css">
+  <link rel="stylesheet" href="/css/details.css">
+  <link rel="stylesheet" href="/css/lineage.css">
+  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
+ </head>
+
+
+<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
+<body>
+<header class="navbar navbar-static-top navbar-top" data-role="navigation">
+    <div class="container" data-ng-include="'/modules/home/views/header.html'"></div>
+</header>
+<div class="content">
+    <div data-ng-include="'/modules/notification/views/notifications.html'"></div>
+    <div data-ui-view class="container"></div>
+</div>
+<footer class="footer navbar-bottom">
+    <div class="container">
+        <!--<p align="right">Powered by<img src="modules/home/img/logo-green.png"></p>-->
+    </div>
+</footer>
+
+<script src="lib/jquery/dist/jquery.js"></script>
+<script src="lib/angular/angular.js"></script>
+<script src="lib/bootstrap/dist/js/bootstrap.js"></script>
+<script src="lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>
+<script src="lib/angular-cookies/angular-cookies.js"></script>
+<script src="lib/angular-resource/angular-resource.js"></script>
+<script src="lib/angular-route/angular-route.js"></script>
+<script src="lib/angular-sanitize/angular-sanitize.js"></script>
+<script src="lib/angular-ui-router/release/angular-ui-router.js"></script>
+<script src="lib/angular-ui-utils/ui-utils.js"></script>
+<script src="lib/lodash/lodash.js"></script>
+<script src="/lib/d3/d3.js"></script>
+<script src="/lib/d3-tip/index.js"></script>
+
+<script src="js/app.min.js"></script>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/js/app.js
----------------------------------------------------------------------
diff --git a/dashboard/public/js/app.js b/dashboard/public/js/app.js
new file mode 100644
index 0000000..1bdb316
--- /dev/null
+++ b/dashboard/public/js/app.js
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc', ['ngCookies',
+    'ngResource',
+    'ui.bootstrap',
+    'ui.router',
+    'dgc.system',
+    'dgc.home',
+    'dgc.search',
+    'dgc.navigation'
+]);
+
+angular.module('dgc.system', ['dgc.system.notification']);
+
+angular.module('dgc').factory('lodash', ['$window',
+    function($window) {
+        return $window._;
+    }
+]).factory('d3', ['$window',
+    function($window) {
+        return $window.d3;
+    }
+]).factory('Global', ['$window', '$location',
+    function($window, $location) {
+        return {
+            user: $location.search()['user.name'],
+            authenticated: !!$window.user,
+            renderErrors: $window.renderErrors
+        };
+    }
+]).factory('HttpInterceptor', ['Global', function(Global) {
+    return {
+        'request': function(config) {
+            if (config.url && (config.url.indexOf('api/atlas/') === 0 || config.url.indexOf('/api/atlas/') === 0)) {
+                config.params = config.params || {};
+                config.params['user.name'] = Global.user;
+            }
+            return config;
+        }
+    };
+}]).config(['$httpProvider', function($httpProvider) {
+    $httpProvider.interceptors.push('HttpInterceptor');
+}]).run(['$rootScope', 'Global', 'NotificationService', 'lodash', 'd3', function($rootScope, Global, NotificationService, lodash, d3) {
+    var errors = Global.renderErrors;
+    if (angular.isArray(errors) || angular.isObject(errors)) {
+        lodash.forEach(errors, function(err) {
+            err = angular.isObject(err) ? err : {
+                message: err
+            };
+            err.timeout = false;
+            NotificationService.error(err);
+        });
+    } else {
+        if (errors) {
+            errors.timeout = false;
+            NotificationService.error(errors);
+        }
+    }
+    $rootScope.$on('$stateChangeStart', function() {
+        d3.selectAll('.d3-tip').remove();
+    });
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/js/init.js
----------------------------------------------------------------------
diff --git a/dashboard/public/js/init.js b/dashboard/public/js/init.js
new file mode 100644
index 0000000..aa99935
--- /dev/null
+++ b/dashboard/public/js/init.js
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.element(document).ready(function() {
+    /* Fixing facebook bug with redirect */
+    if (window.location.hash === '#_=_') window.location.hash = '#!';
+
+    //Then init the app
+    angular.bootstrap(document, ['dgc'], {
+        strictDi: true
+    });
+});

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/js/routes.js
----------------------------------------------------------------------
diff --git a/dashboard/public/js/routes.js b/dashboard/public/js/routes.js
new file mode 100644
index 0000000..8d0a3ac
--- /dev/null
+++ b/dashboard/public/js/routes.js
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+//Setting up route
+angular.module('dgc').config(['$locationProvider', '$urlRouterProvider',
+    function($locationProvider, $urlRouterProvider) {
+        $locationProvider.hashPrefix('!');
+        // For unmatched routes:
+        $urlRouterProvider.otherwise('/search');
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/detailsController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/detailsController.js b/dashboard/public/modules/details/detailsController.js
new file mode 100644
index 0000000..0e96d42
--- /dev/null
+++ b/dashboard/public/modules/details/detailsController.js
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.details').controller('DetailsController', ['$window', '$scope', '$stateParams', 'DetailsResource',
+    function($window, $scope, $stateParams, DetailsResource) {
+
+        $scope.tableName = false;
+        $scope.isTable = false;
+
+        DetailsResource.get({
+            id: $stateParams.id
+        }, function(data) {
+            $scope.details = data;
+            $scope.schemas = data;
+            $scope.tableName = data.values.name;
+            $scope.isTable = data.typeName === 'Table';
+        });
+
+        $scope.isString = angular.isString;
+
+        $scope.onActivate = function tabActivate(tabname) {
+            $scope.$broadcast('render-lineage', {
+                type: tabname,
+                tableName: $scope.tableName
+            });
+        };
+
+        $scope.goBack = function() {
+            $window.history.back();
+        };
+
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/detailsModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/detailsModule.js b/dashboard/public/modules/details/detailsModule.js
new file mode 100644
index 0000000..987750a
--- /dev/null
+++ b/dashboard/public/modules/details/detailsModule.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.details', ['dgc.lineage']);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/detailsResource.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/detailsResource.js b/dashboard/public/modules/details/detailsResource.js
new file mode 100644
index 0000000..af2f249
--- /dev/null
+++ b/dashboard/public/modules/details/detailsResource.js
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.details').factory('DetailsResource', ['$resource', function($resource) {
+    return $resource('/api/atlas/entities/:id', {}, {
+        get: {
+            method: 'GET',
+            transformResponse: function(data) {
+                if (data) {
+                    return angular.fromJson(data.definition);
+                }
+            },
+            responseType: 'json'
+        }
+    });
+
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/detailsRoutes.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/detailsRoutes.js b/dashboard/public/modules/details/detailsRoutes.js
new file mode 100644
index 0000000..17e32fa
--- /dev/null
+++ b/dashboard/public/modules/details/detailsRoutes.js
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.details').config(['$stateProvider',
+    function($stateProvider) {
+
+        // states for my app
+        $stateProvider.state('details', {
+            url: '/details/:id',
+            templateUrl: '/modules/details/views/details.html'
+        });
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/views/attribute.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/views/attribute.html b/dashboard/public/modules/details/views/attribute.html
new file mode 100644
index 0000000..89fa067
--- /dev/null
+++ b/dashboard/public/modules/details/views/attribute.html
@@ -0,0 +1,29 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!--<div>-->
+<!--{{key}}:-->
+
+<!--{{value}}-->
+<!--</div>-->
+
+<div class="row" data-ng-repeat="(key1, value1) in value" ng-if="value1">
+    <div class="col-md-6" data-ng-if="!isString(value1)" data-ng-repeat="(key2, value2) in value1 track by $index"></div>
+    <div data-ng-if="isString(value2)" data-ng-repeat="(key3, value3) in value2"> {{key3}}: {{value3}}</div>
+    <div class="col-md-6" data-ng-if="isString(value1)"> {{key1}} : {{value1 | date:'medium'}}</div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/views/details.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/views/details.html b/dashboard/public/modules/details/views/details.html
new file mode 100644
index 0000000..19f0ce0
--- /dev/null
+++ b/dashboard/public/modules/details/views/details.html
@@ -0,0 +1,49 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<div class="row" data-ng-controller="DetailsController">
+    <ul class="breadcrumb">
+        <li><button class="btn btn-link" data-ng-click="goBack()">Back To Result</button> </li>
+    </ul>
+    <div role="tabpanel" class="col-lg-12">
+        <h2>Name: {{details.values.name}}</h2>
+        <h4>Description: {{details.values.description}}</h4>
+        <tabset>
+            <tab heading="Details">
+                <table class="table table-bordered">
+                    <thead>
+                    <tr>
+                        <th>Key</th>
+                        <th>Value</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr data-ng-repeat="(key,value) in details.values" ng-if="value && !(key==='columns') && !(key==='name') && !(key==='description')">
+                        <td>{{key}}</td>
+                        <td data-ng-if="!isString(value)" data-ng-include="'/modules/details/views/attribute.html'"></td>
+                        <td data-ng-if="isString(value)">{{value | date:'medium'}}</td>
+                    </tr>
+                    </tbody>
+                </table>
+            </tab>
+            <tab data-heading="Schema" data-ng-if="isTable"><ng-include src="'/modules/details/views/schema.html'"/></tab>
+            <tab data-heading="Output" data-ng-if="isTable" data-disable="!tableName" data-select="onActivate('outputs')"><ng-include data-table-type="outputs" src="'/modules/lineage/views/lineage.html'"/></tab>
+            <tab data-heading="Input"  data-ng-if="isTable" data-disable="!tableName" data-select="onActivate('inputs')"><ng-include data-table-type="inputs" src="'/modules/lineage/views/lineage.html'"/></tab>
+        </tabset>
+    </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/details/views/schema.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/details/views/schema.html b/dashboard/public/modules/details/views/schema.html
new file mode 100644
index 0000000..1aaf96d
--- /dev/null
+++ b/dashboard/public/modules/details/views/schema.html
@@ -0,0 +1,52 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<table class="table table-bordered">
+    <thead>
+    <tr>
+        <th>Name</th>
+        <th>Comment</th>
+        <th>DataType</th>
+    </tr>
+    </thead>
+    <tbody>
+    <tr>
+        <td> {{details.values.columns[0].values.name}}</td>
+        <td>{{details.values.columns[0].values.comment}}</td>
+        <td> {{details.values.columns[0].values.dataType}}</td>
+
+    </tr>
+    <tr>
+
+        <td> {{details.values.columns[1].values.name}}</td>
+        <td>{{details.values.columns[1].values.comment}}</td>
+        <td> {{details.values.columns[1].values.dataType}}</td>
+    </tr>
+    <tr>
+
+        <td> {{details.values.columns[2].values.name}}</td>
+        <td>{{details.values.columns[2].values.comment}}</td>
+        <td> {{details.values.columns[2].values.dataType}}</td>
+    </tr>
+    <tr>
+
+        <td> {{details.values.columns[3].values.name}}</td>
+        <td>{{details.values.columns[3].values.comment}}</td>
+        <td> {{details.values.columns[3].values.dataType}}</td>
+    </tr>
+    </tbody>
+</table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/home/headerController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/headerController.js b/dashboard/public/modules/home/headerController.js
new file mode 100644
index 0000000..a8d1411
--- /dev/null
+++ b/dashboard/public/modules/home/headerController.js
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.home').controller('HeaderController', ['$scope', function($scope) {
+
+    $scope.menu = [];
+
+    $scope.isCollapsed = true;
+    $scope.isLoggedIn = function() {
+        return true;
+    };
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/home/homeModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/homeModule.js b/dashboard/public/modules/home/homeModule.js
new file mode 100644
index 0000000..017811c
--- /dev/null
+++ b/dashboard/public/modules/home/homeModule.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.home', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/home/views/header.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/views/header.html b/dashboard/public/modules/home/views/header.html
new file mode 100644
index 0000000..85c5f4d
--- /dev/null
+++ b/dashboard/public/modules/home/views/header.html
@@ -0,0 +1,36 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<div data-ng-controller="HeaderController" class="row">
+    <div class="navbar-header">
+        <button class="navbar-toggle" type="button" data-ng-click="isCollapsed = !isCollapsed">
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+        </button>
+ <a data-ui-sref="search({ query: '' })" data-ui-sref-active="active"><img src="../img/ApacheAtlasLogo.png" /></a>
+    </div>
+    <nav class="collapse navbar-collapse" data-collapse="isCollapsed" data-role="navigation">
+        <ul class="navbar-nav nav" data-ng-if="isLoggedIn()">
+            <li data-ng-repeat="item in menu" data-ui-sref-active="active">
+                <a data-ui-sref="{{item.state}}">{{item.title}}</a>
+            </li>
+        </ul>
+    </nav>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/home/views/home.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/views/home.html b/dashboard/public/modules/home/views/home.html
new file mode 100644
index 0000000..4e93782
--- /dev/null
+++ b/dashboard/public/modules/home/views/home.html
@@ -0,0 +1,21 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<section class="text-center">
+    <img data-ui-sref="search" class="pointer" src="modules/home/img/splash.png"/>
+</section>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/lineage/lineageController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/lineageController.js b/dashboard/public/modules/lineage/lineageController.js
new file mode 100644
index 0000000..b8bd09c
--- /dev/null
+++ b/dashboard/public/modules/lineage/lineageController.js
@@ -0,0 +1,299 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * 'License'); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.lineage').controller('LineageController', ['$element', '$scope', '$state', '$stateParams', 'lodash', 'LineageResource', 'd3', 'DetailsResource', '$q',
+    function($element, $scope, $state, $stateParams, _, LineageResource, d3, DetailsResource, $q) {
+        var guidsList = [];
+
+        function getLineageData(tableData, callRender) {
+            LineageResource.get({
+                tableName: tableData.tableName,
+                type: tableData.type
+            }, function lineageSuccess(response) {
+                if (!_.isEmpty(response.results.values.vertices)) {
+                    var allGuids = loadProcess(response.results.values.edges, response.results.values.vertices);
+                    allGuids.then(function(res) {
+                        guidsList = res;
+                        $scope.lineageData = transformData(response.results);
+                        if (callRender) {
+                            render();
+                        }
+                    });
+                }
+                $scope.requested = false;
+            });
+        }
+
+        function loadProcess(edges, vertices) {
+
+            var urlCalls = [];
+            var deferred = $q.defer();
+            for (var guid in edges) {
+                if (!vertices.hasOwnProperty(guid)) {
+                    urlCalls.push(DetailsResource.get({
+                        id: guid
+                    }).$promise);
+                }
+
+            }
+            $q.all(urlCalls)
+                .then(function(results) {
+                    deferred.resolve(results);
+                });
+            return deferred.promise;
+        }
+
+        $scope.type = $element.parent().attr('data-table-type');
+        $scope.requested = false;
+
+        function render() {
+            renderGraph($scope.lineageData, {
+                element: $element[0],
+                height: $element[0].offsetHeight,
+                width: $element[0].offsetWidth
+            });
+            $scope.rendered = true;
+        }
+
+        $scope.$on('render-lineage', function(event, lineageData) {
+            if (lineageData.type === $scope.type) {
+                if (!$scope.lineageData) {
+                    if (!$scope.requested) {
+                        getLineageData(lineageData, true);
+                        $scope.requested = true;
+                    }
+                } else {
+                    render();
+                }
+            }
+        });
+
+        function transformData(metaData) {
+            var edges = metaData.values.edges,
+                vertices = metaData.values.vertices,
+                nodes = {};
+
+            function getNode(guid) {
+                var name, type, tip;
+                if (vertices.hasOwnProperty(guid)) {
+                    name = vertices[guid].values.name;
+                    type = vertices[guid].values.vertexId.values.typeName;
+                } else {
+                    var loadProcess = getLoadProcessTypes(guid);
+                    if (typeof loadProcess !== "undefined") {
+                        name = loadProcess.name;
+                        type = loadProcess.typeName;
+                        tip = loadProcess.tip;
+                    } else {
+                        name = 'Load Process';
+                        type = 'Load Process';
+                    }
+                }
+                var vertex = {
+                    guid: guid,
+                    name: name,
+                    type: type,
+                    tip: tip
+                };
+                if (!nodes.hasOwnProperty(guid)) {
+                    nodes[guid] = vertex;
+                }
+                return nodes[guid];
+            }
+
+            function getLoadProcessTypes(guid) {
+                var procesRes = [];
+                angular.forEach(guidsList, function(value) {
+                    if (value.id.id === guid) {
+                        procesRes.name = value.values.name;
+                        procesRes.typeName = value.typeName;
+                        procesRes.tip = value.values.queryText;
+                    }
+                });
+                return procesRes;
+            }
+
+            function attachParent(edge, node) {
+                edge.forEach(function eachPoint(childGuid) {
+                    var childNode = getNode(childGuid);
+                    node.children = node.children || [];
+                    node.children.push(childNode);
+                    childNode.parent = node.guid;
+                });
+            }
+
+            /* Loop through all edges and attach them to correct parent */
+            for (var guid in edges) {
+                var edge = edges[guid],
+                    node = getNode(guid);
+
+                /* Attach parent to each endpoint of edge */
+                attachParent(edge, node);
+            }
+
+            /* Return the first node w/o parent, this is root node*/
+            return _.find(nodes, function(node) {
+                return !node.hasOwnProperty('parent');
+            });
+        }
+
+        function renderGraph(data, container) {
+            // ************** Generate the tree diagram	 *****************
+            var element = d3.select(container.element),
+                width = Math.max(container.width, 960),
+                height = Math.max(container.height, 350);
+
+            var margin = {
+                top: 100,
+                right: 80,
+                bottom: 30,
+                left: 80
+            };
+            width = width - margin.right - margin.left;
+            height = height - margin.top - margin.bottom;
+
+            var i = 0;
+
+            var tree = d3.layout.tree()
+                .size([height, width]);
+
+            var diagonal = d3.svg.diagonal()
+                .projection(function(d) {
+                    return [d.y, d.x];
+                });
+
+            /* Initialize tooltip */
+            var tooltip = d3.tip()
+                .attr('class', 'd3-tip')
+                .html(function(d) {
+                    return '<pre class="alert alert-success">' + d.tip + '</pre>';
+                });
+
+            var svg = element.select('svg')
+                .attr('width', width + margin.right + margin.left)
+                .attr('height', height + margin.top + margin.bottom)
+                /* Invoke the tip in the context of your visualization */
+                .call(tooltip)
+                .select('g')
+                .attr('transform',
+                    'translate(' + margin.left + ',' + margin.right + ')');
+            //arrow
+            svg.append("svg:defs").append("svg:marker").attr("id", "arrow").attr("viewBox", "0 0 10 10").attr("refX", 26).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 6).attr("markerHeight", 9).attr("orient", "auto").append("svg:path").attr("d", "M 0 0 L 10 5 L 0 10 z");
+
+            //marker for input type graph
+            svg.append("svg:defs")
+                .append("svg:marker")
+                .attr("id", "input-arrow")
+                .attr("viewBox", "0 0 10 10")
+                .attr("refX", -15)
+                .attr("refY", 5)
+                .attr("markerUnits", "strokeWidth")
+                .attr("markerWidth", 6)
+                .attr("markerHeight", 9)
+                .attr("orient", "auto")
+                .append("svg:path")
+                .attr("d", "M -2 5 L 8 0 L 8 10 z");
+
+            var root = data;
+
+            function update(source) {
+
+                // Compute the new tree layout.
+                var nodes = tree.nodes(source).reverse(),
+                    links = tree.links(nodes);
+
+                // Normalize for fixed-depth.
+                nodes.forEach(function(d) {
+                    d.y = d.depth * 180;
+                });
+
+                // Declare the nodes…
+                var node = svg.selectAll('g.node')
+                    .data(nodes, function(d) {
+                        return d.id || (d.id = ++i);
+                    });
+
+                // Enter the nodes.
+                var nodeEnter = node.enter().append('g')
+                    .attr('class', 'node')
+                    .attr('transform', function(d) {
+                        return 'translate(' + d.y + ',' + d.x + ')';
+                    });
+
+                nodeEnter.append("image")
+                    .attr("xlink:href", function(d) {
+                        //return d.icon;
+                        return d.type === 'Table' ? '../img/tableicon.png' : '../img/process.png';
+                    })
+                    .on('mouseover', function(d) {
+                        if (d.type === 'LoadProcess') {
+                            tooltip.show(d);
+                        }
+                    })
+                    .on('mouseout', function(d) {
+                        if (d.type === 'LoadProcess') {
+                            tooltip.hide(d);
+                        }
+                    })
+                    .attr("x", "-18px")
+                    .attr("y", "-18px")
+                    .attr("width", "34px")
+                    .attr("height", "34px");
+
+                nodeEnter.append('text')
+                    .attr('x', function(d) {
+                        return d.children || d._children ?
+                            (5) * -1 : +15;
+                    })
+                    .attr('dy', '-1.75em')
+                    .attr('text-anchor', function(d) {
+                        return d.children || d._children ? 'middle' : 'middle';
+                    })
+                    .text(function(d) {
+                        return d.name;
+                    })
+
+                .style('fill-opacity', 1);
+
+                // Declare the links…
+                var link = svg.selectAll('path.link')
+                    .data(links, function(d) {
+                        return d.target.id;
+                    });
+
+                link.enter().insert('path', 'g')
+                    .attr('class', 'link')
+                    //.style('stroke', function(d) { return d.target.level; })
+                    .style('stroke', 'green')
+                    .attr('d', diagonal);
+
+                if ($scope.type === 'inputs') {
+                    link.attr("marker-start", "url(#input-arrow)"); //if input
+                } else {
+                    link.attr("marker-end", "url(#arrow)"); //if input
+                }
+
+            }
+
+            update(root);
+        }
+
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/lineage/lineageModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/lineageModule.js b/dashboard/public/modules/lineage/lineageModule.js
new file mode 100644
index 0000000..4fda24d
--- /dev/null
+++ b/dashboard/public/modules/lineage/lineageModule.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.lineage', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/lineage/lineageResource.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/lineageResource.js b/dashboard/public/modules/lineage/lineageResource.js
new file mode 100644
index 0000000..e729a35
--- /dev/null
+++ b/dashboard/public/modules/lineage/lineageResource.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.lineage').factory('LineageResource', ['$resource', function($resource) {
+    return $resource('/api/atlas/lineage/hive/table/:tableName/:type/graph', {});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/lineage/views/lineage.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/lineage/views/lineage.html b/dashboard/public/modules/lineage/views/lineage.html
new file mode 100644
index 0000000..e2e9ebd
--- /dev/null
+++ b/dashboard/public/modules/lineage/views/lineage.html
@@ -0,0 +1,25 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<div class="lineage-viz" data-ng-controller="LineageController">
+    <h4 data-ng-if="!requested && !lineageData">No lineage data found</h4>
+    <i data-ng-if="requested" class="fa fa-spinner fa-spin fa-5x"></i>
+    <svg >
+        <g/>
+    </svg>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/navigation/navigationController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/navigation/navigationController.js b/dashboard/public/modules/navigation/navigationController.js
new file mode 100644
index 0000000..a012885
--- /dev/null
+++ b/dashboard/public/modules/navigation/navigationController.js
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.navigation').controller('NavigationController', ['$scope', 'NavigationResource',
+    function($scope, NavigationResource) {
+
+        $scope.leftnav = NavigationResource.get();
+        $scope.updateVar = function(event) {
+            $scope.$$prevSibling.query = angular.element(event.target).text();
+
+        };
+
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/navigation/navigationModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/navigation/navigationModule.js b/dashboard/public/modules/navigation/navigationModule.js
new file mode 100644
index 0000000..504eb1f
--- /dev/null
+++ b/dashboard/public/modules/navigation/navigationModule.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.navigation', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/navigation/navigationResource.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/navigation/navigationResource.js b/dashboard/public/modules/navigation/navigationResource.js
new file mode 100644
index 0000000..3d9797d
--- /dev/null
+++ b/dashboard/public/modules/navigation/navigationResource.js
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.navigation').factory('NavigationResource', ['$resource', function($resource) {
+    return $resource('/api/atlas/types?type=TRAIT', {}, {
+        get: {
+            'method': 'GET',
+            'responseType': 'json',
+            'isArray': true,
+            'transformResponse': function(data) {
+                var results = [];
+                angular.forEach(data && data.results, function(val) {
+                    results.push(val);
+                });
+                return results;
+            }
+        }
+    });
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/navigation/views/navigation.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/navigation/views/navigation.html b/dashboard/public/modules/navigation/views/navigation.html
new file mode 100644
index 0000000..1c94671
--- /dev/null
+++ b/dashboard/public/modules/navigation/views/navigation.html
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<div data-ng-controller="NavigationController">
+    <h4>Tags</h4>
+    <div class="list-group">
+        <a ng-repeat="nav in leftnav" ui-sref="search({ query: nav })" class="list-group-item">{{nav}} </a>
+    </div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/notification/notificationController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/notification/notificationController.js b/dashboard/public/modules/notification/notificationController.js
new file mode 100644
index 0000000..ac36b0f
--- /dev/null
+++ b/dashboard/public/modules/notification/notificationController.js
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.system.notification').controller('NotificationController', ['$scope', 'NotificationService',
+    function($scope, NotificationService) {
+
+        $scope.getNotifications = NotificationService.getAll;
+
+        $scope.close = function(notification) {
+            NotificationService.close(notification);
+        };
+    }
+]);



[07/11] incubator-atlas git commit: ATLAS-111 UI: Create Help Link. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-111 UI: Create Help Link. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/d1eef49e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/d1eef49e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/d1eef49e

Branch: refs/heads/master
Commit: d1eef49e2607b98e2cfd66a24d236a7634192a15
Parents: 15ba43c
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:12:39 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:12:39 2015 -0700

----------------------------------------------------------------------
 dashboard/public/css/common.css                 | 4 ++++
 dashboard/public/modules/home/views/header.html | 3 ++-
 release-log.txt                                 | 2 ++
 3 files changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d1eef49e/dashboard/public/css/common.css
----------------------------------------------------------------------
diff --git a/dashboard/public/css/common.css b/dashboard/public/css/common.css
index c6af853..310e1f9 100644
--- a/dashboard/public/css/common.css
+++ b/dashboard/public/css/common.css
@@ -123,3 +123,7 @@ footer.navbar-bottom img {
 .search-spinner {
     text-align: center;
 }
+.menulink{
+    padding-left: 10px;
+    padding-right: 10px;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d1eef49e/dashboard/public/modules/home/views/header.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/views/header.html b/dashboard/public/modules/home/views/header.html
index 8d3ad18..a0f515e 100644
--- a/dashboard/public/modules/home/views/header.html
+++ b/dashboard/public/modules/home/views/header.html
@@ -32,6 +32,7 @@
                 <a data-ui-sref="{{item.state}}">{{item.title}}</a>
             </li>
         </ul>
-        <a  ng-if="!username" class="pull-right" href="javascript:void(0)" ng-click="ShowAbout()">About</a>
+        <a  ng-if="!username" class="pull-right menulink" href="https://cwiki.apache.org/confluence/display/ATLAS/Atlas+Home;jsessionid=3678CAD2035F4BE464481DD625BAFC1F"  target="_blank">Help</a>
+        <a  ng-if="!username" class="pull-right menulink" href="javascript:void(0)" ng-click="ShowAbout()">About</a>
     </nav>
 </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/d1eef49e/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 47a19da..babfa10 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,8 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-111
+UI: Create Help Link  (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-113 Add an About Dialog to Apache Atlas UI with version number (Vishal Kadam
 via Venkatesh Seetharam)
 ATLAS-109 Remove v2 Folder (Vishal Kadam via Venkatesh Seetharam)


[04/11] incubator-atlas git commit: ATLAS-109 Remove v2 Folder. Contributed by Vishal Kadam

Posted by ve...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/notification/notificationModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/notification/notificationModule.js b/dashboard/public/modules/notification/notificationModule.js
new file mode 100644
index 0000000..e99736f
--- /dev/null
+++ b/dashboard/public/modules/notification/notificationModule.js
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.system.notification', ['ui.router']).constant('ColorCoding', {
+    info: 'success',
+    error: 'danger'
+}).run(['$rootScope', 'NotificationService', function($rootScope, NotificationService) {
+    $rootScope.$on('$locationChangeSuccess', function(evt, from, to) {
+        if (from !== to) {
+            NotificationService.reset();
+        }
+    });
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/notification/notificationService.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/notification/notificationService.js b/dashboard/public/modules/notification/notificationService.js
new file mode 100644
index 0000000..613cc22
--- /dev/null
+++ b/dashboard/public/modules/notification/notificationService.js
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.system.notification').service('NotificationService', ['$timeout', 'lodash', 'ColorCoding', function($timeout, _, colorCoding) {
+
+    var notifications = [],
+        service = {
+            timeout: 2000,
+            getAll: function() {
+                return notifications;
+            },
+            reset: function() {
+                notifications = [];
+            },
+            close: function(notification) {
+                _.remove(notifications, notification);
+            }
+        };
+
+    _.each(colorCoding, function(value, key) {
+        service[key] = function(message, timeout) {
+            var notification = message;
+            if (_.isString(message)) {
+                notification = {
+                    message: message
+                };
+            }
+
+            notification.message = notification.msg || notification.message;
+            delete notification.msg;
+            notification.type = value;
+            notification.timeout = _.isUndefined(timeout) ? (_.isUndefined(notification.timeout) ? true : notification.timeout) : timeout;
+            notifications.push(notification);
+
+            if (notification.timeout) {
+                $timeout(function() {
+                    service.close(notification);
+                }, angular.isNumber(notification.timeout) ? notification.timeout : service.timeout);
+            }
+        };
+    });
+
+    return service;
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/notification/views/notifications.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/notification/views/notifications.html b/dashboard/public/modules/notification/views/notifications.html
new file mode 100644
index 0000000..dcc02c5
--- /dev/null
+++ b/dashboard/public/modules/notification/views/notifications.html
@@ -0,0 +1,23 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<div class="container" data-ng-controller="NotificationController">
+    <alert data-ng-repeat="notification in getNotifications()" data-type="{{notification.type}}" data-close="close(notification)">
+        {{notification.message}}
+    </alert>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/searchController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/searchController.js b/dashboard/public/modules/search/searchController.js
new file mode 100644
index 0000000..b5e6c37
--- /dev/null
+++ b/dashboard/public/modules/search/searchController.js
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.search').controller('SearchController', ['$scope', '$location', '$http', '$state', '$stateParams', 'lodash', 'SearchResource', 'NotificationService',
+    function($scope, $location, $http, $state, $stateParams, _, SearchResource, NotificationService) {
+
+        $scope.results = [];
+        $scope.resultCount = 0;
+        $scope.isCollapsed = true;
+        $scope.currentPage = 1;
+        $scope.itemsPerPage = 10;
+        $scope.filteredResults = [];
+        $scope.resultRows = [];
+        $scope.setPage = function(pageNo) {
+            $scope.currentPage = pageNo;
+        };
+        $scope.search = function(query) {
+            $scope.results = [];
+            NotificationService.reset();
+            $scope.limit = 4;
+            $scope.searchMessage = 'load-gif';
+
+            $scope.$parent.query = query;
+            SearchResource.search({
+                query: query
+            }, function searchSuccess(response) {
+                $scope.resultCount = response.count;
+                $scope.results = response.results;
+                $scope.resultRows = $scope.results.rows;
+                $scope.totalItems = $scope.resultCount;
+                $scope.transformedResults = {};
+                $scope.dataTransitioned = false;
+                if (response.results.dataType && response.results.dataType.typeName.indexOf('__') === 0) {
+                    $scope.dataTransitioned = true;
+                    var attrDef = response.results.dataType.attributeDefinitions;
+                    angular.forEach(attrDef, function(value) {
+                        if (value.dataTypeName === '__IdType') {
+                            $scope.searchKey = value.name;
+                        }
+                    });
+                    $scope.transformedResults = $scope.filterResults();
+                } else {
+                    $scope.transformedResults = $scope.resultRows;
+                }
+                if ($scope.results.rows)
+                    $scope.searchMessage = $scope.resultCount + ' results matching your search query ' + $scope.query + ' were found';
+                else
+                    $scope.searchMessage = '0 results matching your search query ' + $scope.query + ' were found';
+
+                $scope.$watch('currentPage + itemsPerPage', function() {
+                    var begin = (($scope.currentPage - 1) * $scope.itemsPerPage),
+                        end = begin + $scope.itemsPerPage;
+                    if ($scope.transformedResults) $scope.filteredResults = $scope.transformedResults.slice(begin, end);
+                    $scope.pageCount = function() {
+                        return Math.ceil($scope.resultCount / $scope.itemsPerPage);
+                    };
+                    if ($scope.results.length < 1) {
+                        NotificationService.error('No Result found', false);
+                    }
+                });
+            }, function searchError(err) {
+                $scope.searchMessage = '0 results matching your search query ' + $scope.query + ' were found';
+                NotificationService.error('Error occurred during executing search query, error status code = ' + err.status + ', status text = ' + err.statusText, false);
+            });
+            $state.go('search', {
+                query: query
+            }, {
+                location: 'replace'
+            });
+        };
+
+        $scope.filterResults = function() {
+            var res = [];
+            angular.forEach($scope.resultRows, function(value) {
+                res.push(value[$scope.searchKey]);
+            });
+            return res;
+        };
+        $scope.doToggle = function($event, el) {
+            this.isCollapsed = !el;
+        };
+        $scope.filterSearchResults = function(items) {
+            var res = {};
+            var count = 0;
+            items = _.omit(items, ['name', 'description', 'guid']);
+            angular.forEach(items, function(value, key) {
+                if (typeof value !== 'object' && (key.indexOf('$$') < 0)) {
+                    res[key] = value;
+                    count++;
+                }
+            });
+            $scope.keyLength = count;
+            return res;
+        };
+        $scope.searchQuery = $location.search();
+        $scope.query = ($location.search()).query;
+        if ($scope.query) {
+
+            $scope.search($scope.query);
+        }
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/searchDirective.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/searchDirective.js b/dashboard/public/modules/search/searchDirective.js
new file mode 100644
index 0000000..5c9fc48
--- /dev/null
+++ b/dashboard/public/modules/search/searchDirective.js
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.search').directive(
+    "myDirective",
+    function() {
+        return {
+            restrict: 'EA',
+            template: '<a href="javascript: void(0);" button-toggle toggle="isCollapsed" class="show-more" ng-click="isCollapsed = !isCollapsed">..show more</a>',
+            link: function($scope) {
+                $scope.isCollapsed = true;
+                console.log($scope.isCollapsed);
+            },
+            transclude: true,
+            scope: {}
+        };
+    });

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/searchModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/searchModule.js b/dashboard/public/modules/search/searchModule.js
new file mode 100644
index 0000000..ac82e3e
--- /dev/null
+++ b/dashboard/public/modules/search/searchModule.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.search', ['dgc.details']);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/searchResource.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/searchResource.js b/dashboard/public/modules/search/searchResource.js
new file mode 100644
index 0000000..19de021
--- /dev/null
+++ b/dashboard/public/modules/search/searchResource.js
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.search').factory('SearchResource', ['$resource', function($resource) {
+    return $resource('/api/atlas/discovery/search/', {}, {
+        search: {
+            'method': 'GET',
+            'responseType': 'json',
+            'transformResponse': function(data) {
+                return data;
+            }
+        }
+    });
+
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/searchRoutes.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/searchRoutes.js b/dashboard/public/modules/search/searchRoutes.js
new file mode 100644
index 0000000..abfe322
--- /dev/null
+++ b/dashboard/public/modules/search/searchRoutes.js
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+//Setting up route
+angular.module('dgc.search').config(['$stateProvider',
+    function($stateProvider) {
+        $stateProvider.state('search', {
+            url: '/search?query',
+            templateUrl: '/modules/search/views/search.html',
+            controller: 'SearchController'
+        });
+    }
+]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/search.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/search.html b/dashboard/public/modules/search/views/search.html
new file mode 100644
index 0000000..389364d
--- /dev/null
+++ b/dashboard/public/modules/search/views/search.html
@@ -0,0 +1,67 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<div class="row mt20px">
+    <form class="col-lg-offset-3 col-lg-9" name="form" novalidate>
+        <div class="input-group">
+            <input type="text" class="form-control" placeholder="Search" data-ng-model="query" required/>
+                <span class="input-group-btn">
+                    <button class="btn btn-success" type="submit" data-ng-disabled="form.$invalid" ui-sref="search({ query: query })">
+                        <i class="glyphicon glyphicon-search white "></i>
+                    </button>
+                </span>
+        </div>
+        <div>
+            <small class="small-txt">Search: Table, DB, Column</small>
+        </div>
+    </form>
+</div>
+<div class="row mt10px">
+    <div class="col-lg-3" data-ng-include="'/modules/navigation/views/navigation.html'"></div>
+    <div class="col-lg-9">
+        <div ng-switch on="searchMessage">
+            <div ng-switch-when="load-gif" class="search-spinner"><img src="../img/spinner.gif" align="middle" /></div>
+            <div ng-switch-default><h4 ng-show="searchMessage">{{searchMessage}}</h4></div>
+        </div>
+        <ul class="list-unstyled"  ng-show='resultCount > 0'>
+            <li ng-repeat="result in filteredResults" class="searchresults">
+                <h4><a data-ui-sref="details({id:result['$id$'].id || result.guid})">{{result.name || result.guid}}</a></h4>
+
+                <p>{{result.description}}</p>
+                            <span ng-repeat="(key, value) in filterSearchResults(result)">
+                                <span ng-show="$index <= 3  "><b>{{key}}: </b>{{value}} {{(($index+1 === limit) || $last ) ? '' : ', '}}</span>
+                            </span>
+
+                <div collapse="isCollapsed">
+                                <span ng-repeat="(key, value) in filterSearchResults(result)">
+                                <span ng-show="$index > 3"><b>{{key}}: </b>{{value}}{{$last ? '' : ', '}}</span>
+                            </span>
+                </div>
+                <a href ng-show="isCollapsed && (keyLength > 4)" ng-click="doToggle($event,isCollapsed)">..show more</a>
+                <a href ng-show="!isCollapsed" ng-click="doToggle($event,isCollapsed)">..show less</a>
+
+                <h5 ng-show="!dataTransitioned">Tags : <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search({query: key})">{{key}}</a></h5>
+
+            </li>
+        </ul>
+        <div class="pull-right" ng-show='resultCount > 0'>
+            <pagination total-items="totalItems" items-per-page="itemsPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
+            <p>
+        </div>
+    </div>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/searchResult.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/searchResult.html b/dashboard/public/modules/search/views/searchResult.html
new file mode 100644
index 0000000..0faf3bb
--- /dev/null
+++ b/dashboard/public/modules/search/views/searchResult.html
@@ -0,0 +1,47 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<!--
+<h4 ng-show='results.rows.length > 0'>{{results.rows.length}} results matching your search query "{{query}}" were found</h4>
+<h4 ng-show='results.rows.length == "0"'>searching .....</h4>
+<h4 ng-show='!(results.rows)'>0 results matching your search query "{{query}}" were found</h4>-->
+
+<h4 ng-show="searchMessage">{{searchMessage}}</h4>
+
+<ul class="list-unstyled">
+    <li ng-repeat="result in filteredResults" class="searchresults">
+        <h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
+        <p>{{result.description}}</p>
+            <span ng-repeat="(key, value) in filterSearchResults(result)" >
+                <span ng-show="$index < 4"><b>{{key}}: </b>{{value}}{{$index+1 === limit ? '' : ', '}}</span>
+            </span>
+        <div collapse="isCollapsed">
+                <span ng-repeat="(key, value) in filterSearchResults(result)" >
+                <span ng-show="$index > 4"><b>{{key}}: </b>{{value}}{{$last ? '' : ', '}}</span>
+            </span>
+        </div>
+        <a href ng-show="isCollapsed && (keyLength > 4)"  ng-click="doToggle($event,isCollapsed)">..show more</a>
+        <a href ng-show="!isCollapsed"  ng-click="doToggle($event,isCollapsed)">..show less</a>
+
+        <h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
+        <div data-ng-if="!searchTypesAvailable" data-ng-include="'/modules/search/views/types/guid.html'"></div>
+    </li>
+</ul>
+<div class="resultsPagination" ng-show='filteredResults.length > 0'>
+    <pagination total-items="totalItems" items-per-page="itemsPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
+    <p>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/column.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/column.html b/dashboard/public/modules/search/views/types/column.html
new file mode 100644
index 0000000..3bbb6c0
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/column.html
@@ -0,0 +1,21 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
+<p><b>Comment:</b> {{result.comment}}, <b>DataType:</b> {{result.dataType}},<b>Table:</b> {{result.table}}</p>
+<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/db.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/db.html b/dashboard/public/modules/search/views/types/db.html
new file mode 100644
index 0000000..28467b0
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/db.html
@@ -0,0 +1,22 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
+<p>{{result.description}}</p>
+<p><b>locationUri:</b> {{result.locationUri}}, <b>Owner: </b>{{result.owner}}</p>
+<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/guid.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/guid.html b/dashboard/public/modules/search/views/types/guid.html
new file mode 100644
index 0000000..483ca80
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/guid.html
@@ -0,0 +1,21 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<h4><a data-ui-sref="details({id:result.instanceInfo.guid})">{{result.instanceInfo.guid}}</a></h4>
+<p><b>TypeName: </b>{{result.instanceInfo.typeName}}</p>
+<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/hiveLineage.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/hiveLineage.html b/dashboard/public/modules/search/views/types/hiveLineage.html
new file mode 100644
index 0000000..b150722
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/hiveLineage.html
@@ -0,0 +1,19 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<a data-ui-sref="details({id:result.guid})">{{result.guid}}</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/hive_table.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/hive_table.html b/dashboard/public/modules/search/views/types/hive_table.html
new file mode 100644
index 0000000..84b747e
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/hive_table.html
@@ -0,0 +1,19 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<a data-ui-sref="details({id:result.guid})">{{result["hive_table.name"]}}</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/loadprocess.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/loadprocess.html b/dashboard/public/modules/search/views/types/loadprocess.html
new file mode 100644
index 0000000..652cd97
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/loadprocess.html
@@ -0,0 +1,22 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
+<p>{{result.description}}</p>
+<p><b>inputTables: </b>{{result.inputTables['id']}},<b>queryText: </b>{{result.queryText}},<b>startTime: </b>{{result.startTime | date:'medium'}},<b>endTime: </b> {{result.endTime | date:'medium'}}</p>
+<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/storagedesc.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/storagedesc.html b/dashboard/public/modules/search/views/types/storagedesc.html
new file mode 100644
index 0000000..0587f26
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/storagedesc.html
@@ -0,0 +1,21 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
+<p><b>compressed: </b>{{result.compressed}},<b>outputFormat: </b>{{result.outputFormat}},<b>location: </b>{{result.location}}, <b>inputFormat: </b>{{result.inputFormat}}</p>
+<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/public/modules/search/views/types/table.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/search/views/types/table.html b/dashboard/public/modules/search/views/types/table.html
new file mode 100644
index 0000000..a678ff9
--- /dev/null
+++ b/dashboard/public/modules/search/views/types/table.html
@@ -0,0 +1,22 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<h4><a data-ui-sref="details({id:result['$id$'].id})">{{result.name}}</a></h4>
+<p>{{result.description}}</p>
+<p><b>owner: </b>{{result.owner}}, <b>createTime: </b>{{result.createTime}}</p>
+<h5>Tags :  <a ng-repeat="(key, value) in result['$traits$']" data-ui-sref="search.results({query: key})">{{key}}</a> </h5>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/.bowerrc
----------------------------------------------------------------------
diff --git a/dashboard/v2/.bowerrc b/dashboard/v2/.bowerrc
deleted file mode 100755
index b4d0ffc..0000000
--- a/dashboard/v2/.bowerrc
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "directory": "../../webapp/target/dist/lib/",
-  "storage": {
-          "packages": ".bower-cache",
-          "registry": ".bower-registry"
-  },
-  "tmp": ".bower-tmp"
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/.gitignore
----------------------------------------------------------------------
diff --git a/dashboard/v2/.gitignore b/dashboard/v2/.gitignore
deleted file mode 100755
index e5ee796..0000000
--- a/dashboard/v2/.gitignore
+++ /dev/null
@@ -1,28 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-.DS_Store
-.bower-*/
-.idea/
-node_modules/
-lib/
-public/lib
-public/dist
-*.log
-*.tgz
-node/
-dist/
-**/app.min.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/.jshintignore
----------------------------------------------------------------------
diff --git a/dashboard/v2/.jshintignore b/dashboard/v2/.jshintignore
deleted file mode 100755
index efd063f..0000000
--- a/dashboard/v2/.jshintignore
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-test/coverage/**
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/.jshintrc
----------------------------------------------------------------------
diff --git a/dashboard/v2/.jshintrc b/dashboard/v2/.jshintrc
deleted file mode 100755
index 62b5e65..0000000
--- a/dashboard/v2/.jshintrc
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-{
-    "browser": true, // Standard browser globals e.g. `window`, `document`.
-    "bitwise": false, // Prohibit bitwise operators (&, |, ^, etc.).
-    "camelcase": false, // Permit only camelcase for `var` and `object indexes`.
-    "curly": false, // Require {} for every new block or scope.
-    "devel": true, // Allow development statements e.g. `console.log();`.
-    "esnext": true, // Allow ES.next specific features such as `const` and `let`.
-    "eqeqeq": true, // Require triple equals i.e. `===`.
-    "immed": true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );`
-    "indent": false, // Specify indentation spacing
-    "latedef": true, // Prohibit variable use before definition.
-    "node": true, // Enable globals available when code is running inside of the NodeJS runtime environment.
-    "newcap": false, // Require capitalization of all constructor functions e.g. `new F()`.
-    "noarg": true, // Prohibit use of `arguments.caller` and `arguments.callee`.
-    "noempty": true, // Prohibit use of empty blocks.
-    "quotmark": false, // Define quotes to string values.
-    "regexp": true, // Prohibit `.` and `[^...]` in regular expressions.
-    "strict": true, // Require `use strict` pragma in every file.
-    "smarttabs": false, // Suppresses warnings about mixed tabs and spaces
-    "trailing": true, // Prohibit trailing whitespaces.
-    "undef": true, // Require all non-global variables be declared before they are used.
-    "unused": true, // Warn unused variables.
-    "globals": { // Globals variables.
-        "angular": true
-    },
-    "predef": [ // Extra globals.
-        "define",
-        "require",
-        "exports",
-        "module",
-        "spyOn",
-        "describe",
-        "xdescribe",
-        "before",
-        "beforeEach",
-        "after",
-        "afterEach",
-        "jasmine",
-        "it",
-        "xit",
-        "inject",
-        "expect",
-        "ngGridFlexibleHeightPlugin"
-    ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/README.md
----------------------------------------------------------------------
diff --git a/dashboard/v2/README.md b/dashboard/v2/README.md
deleted file mode 100755
index 0957582..0000000
--- a/dashboard/v2/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-# Apache Atlas
-
-## Instructions
-
-### Prerequisite
-1. Nodejs (http://nodejs.org/download/)
-2. ```npm install -g grunt-cli```
-
-### Setup:
-
-```
-git clone $git-repo-url
-git checkout dal
-cd dashboard/v2
-npm install
-grunt server
-```
-Server will start at: 
-<http://localhost:3010/>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/bower.json
----------------------------------------------------------------------
diff --git a/dashboard/v2/bower.json b/dashboard/v2/bower.json
deleted file mode 100755
index 2ffdc90..0000000
--- a/dashboard/v2/bower.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "name": "atlas-metadata",
-    "description": "Apache Atlas",
-    "version": "1.0.0-SNAPSHOT",
-    "devDependencies": {
-        "angular": "~1.2.15",
-        "angular-resource": "~1.2.15",
-        "angular-cookies": "~1.2.15",
-        "angular-route": "~1.2.15",
-        "angular-sanitize": "~1.2.15",
-        "bootstrap": "~3.1.1",
-        "angular-bootstrap": "~0.12.0",
-        "angular-ui-router": "~0.2.13",
-        "d3": "~3.5.3",
-        "d3-tip": "~0.6.6",
-        "lodash": "~3.0.0",
-        "angular-ui-utils": "~0.1.1",
-        "font-awesome": "~4.2.0",
-        "closure-compiler": "https://dl.google.com/closure-compiler/compiler-20140814.zip",
-        "ng-closure-runner": "https://raw.github.com/angular/ng-closure-runner/v0.2.3/assets/ng-closure-runner.zip"
-    },
-    "resolutions": {
-        "d3": "~3.5.3"
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/gruntfile.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/gruntfile.js b/dashboard/v2/gruntfile.js
deleted file mode 100755
index 3302913..0000000
--- a/dashboard/v2/gruntfile.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var git = require('git-rev');
-
-module.exports = function(grunt) {
-    var classPathSep = (process.platform === "win32") ? ';' : ':',
-        gitHash = '',
-        pkg = grunt.file.readJSON('package.json'),
-        distPath = '../../webapp/target/dist';
-
-    grunt.initConfig({
-        watch: {
-            options: {
-                livereload: 35729
-            },
-            js: {
-                files: ['public/**/*.js', '!public/lib/**', '!public/dist/**', '!public/js/app.min.js'],
-                tasks: ['shell']
-            },
-            html: {
-                files: ['public/**/*.html'],
-                tasks: ['copy:dist']
-            },
-            css: {
-                files: ['public/**/*.css'],
-                tasks: ['copy:dist']
-            },
-            image: {
-                files: ['public/**/*.{ico,gif,png}'],
-                tasks: ['copy:dist']
-            }
-        },
-        jshint: {
-            all: {
-                src: ['gruntfile.js', 'package.json', 'server.js', 'server/**/*.js', 'public/**/*.js', '!public/lib/**', '!public/dist/**', '!public/**/app.min.js'],
-                options: {
-                    jshintrc: true
-                }
-            }
-        },
-        concurrent: {
-            tasks: ['watch', 'proxitserver'],
-            options: {
-                logConcurrentOutput: true
-            }
-        },
-        jsbeautifier: {
-            'default': {
-                src: ['<%= jshint.all.src %>', 'bower.json'],
-                options: {
-                    js: {
-                        preserveNewlines: true,
-                        maxPreserveNewlines: 2
-                    }
-                }
-            },
-            'build': {
-                src: '<%= jsbeautifier.default.src %>',
-                options: {
-                    mode: 'VERIFY_ONLY',
-                    js: '<%= jsbeautifier.default.options.js%>'
-                }
-            }
-        },
-        bower: {
-            install: {
-                options: {
-                    verbose: true,
-                    targetDir: '.bower-components'
-                }
-            }
-        },
-        dist: distPath + '/js/app.min.js',
-        modules: grunt.file.expand(
-            'public/js/app.js',
-            'public/js/routes.js',
-            'public/modules/**/*Module.js',
-            'public/modules/**/*.js',
-            'public/js/init.js'
-        ).join(' '),
-        shell: {
-            min: {
-                command: 'java ' +
-                    '-cp ' + distPath + '/lib/closure-compiler/compiler.jar' + classPathSep +
-                    '' + distPath + '/lib/ng-closure-runner/ngcompiler.jar ' +
-                    'org.angularjs.closurerunner.NgClosureRunner ' +
-                    '--compilation_level SIMPLE_OPTIMIZATIONS ' +
-                    //'--formatting PRETTY_PRINT ' +
-                    '--language_in ECMASCRIPT5_STRICT ' +
-                    '--angular_pass ' +
-                    '--manage_closure_dependencies ' +
-                    '--js <%= modules %> ' +
-                    '--js_output_file <%= dist %>'
-            }
-        },
-        devUpdate: {
-            main: {
-                options: {
-                    updateType: 'force'
-                }
-            }
-        },
-        compress: {
-            release: {
-                options: {
-                    archive: function() {
-                        return [pkg.name, pkg.version, gitHash].join('_') + '.tgz';
-                    }
-                },
-                src: ['node_modules/**', 'package.json', 'server.js', 'server/**', 'public/**', '!public/js/**', '!public/modules/**/*.js']
-            }
-        },
-        copy: {
-            dist: {
-                expand: true,
-                cwd: 'public/',
-                src: ['**', '!js/**/*.js', '!modules/**/*.js'],
-                dest: distPath
-            }
-        },
-        clean: {
-            build :[distPath],
-            options: {
-            	force: true
-            }
-        },
-        proxit: {
-            dev: {
-                options: {
-                    'port': 3010,
-                    'verbose': true,
-                    'hosts': [{
-                        'hostnames': ['*'],
-                        'routes': {
-                            '/': distPath,
-                            '/api': 'http://162.249.6.50:21000/api'
-                        }
-                    }]
-                }
-            }
-        }
-    });
-
-    require('load-grunt-tasks')(grunt);
-    grunt.registerTask('default', ['devUpdate', 'bower', 'jshint', 'jsbeautifier:default']);
-
-    grunt.registerTask('server', ['jshint', 'clean', 'bower', 'copy:dist', 'minify', 'concurrent']);
-    grunt.registerTask('build', ['copy:dist', 'minify']);
-
-    grunt.registerTask('minify', 'Minify the all js', function() {
-        var done = this.async();
-        grunt.task.run(['shell:min']);
-        done();
-    });
-    grunt.loadNpmTasks('proxit');
-    grunt.registerTask('proxitserver', 'Proxit', function() {
-        var done = this.async();
-        grunt.task.run(['proxit:dev']);
-        done();
-    });
-    grunt.registerTask('release', 'Create release package', function() {
-        var done = this.async();
-        git.short(function(str) {
-            gitHash = str;
-            grunt.task.run(['minify', 'compress:release']);
-            done();
-        });
-    });
-};

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/package.json
----------------------------------------------------------------------
diff --git a/dashboard/v2/package.json b/dashboard/v2/package.json
deleted file mode 100755
index 3772654..0000000
--- a/dashboard/v2/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
-    "name": "atlas-metadata",
-    "description": "Apache Atlas",
-    "version": "0.5.0-incubating",
-    "private": true,
-    "repository": {
-        "type": "git",
-        "url": "https://git-wip-us.apache.org/repos/asf/incubator-atlas.git"
-    },
-    "engines": {
-        "node": "0.10.x",
-        "npm": "1.3.x"
-    },
-    "keywords": [
-        "Apache",
-        "Atlas",
-        "HortonWorks"
-    ],
-    "dependencies": {
-        "body-parser": "^1.2.0",
-        "bower": "~1.3.1",
-        "compression": "^1.0.2",
-        "consolidate": "~0.10.0",
-        "cookie-parser": "^1.0.1",
-        "cookies": "~0.4.0",
-        "express": "~4.2.0",
-        "express-load": "^1.1.14",
-        "forever": "~0.11.1",
-        "lodash": "~2.4.1",
-        "method-override": "^1.0.0",
-        "morgan": "^1.0.1",
-        "path-extra": "~0.1.1",
-        "proxit": "^0.6.0",
-        "q": "~1.0.1",
-        "rc": "~0.3.4",
-        "serve-favicon": "^2.0.0",
-        "static-favicon": "^2.0.0-alpha",
-        "superagent": "^0.20.0",
-        "swig": "~1.3.2",
-        "view-helpers": "~0.1.4",
-        "grunt-contrib-clean": "~0.6.0"
-    },
-    "devDependencies": {
-        "git-rev": "^0.2.1",
-        "grunt": "~0.4.2",
-        "grunt-bower-task": "~0.4.0",
-        "grunt-cli": "~0.1.11",
-        "grunt-concurrent": "^1.0.0",
-        "grunt-contrib-compress": "^0.13.0",
-        "grunt-contrib-jshint": "^0.11.0",
-        "grunt-contrib-watch": "^0.6.0",
-        "grunt-dev-update": "^1.0.2",
-        "grunt-jsbeautifier": "^0.2.6",
-        "grunt-nodemon": "^0.4.0",
-        "grunt-shell": "^1.1.1",
-        "load-grunt-tasks": "^3.1.0",
-        "grunt-nginx": "~0.2.2",
-        "grunt-contrib-copy": "~0.8.0",
-        "grunt-contrib-clean": "~0.6.0",
-        "proxit": "~0.6.4"
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/css/common.css
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/css/common.css b/dashboard/v2/public/css/common.css
deleted file mode 100755
index c6af853..0000000
--- a/dashboard/v2/public/css/common.css
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-div.separator {
-    position: relative;
-    font-size: 18px;
-    color: #aaa;
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding-top: 10px;
-    padding-bottom: 10px;
-}
-
-span.separator {
-    display: block;
-    position: absolute;
-    left: 50%;
-    top: -2px;
-    margin-left: -25px;
-    background-color: #fff;
-    width: 50px;
-    text-align: center;
-}
-
-hr.separator {
-    background-color: #cdcdcd;
-    height: 1px;
-    margin-top: 0px !important;
-    margin-bottom: 0px !important;
-}
-
-.pointer {
-    cursor: pointer;
-}
-
-.form-control {
-    border-color: #5cbb5a;
-    border-width: 2px;
-}
-
-.small-txt {
-    color: #999999;
-    padding-left: 14px;
-}
-
-/* Header background */
-header.navbar-top {
-    background-color: #fafafa;
-    border-bottom: solid 4px #5cbb5a;
-    margin-bottom: 0px;
-}
-
-header .container {
-    padding: 12px;
-}
-
-/* Footer */
-footer.navbar-bottom {
-    background-color: #fafafa;
-    border-top: solid 4px #5cbb5a;
-}
-
-footer.navbar-bottom p {
-    color: #333333;
-    margin: 23px 10px 10px;
-}
-
-footer.navbar-bottom img {
-    padding-left: 5px;
-    margin-top: -21px;
-}
-
-.searchresults {
-    border: 1px solid #ddd;
-    padding: 10px;
-}
-
-.mt10px {
-    margin-top: 10px;
-}
-
-.mt20px {
-    margin-top: 20px;
-}
-
-.searchresults:first-child {
-    border-top-right-radius: 4px;
-    border-top-left-radius: 4px;
-}
-
-.searchresults:last-child {
-    margin-bottom: 0;
-    border-bottom-right-radius: 4px;
-    border-bottom-left-radius: 4px;
-}
-.searchresults hr {
-    margin: 0;
-    border: 0;
-}
-.searchresults .well {
-    background-color: #fff;
-    border: 0;
-    box-shadow: none;
-    height: auto;
-    min-height: 0;
-    padding: 5px 5px 5px 0;
-}
-.search-spinner {
-    text-align: center;
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/css/d3tip.css
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/css/d3tip.css b/dashboard/v2/public/css/d3tip.css
deleted file mode 100755
index 11e12b2..0000000
--- a/dashboard/v2/public/css/d3tip.css
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.d3-tip {
-    line-height: 1;
-    font-weight: bold;
-    padding: 12px;
-    background: rgba(0, 0, 0, 0.8);
-    color: #fff;
-    border-radius: 2px;
-}
-
-/* Creates a small triangle extender for the tooltip */
-.d3-tip:after {
-    box-sizing: border-box;
-    display: inline;
-    font-size: 10px;
-    width: 100%;
-    line-height: 1;
-    color: rgba(0, 0, 0, 0.8);
-    content: "\25BC";
-    position: absolute;
-    text-align: center;
-}
-
-/* Style northward tooltips differently */
-.d3-tip.n:after {
-    margin: -1px 0 0 0;
-    top: 100%;
-    left: 0;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/css/details.css
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/css/details.css b/dashboard/v2/public/css/details.css
deleted file mode 100644
index 156d5f6..0000000
--- a/dashboard/v2/public/css/details.css
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.tab-content .table-bordered {
-    border-top: none;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/css/lineage.css
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/css/lineage.css b/dashboard/v2/public/css/lineage.css
deleted file mode 100755
index fddc0b0..0000000
--- a/dashboard/v2/public/css/lineage.css
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*g circle {*/
-    /*cursor: pointer;*/
-    /*stroke: green;*/
-    /*stroke-width: 2px;*/
-    /*fill: url(#process-image);*/
-/*}*/
-
-/*g circle.empty {*/
-    /*fill: #90ef96;*/
-/*}*/
-
-.link {
-    fill: none;
-    stroke: green;
-    stroke-width: 2px;
-
-}
-
-g text {
-    pointer-events: none;
-    text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff;
-    text-align: center;
-}
-
-.d3-tip pre {
-    max-width: 400px;
-}
-
-div.lineage {
-    border-bottom: 2px solid #006600;
-
-}
-
-/*.node rect {*/
-    /*stroke: #333;*/
-    /*fill: #fff;*/
-/*}*/
-
-.edgePath path {
-    stroke: #333;
-    fill: #333;
-    stroke-width: 1.5px;
-}
-
-/*.node rect,*/
-/*.node circle {*/
-    /*stroke: #333;*/
-    /*fill: #fff;*/
-    /*stroke-width: 1.5px;*/
-/*}*/
-
-.lineage-viz {
-    margin: 0 auto;
-    overflow: auto;
-    /*border: 1px solid #ddd;
-    border-top: none;*/
-
-}
-/*.images {*/
-    /*background-image: url("../img/process.png");*/
-/*}​*/

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/css/sticky-footer-navbar.css
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/css/sticky-footer-navbar.css b/dashboard/v2/public/css/sticky-footer-navbar.css
deleted file mode 100755
index 3a2444b..0000000
--- a/dashboard/v2/public/css/sticky-footer-navbar.css
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Sticky footer styles
--------------------------------------------------- */
-html {
-  position: relative;
-  min-height: 100%;
-}
-body {
-  /* Margin bottom by footer height */
-  margin-bottom: 60px;
-}
-
-.content {
-  padding-bottom: 90px;
-}
-
-.footer {
-  position: absolute;
-  bottom: 0;
-  width: 100%;
-  /* Set the fixed height of the footer here */
-  height: 60px;
-  background-color: #f5f5f5;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/index.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/index.html b/dashboard/v2/public/index.html
deleted file mode 100644
index 5ce839d..0000000
--- a/dashboard/v2/public/index.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!doctype html>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<html lang="en" xmlns="http://www.w3.org/1999/xhtml" itemscope="itemscope" itemtype="http://schema.org/Product">
-<head>
-  <meta charset="utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-
-  <title>Apache Atlas</title>
-  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
-
-
-  <link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
-
-  <link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
-  <link rel="stylesheet" href="/css/sticky-footer-navbar.css">
-  <link rel="stylesheet" href="/css/common.css">
-  <link rel="stylesheet" href="/css/details.css">
-  <link rel="stylesheet" href="/css/lineage.css">
-  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
- </head>
-
-
-<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
-<body>
-<header class="navbar navbar-static-top navbar-top" data-role="navigation">
-    <div class="container" data-ng-include="'/modules/home/views/header.html'"></div>
-</header>
-<div class="content">
-    <div data-ng-include="'/modules/notification/views/notifications.html'"></div>
-    <div data-ui-view class="container"></div>
-</div>
-<footer class="footer navbar-bottom">
-    <div class="container">
-        <!--<p align="right">Powered by<img src="modules/home/img/logo-green.png"></p>-->
-    </div>
-</footer>
-
-<script src="lib/jquery/dist/jquery.js"></script>
-<script src="lib/angular/angular.js"></script>
-<script src="lib/bootstrap/dist/js/bootstrap.js"></script>
-<script src="lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>
-<script src="lib/angular-cookies/angular-cookies.js"></script>
-<script src="lib/angular-resource/angular-resource.js"></script>
-<script src="lib/angular-route/angular-route.js"></script>
-<script src="lib/angular-sanitize/angular-sanitize.js"></script>
-<script src="lib/angular-ui-router/release/angular-ui-router.js"></script>
-<script src="lib/angular-ui-utils/ui-utils.js"></script>
-<script src="lib/lodash/lodash.js"></script>
-<script src="/lib/d3/d3.js"></script>
-<script src="/lib/d3-tip/index.js"></script>
-
-<script src="js/app.min.js"></script>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/js/app.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/js/app.js b/dashboard/v2/public/js/app.js
deleted file mode 100755
index 1bdb316..0000000
--- a/dashboard/v2/public/js/app.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc', ['ngCookies',
-    'ngResource',
-    'ui.bootstrap',
-    'ui.router',
-    'dgc.system',
-    'dgc.home',
-    'dgc.search',
-    'dgc.navigation'
-]);
-
-angular.module('dgc.system', ['dgc.system.notification']);
-
-angular.module('dgc').factory('lodash', ['$window',
-    function($window) {
-        return $window._;
-    }
-]).factory('d3', ['$window',
-    function($window) {
-        return $window.d3;
-    }
-]).factory('Global', ['$window', '$location',
-    function($window, $location) {
-        return {
-            user: $location.search()['user.name'],
-            authenticated: !!$window.user,
-            renderErrors: $window.renderErrors
-        };
-    }
-]).factory('HttpInterceptor', ['Global', function(Global) {
-    return {
-        'request': function(config) {
-            if (config.url && (config.url.indexOf('api/atlas/') === 0 || config.url.indexOf('/api/atlas/') === 0)) {
-                config.params = config.params || {};
-                config.params['user.name'] = Global.user;
-            }
-            return config;
-        }
-    };
-}]).config(['$httpProvider', function($httpProvider) {
-    $httpProvider.interceptors.push('HttpInterceptor');
-}]).run(['$rootScope', 'Global', 'NotificationService', 'lodash', 'd3', function($rootScope, Global, NotificationService, lodash, d3) {
-    var errors = Global.renderErrors;
-    if (angular.isArray(errors) || angular.isObject(errors)) {
-        lodash.forEach(errors, function(err) {
-            err = angular.isObject(err) ? err : {
-                message: err
-            };
-            err.timeout = false;
-            NotificationService.error(err);
-        });
-    } else {
-        if (errors) {
-            errors.timeout = false;
-            NotificationService.error(errors);
-        }
-    }
-    $rootScope.$on('$stateChangeStart', function() {
-        d3.selectAll('.d3-tip').remove();
-    });
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/js/init.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/js/init.js b/dashboard/v2/public/js/init.js
deleted file mode 100755
index aa99935..0000000
--- a/dashboard/v2/public/js/init.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.element(document).ready(function() {
-    /* Fixing facebook bug with redirect */
-    if (window.location.hash === '#_=_') window.location.hash = '#!';
-
-    //Then init the app
-    angular.bootstrap(document, ['dgc'], {
-        strictDi: true
-    });
-});

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/js/routes.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/js/routes.js b/dashboard/v2/public/js/routes.js
deleted file mode 100755
index 8d0a3ac..0000000
--- a/dashboard/v2/public/js/routes.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-//Setting up route
-angular.module('dgc').config(['$locationProvider', '$urlRouterProvider',
-    function($locationProvider, $urlRouterProvider) {
-        $locationProvider.hashPrefix('!');
-        // For unmatched routes:
-        $urlRouterProvider.otherwise('/search');
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/detailsController.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/detailsController.js b/dashboard/v2/public/modules/details/detailsController.js
deleted file mode 100644
index 0e96d42..0000000
--- a/dashboard/v2/public/modules/details/detailsController.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.details').controller('DetailsController', ['$window', '$scope', '$stateParams', 'DetailsResource',
-    function($window, $scope, $stateParams, DetailsResource) {
-
-        $scope.tableName = false;
-        $scope.isTable = false;
-
-        DetailsResource.get({
-            id: $stateParams.id
-        }, function(data) {
-            $scope.details = data;
-            $scope.schemas = data;
-            $scope.tableName = data.values.name;
-            $scope.isTable = data.typeName === 'Table';
-        });
-
-        $scope.isString = angular.isString;
-
-        $scope.onActivate = function tabActivate(tabname) {
-            $scope.$broadcast('render-lineage', {
-                type: tabname,
-                tableName: $scope.tableName
-            });
-        };
-
-        $scope.goBack = function() {
-            $window.history.back();
-        };
-
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/detailsModule.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/detailsModule.js b/dashboard/v2/public/modules/details/detailsModule.js
deleted file mode 100644
index 987750a..0000000
--- a/dashboard/v2/public/modules/details/detailsModule.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.details', ['dgc.lineage']);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/detailsResource.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/detailsResource.js b/dashboard/v2/public/modules/details/detailsResource.js
deleted file mode 100644
index af2f249..0000000
--- a/dashboard/v2/public/modules/details/detailsResource.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.details').factory('DetailsResource', ['$resource', function($resource) {
-    return $resource('/api/atlas/entities/:id', {}, {
-        get: {
-            method: 'GET',
-            transformResponse: function(data) {
-                if (data) {
-                    return angular.fromJson(data.definition);
-                }
-            },
-            responseType: 'json'
-        }
-    });
-
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/detailsRoutes.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/detailsRoutes.js b/dashboard/v2/public/modules/details/detailsRoutes.js
deleted file mode 100644
index 17e32fa..0000000
--- a/dashboard/v2/public/modules/details/detailsRoutes.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('dgc.details').config(['$stateProvider',
-    function($stateProvider) {
-
-        // states for my app
-        $stateProvider.state('details', {
-            url: '/details/:id',
-            templateUrl: '/modules/details/views/details.html'
-        });
-    }
-]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/views/attribute.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/views/attribute.html b/dashboard/v2/public/modules/details/views/attribute.html
deleted file mode 100644
index 89fa067..0000000
--- a/dashboard/v2/public/modules/details/views/attribute.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<!--<div>-->
-<!--{{key}}:-->
-
-<!--{{value}}-->
-<!--</div>-->
-
-<div class="row" data-ng-repeat="(key1, value1) in value" ng-if="value1">
-    <div class="col-md-6" data-ng-if="!isString(value1)" data-ng-repeat="(key2, value2) in value1 track by $index"></div>
-    <div data-ng-if="isString(value2)" data-ng-repeat="(key3, value3) in value2"> {{key3}}: {{value3}}</div>
-    <div class="col-md-6" data-ng-if="isString(value1)"> {{key1}} : {{value1 | date:'medium'}}</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/views/details.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/views/details.html b/dashboard/v2/public/modules/details/views/details.html
deleted file mode 100644
index 19f0ce0..0000000
--- a/dashboard/v2/public/modules/details/views/details.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<div class="row" data-ng-controller="DetailsController">
-    <ul class="breadcrumb">
-        <li><button class="btn btn-link" data-ng-click="goBack()">Back To Result</button> </li>
-    </ul>
-    <div role="tabpanel" class="col-lg-12">
-        <h2>Name: {{details.values.name}}</h2>
-        <h4>Description: {{details.values.description}}</h4>
-        <tabset>
-            <tab heading="Details">
-                <table class="table table-bordered">
-                    <thead>
-                    <tr>
-                        <th>Key</th>
-                        <th>Value</th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr data-ng-repeat="(key,value) in details.values" ng-if="value && !(key==='columns') && !(key==='name') && !(key==='description')">
-                        <td>{{key}}</td>
-                        <td data-ng-if="!isString(value)" data-ng-include="'/modules/details/views/attribute.html'"></td>
-                        <td data-ng-if="isString(value)">{{value | date:'medium'}}</td>
-                    </tr>
-                    </tbody>
-                </table>
-            </tab>
-            <tab data-heading="Schema" data-ng-if="isTable"><ng-include src="'/modules/details/views/schema.html'"/></tab>
-            <tab data-heading="Output" data-ng-if="isTable" data-disable="!tableName" data-select="onActivate('outputs')"><ng-include data-table-type="outputs" src="'/modules/lineage/views/lineage.html'"/></tab>
-            <tab data-heading="Input"  data-ng-if="isTable" data-disable="!tableName" data-select="onActivate('inputs')"><ng-include data-table-type="inputs" src="'/modules/lineage/views/lineage.html'"/></tab>
-        </tabset>
-    </div>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/37db9955/dashboard/v2/public/modules/details/views/schema.html
----------------------------------------------------------------------
diff --git a/dashboard/v2/public/modules/details/views/schema.html b/dashboard/v2/public/modules/details/views/schema.html
deleted file mode 100644
index 1aaf96d..0000000
--- a/dashboard/v2/public/modules/details/views/schema.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<table class="table table-bordered">
-    <thead>
-    <tr>
-        <th>Name</th>
-        <th>Comment</th>
-        <th>DataType</th>
-    </tr>
-    </thead>
-    <tbody>
-    <tr>
-        <td> {{details.values.columns[0].values.name}}</td>
-        <td>{{details.values.columns[0].values.comment}}</td>
-        <td> {{details.values.columns[0].values.dataType}}</td>
-
-    </tr>
-    <tr>
-
-        <td> {{details.values.columns[1].values.name}}</td>
-        <td>{{details.values.columns[1].values.comment}}</td>
-        <td> {{details.values.columns[1].values.dataType}}</td>
-    </tr>
-    <tr>
-
-        <td> {{details.values.columns[2].values.name}}</td>
-        <td>{{details.values.columns[2].values.comment}}</td>
-        <td> {{details.values.columns[2].values.dataType}}</td>
-    </tr>
-    <tr>
-
-        <td> {{details.values.columns[3].values.name}}</td>
-        <td>{{details.values.columns[3].values.comment}}</td>
-        <td> {{details.values.columns[3].values.dataType}}</td>
-    </tr>
-    </tbody>
-</table>
\ No newline at end of file



[02/11] incubator-atlas git commit: ATLAS-90 Support offline builds. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-90 Support offline builds. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/fd4ff8ec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/fd4ff8ec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/fd4ff8ec

Branch: refs/heads/master
Commit: fd4ff8eca8e37a5d19fbf67ccb2f71ce5339b6f6
Parents: e4c5648
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 14:51:57 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 14:51:57 2015 -0700

----------------------------------------------------------------------
 dashboard/v2/.bowerrc     |   2 +-
 dashboard/v2/gruntfile.js |  27 ++++---
 dashboard/v2/package.json |   3 -
 pom.xml                   |  37 +++++++---
 release-log.txt           |   1 +
 webapp/pom.xml            | 162 ++++++++++++++++++++++++++++++-----------
 6 files changed, 165 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/fd4ff8ec/dashboard/v2/.bowerrc
----------------------------------------------------------------------
diff --git a/dashboard/v2/.bowerrc b/dashboard/v2/.bowerrc
index b5ca2b8..b4d0ffc 100755
--- a/dashboard/v2/.bowerrc
+++ b/dashboard/v2/.bowerrc
@@ -1,5 +1,5 @@
 {
-  "directory": "dist/lib",
+  "directory": "../../webapp/target/dist/lib/",
   "storage": {
           "packages": ".bower-cache",
           "registry": ".bower-registry"

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/fd4ff8ec/dashboard/v2/gruntfile.js
----------------------------------------------------------------------
diff --git a/dashboard/v2/gruntfile.js b/dashboard/v2/gruntfile.js
index 9535c7a..3302913 100755
--- a/dashboard/v2/gruntfile.js
+++ b/dashboard/v2/gruntfile.js
@@ -23,7 +23,8 @@ var git = require('git-rev');
 module.exports = function(grunt) {
     var classPathSep = (process.platform === "win32") ? ';' : ':',
         gitHash = '',
-        pkg = grunt.file.readJSON('package.json');
+        pkg = grunt.file.readJSON('package.json'),
+        distPath = '../../webapp/target/dist';
 
     grunt.initConfig({
         watch: {
@@ -82,11 +83,12 @@ module.exports = function(grunt) {
         bower: {
             install: {
                 options: {
-                    verbose: true
+                    verbose: true,
+                    targetDir: '.bower-components'
                 }
             }
         },
-        dist: 'dist/js/app.min.js',
+        dist: distPath + '/js/app.min.js',
         modules: grunt.file.expand(
             'public/js/app.js',
             'public/js/routes.js',
@@ -97,8 +99,8 @@ module.exports = function(grunt) {
         shell: {
             min: {
                 command: 'java ' +
-                    '-cp dist/lib/closure-compiler/compiler.jar' + classPathSep +
-                    'dist/lib/ng-closure-runner/ngcompiler.jar ' +
+                    '-cp ' + distPath + '/lib/closure-compiler/compiler.jar' + classPathSep +
+                    '' + distPath + '/lib/ng-closure-runner/ngcompiler.jar ' +
                     'org.angularjs.closurerunner.NgClosureRunner ' +
                     '--compilation_level SIMPLE_OPTIMIZATIONS ' +
                     //'--formatting PRETTY_PRINT ' +
@@ -131,10 +133,15 @@ module.exports = function(grunt) {
                 expand: true,
                 cwd: 'public/',
                 src: ['**', '!js/**/*.js', '!modules/**/*.js'],
-                dest: 'dist'
+                dest: distPath
+            }
+        },
+        clean: {
+            build :[distPath],
+            options: {
+            	force: true
             }
         },
-        clean: ['public/lib', 'dist'],
         proxit: {
             dev: {
                 options: {
@@ -143,7 +150,7 @@ module.exports = function(grunt) {
                     'hosts': [{
                         'hostnames': ['*'],
                         'routes': {
-                            '/': 'dist',
+                            '/': distPath,
                             '/api': 'http://162.249.6.50:21000/api'
                         }
                     }]
@@ -155,8 +162,8 @@ module.exports = function(grunt) {
     require('load-grunt-tasks')(grunt);
     grunt.registerTask('default', ['devUpdate', 'bower', 'jshint', 'jsbeautifier:default']);
 
-    grunt.registerTask('server', ['jshint', 'build', 'concurrent']);
-    grunt.registerTask('build', ['clean', 'bower', 'copy:dist', 'minify']);
+    grunt.registerTask('server', ['jshint', 'clean', 'bower', 'copy:dist', 'minify', 'concurrent']);
+    grunt.registerTask('build', ['copy:dist', 'minify']);
 
     grunt.registerTask('minify', 'Minify the all js', function() {
         var done = this.async();

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/fd4ff8ec/dashboard/v2/package.json
----------------------------------------------------------------------
diff --git a/dashboard/v2/package.json b/dashboard/v2/package.json
index a81ce2c..3772654 100755
--- a/dashboard/v2/package.json
+++ b/dashboard/v2/package.json
@@ -16,9 +16,6 @@
         "Atlas",
         "HortonWorks"
     ],
-    "scripts": {
-        "postinstall": "node node_modules/bower/bin/bower install"
-    },
     "dependencies": {
         "body-parser": "^1.2.0",
         "bower": "~1.3.1",

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/fd4ff8ec/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7e3df4d..a18e968 100755
--- a/pom.xml
+++ b/pom.xml
@@ -295,7 +295,7 @@
         <developer>
             <id>ssuresh</id>
             <name>Suresh Srinivas</name>
-            <email> ssuresh@apache.org</email>
+            <email>ssuresh@apache.org</email>
             <timezone>-8</timezone>
             <roles>
                 <role>committer</role>
@@ -306,7 +306,7 @@
         <developer>
             <id>vranganathan</id>
             <name>Venkat Ranganathan</name>
-            <email> vranganathan@apache.org</email>
+            <email>vranganathan@apache.org</email>
             <timezone>-8</timezone>
             <roles>
                 <role>committer</role>
@@ -320,7 +320,7 @@
         <!-- platform encoding override -->
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-
+        <node.version>v0.10.30</node.version>
         <slf4j.version>1.7.7</slf4j.version>
         <jetty.version>9.2.12.v20150709</jetty.version>
         <jersey.version>1.10</jersey.version>
@@ -1251,6 +1251,15 @@
                 </plugin>
 
                 <plugin>
+                    <groupId>com.github.eirslett</groupId>
+                    <artifactId>frontend-maven-plugin</artifactId>
+                    <version>0.0.23</version>
+                    <configuration>
+                        <workingDirectory>../dashboard/v2/</workingDirectory>
+                    </configuration>
+                </plugin>
+
+                <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
                     <version>2.16</version>
@@ -1297,7 +1306,7 @@
                     <artifactId>findbugs-maven-plugin</artifactId>
                     <version>3.0.1</version>
                 </plugin>
-                
+
                 <!-- Source code metrics: mvn javancss:report or mvn site -->
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
@@ -1542,12 +1551,20 @@
                         <exclude>**/maven-eclipse.xml</exclude>
                         <exclude>**/.externalToolBuilders/**</exclude>
                         <exclude>**/build.log</exclude>
-                        <exclude>dashboard/**/.bower-*/**</exclude> <!-- temp libs -->
-                        <exclude>dashboard/v2/.bowerrc</exclude> <!-- json file -->
-                        <exclude>dashboard/v2/lib/**</exclude>  <!-- temp libs -->
-                        <exclude>dashboard/v2/node*/**</exclude>  <!-- temp libs -->
-                        <exclude>dashboard/v2/dist/**</exclude>  <!-- package -->
-                        <exclude>dashboard/v2/**/*.min.js*</exclude> <!-- minified JS -->
+                        <!-- temp libs -->
+                        <exclude>dashboard/**/.bower-*/**</exclude>
+                        <!-- json file -->
+                        <exclude>dashboard/v2/.bowerrc</exclude>
+                        <!-- temp libs -->
+                        <exclude>dashboard/v2/lib/**</exclude>
+                        <!-- temp libs -->
+                        <exclude>dashboard/v2/node*/**</exclude>
+                        <!-- package -->
+                        <exclude>dashboard/v2/dist/**</exclude>
+                        <!-- lib files -->
+                        <exclude>dashboard/v2/public/lib/**</exclude>
+                        <!-- minified JS -->
+                        <exclude>dashboard/v2/**/*.min.js*</exclude>
                     </excludes>
                 </configuration>
                 <executions>

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/fd4ff8ec/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 0711f7c..851cbdc 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,7 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-90 Support offline builds (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-154 Update website for 0.5-incubating release (Venkatesh Seetharam)
 ATLAS-153 Build failure - org.glassfish:javax.el (shwethags)
 ATLAS-117 Build fails on the latest commit (dossett@gmail.com via shwethags)

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/fd4ff8ec/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/webapp/pom.xml b/webapp/pom.xml
index e4f355e..6085d68 100755
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -65,6 +65,124 @@
                 </plugins>
             </build>
         </profile>
+        <profile>
+            <id>install-node</id>
+            <activation>
+                <file>
+                    <missing>../dashboard/v2/node</missing>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.github.eirslett</groupId>
+                        <artifactId>frontend-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install node and npm</id>
+                                <goals>
+                                    <goal>install-node-and-npm</goal>
+                                </goals>
+                                <configuration>
+                                    <nodeVersion>${node.version}</nodeVersion>
+                                    <npmVersion>1.4.3</npmVersion>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>install-node_modules</id>
+            <activation>
+                <file>
+                    <missing>../dashboard/v2/node_modules</missing>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.github.eirslett</groupId>
+                        <artifactId>frontend-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>npm install</id>
+                                <goals>
+                                    <goal>npm</goal>
+                                </goals>
+                                <configuration>
+                                    <arguments>install</arguments>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>bower-install</id>
+            <activation>
+                <file>
+                    <missing>target/dist/lib</missing>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.github.eirslett</groupId>
+                        <artifactId>frontend-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install bower</id>
+                                <goals>
+                                    <goal>grunt</goal>
+                                </goals>
+                                <configuration>
+                                    <arguments>bower</arguments>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>grunt-task</id>
+            <activation>
+                <property>
+                    <name>!disableGrunt</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.github.eirslett</groupId>
+                        <artifactId>frontend-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>npm remaining</id>
+                                <goals>
+                                    <goal>npm</goal>
+                                </goals>
+                                <configuration>
+                                    <arguments>install --ignore-scripts</arguments>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>grunt dist</id>
+                                <goals>
+                                    <goal>grunt</goal>
+                                </goals>
+                                <configuration>
+                                    <arguments>build</arguments>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 
     <dependencies>
@@ -219,51 +337,9 @@
             <artifactId>commons-io</artifactId>
         </dependency>
     </dependencies>
-
     <build>
         <plugins>
             <plugin>
-                <groupId>com.github.eirslett</groupId>
-                <artifactId>frontend-maven-plugin</artifactId>
-                <version>0.0.23</version>
-                <!-- optional -->
-                <configuration>
-                    <workingDirectory>../dashboard/v2/</workingDirectory>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>install node and npm</id>
-                        <goals>
-                            <goal>install-node-and-npm</goal>
-                        </goals>
-                        <configuration>
-                            <nodeVersion>v0.10.30</nodeVersion>
-                            <npmVersion>1.4.3</npmVersion>
-                        </configuration>
-                    </execution>
-
-                    <execution>
-                        <id>npm install</id>
-                        <goals>
-                            <goal>npm</goal>
-                        </goals>
-                        <configuration>
-                            <arguments>install</arguments>
-                        </configuration>
-                    </execution>
-
-                    <execution>
-                        <id>grunt dist</id>
-                        <goals>
-                            <goal>grunt</goal>
-                        </goals>
-                        <configuration>
-                            <arguments>build</arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <executions>
@@ -291,7 +367,7 @@
                     <attachClasses>true</attachClasses>
                     <webResources>
                         <resource>
-                            <directory>../dashboard/v2/dist</directory>
+                            <directory>target/dist</directory>
                             <targetPath>/</targetPath>
                         </resource>
                         <resource>


[06/11] incubator-atlas git commit: ATLAS-113 Add an About Dialog to Apache Atlas UI with version number. Contributed by Vishal Kadam

Posted by ve...@apache.org.
ATLAS-113 Add an About Dialog to Apache Atlas UI with version number. Contributed by Vishal Kadam


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/15ba43c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/15ba43c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/15ba43c6

Branch: refs/heads/master
Commit: 15ba43c661029534048d47b8e8a0da7250668a17
Parents: 37db995
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Fri Sep 11 15:11:19 2015 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Fri Sep 11 15:11:19 2015 -0700

----------------------------------------------------------------------
 dashboard/public/js/app.js                      |  1 +
 .../public/modules/about/aboutController.js     | 27 ++++++++++++++
 dashboard/public/modules/about/aboutModule.js   | 21 +++++++++++
 dashboard/public/modules/about/aboutResource.js | 23 ++++++++++++
 dashboard/public/modules/about/views/about.html | 39 ++++++++++++++++++++
 .../public/modules/home/headerController.js     | 11 +++++-
 dashboard/public/modules/home/views/header.html |  1 +
 release-log.txt                                 |  2 +
 8 files changed, 124 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/js/app.js
----------------------------------------------------------------------
diff --git a/dashboard/public/js/app.js b/dashboard/public/js/app.js
index 1bdb316..9f3bc39 100644
--- a/dashboard/public/js/app.js
+++ b/dashboard/public/js/app.js
@@ -24,6 +24,7 @@ angular.module('dgc', ['ngCookies',
     'ui.router',
     'dgc.system',
     'dgc.home',
+    'dgc.about',
     'dgc.search',
     'dgc.navigation'
 ]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/modules/about/aboutController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/about/aboutController.js b/dashboard/public/modules/about/aboutController.js
new file mode 100644
index 0000000..238b8a7
--- /dev/null
+++ b/dashboard/public/modules/about/aboutController.js
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.about').controller('AboutController', ['$scope', 'AboutResource', function($scope, AboutResource) {
+
+    AboutResource.get(function(data) {
+        $scope.versionInfo = data;
+    });
+
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/modules/about/aboutModule.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/about/aboutModule.js b/dashboard/public/modules/about/aboutModule.js
new file mode 100644
index 0000000..690994b
--- /dev/null
+++ b/dashboard/public/modules/about/aboutModule.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.about', []);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/modules/about/aboutResource.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/about/aboutResource.js b/dashboard/public/modules/about/aboutResource.js
new file mode 100644
index 0000000..44d97fa
--- /dev/null
+++ b/dashboard/public/modules/about/aboutResource.js
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+angular.module('dgc.about').factory('AboutResource', ['$resource', function($resource) {
+    return $resource('/api/atlas/admin/version', {});
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/modules/about/views/about.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/about/views/about.html b/dashboard/public/modules/about/views/about.html
new file mode 100644
index 0000000..2915b35
--- /dev/null
+++ b/dashboard/public/modules/about/views/about.html
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+
+<div class="modal-header">
+    <h3 class="modal-title title-bold">About</h3>
+</div>
+<div class="modal-body">
+    <div class="row">
+        <div class="col-md-4">
+            <img src="../img/ApacheAtlasLogo.png" class="img-responsive">
+        </div>
+        <div class="col-md-8">
+        <h2 class="title-bold">Apache Atlas</h2>
+        <p><b>Version : </b> {{versionInfo.Version}}</p>
+        </br>
+        <p class="text-info">Get involved!</p>
+        <p class="text-info"><a href="http://apache.org/licenses/LICENSE-2.0" target="_blank">Licensed under the Apache License Version 2.0</a></p>
+    </div>
+    </div>
+</div>
+<div class="modal-footer">
+    <button class="btn btn-success" ng-click="$dismiss()">OK</button>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/modules/home/headerController.js
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/headerController.js b/dashboard/public/modules/home/headerController.js
index a8d1411..43bedb8 100644
--- a/dashboard/public/modules/home/headerController.js
+++ b/dashboard/public/modules/home/headerController.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-angular.module('dgc.home').controller('HeaderController', ['$scope', function($scope) {
+angular.module('dgc.home').controller('HeaderController', ['$scope', '$modal', function($scope, $modal) {
 
     $scope.menu = [];
 
@@ -26,4 +26,13 @@ angular.module('dgc.home').controller('HeaderController', ['$scope', function($s
     $scope.isLoggedIn = function() {
         return true;
     };
+
+    $scope.ShowAbout = function() {
+        $modal.open({
+            animation: true,
+            templateUrl: '/modules/about/views/about.html',
+            controller: 'AboutController',
+            size: 'lg'
+        });
+    };
 }]);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/dashboard/public/modules/home/views/header.html
----------------------------------------------------------------------
diff --git a/dashboard/public/modules/home/views/header.html b/dashboard/public/modules/home/views/header.html
index 85c5f4d..8d3ad18 100644
--- a/dashboard/public/modules/home/views/header.html
+++ b/dashboard/public/modules/home/views/header.html
@@ -32,5 +32,6 @@
                 <a data-ui-sref="{{item.state}}">{{item.title}}</a>
             </li>
         </ul>
+        <a  ng-if="!username" class="pull-right" href="javascript:void(0)" ng-click="ShowAbout()">About</a>
     </nav>
 </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/15ba43c6/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 26512ac..47a19da 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -8,6 +8,8 @@ ATLAS-54 Rename configs in hive hook (shwethags)
 ATLAS-3 Mixed Index creation fails with Date types (suma.shivaprasad via shwethags)
 
 ALL CHANGES:
+ATLAS-113 Add an About Dialog to Apache Atlas UI with version number (Vishal Kadam
+via Venkatesh Seetharam)
 ATLAS-109 Remove v2 Folder (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-90 Support offline builds (Vishal Kadam via Venkatesh Seetharam)
 ATLAS-154 Update website for 0.5-incubating release (Venkatesh Seetharam)