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/05/13 23:27:50 UTC
[09/50] [abbrv] incubator-atlas git commit: Add the latest dashboard
from MPR
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/dashboard/v3/lib/npm.js
----------------------------------------------------------------------
diff --git a/dashboard/v3/lib/npm.js b/dashboard/v3/lib/npm.js
new file mode 100755
index 0000000..bf6aa80
--- /dev/null
+++ b/dashboard/v3/lib/npm.js
@@ -0,0 +1,13 @@
+// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
+require('../../js/transition.js')
+require('../../js/alert.js')
+require('../../js/button.js')
+require('../../js/carousel.js')
+require('../../js/collapse.js')
+require('../../js/dropdown.js')
+require('../../js/modal.js')
+require('../../js/tooltip.js')
+require('../../js/popover.js')
+require('../../js/scrollspy.js')
+require('../../js/tab.js')
+require('../../js/affix.js')
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/dashboard/v3/partials/graph.json
----------------------------------------------------------------------
diff --git a/dashboard/v3/partials/graph.json b/dashboard/v3/partials/graph.json
new file mode 100755
index 0000000..1c6eb7b
--- /dev/null
+++ b/dashboard/v3/partials/graph.json
@@ -0,0 +1,19 @@
+{
+ "name": "sales_fact",
+ "children": [
+ {
+ "name": "loadSalesDaily", "size": 3938,
+ "children": [
+ {
+ "name": "sales_fact_daily_mv",
+ "children": [
+ {"name": "loadSalesMonthly", "size": 3938,
+ "children": [
+ {"name": "sales_fact_monthly_mv", "size": 3812}
+ ]
+ }
+ ]
+ }]
+ }
+ ]
+ }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/dashboard/v3/partials/sample.html
----------------------------------------------------------------------
diff --git a/dashboard/v3/partials/sample.html b/dashboard/v3/partials/sample.html
new file mode 100755
index 0000000..fd69000
--- /dev/null
+++ b/dashboard/v3/partials/sample.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+
+.node circle {
+ cursor: pointer;
+ stroke-width: 0px;
+}
+
+.node text {
+ font: 13px sans-serif;
+
+ pointer-events: none;
+ text-anchor: middle;
+}
+
+line.link {
+ fill: none;
+ stroke: green;
+ stroke-width: 5.5px;
+}
+
+</style>
+</head>
+<body>
+<script src="http://d3js.org/d3.v3.min.js"></script>
+<script>
+
+var width = 760,
+ height = 500,
+ root;
+
+var force = d3.layout.force()
+ .linkDistance(220)
+ .charge(-120)
+ .gravity(.05)
+ .size([width, height])
+ .on("tick", tick);
+
+var svg = d3.select("body").append("svg")
+ .attr("width", width)
+ .attr("height", height);
+
+var link = svg.selectAll(".link"),
+ node = svg.selectAll(".node");
+
+d3.json("graph.json", function(error, json) {
+ root = json;
+ update();
+});
+
+function update() {
+ var nodes = flatten(root),
+ links = d3.layout.tree().links(nodes);
+
+ // Restart the force layout.
+ force
+ .nodes(nodes)
+ .links(links)
+ .start();
+
+ // Update links.
+ link = link.data(links, function(d) { return d.target.id; });
+
+ link.exit().remove();
+
+ link.enter().insert("line", ".node")
+ .attr("class", "link");
+
+ // Update nodes.
+ node = node.data(nodes, function(d) { return d.id; });
+
+ node.exit().remove();
+
+ svg.append("svg:pattern").attr("id","processICO").attr("width",1).attr("height",1)
+ .append("svg:image").attr("xlink:href","../img/process.png").attr("x",-5.5).attr("y",-4).attr("width",42).attr("height",42);
+ svg.append("svg:pattern").attr("id","textICO").attr("width",1).attr("height",1)
+ .append("svg:image").attr("xlink:href","../img/tableicon.png").attr("x",2).attr("y",2).attr("width",25).attr("height",25);
+
+
+//arrow
+ svg.append("svg:defs").append("svg:marker").attr("id", "arrow").attr("viewBox", "0 0 10 10").attr("refX", 16).attr("refY", 5).attr("markerUnits", "strokeWidth").attr("markerWidth", 4).attr("markerHeight", 8).attr("orient", "auto").append("svg:path").attr("d", "M 0 0 L 10 5 L 0 10 z");
+//arrow
+ var nodeEnter = node.enter().append("g")
+ .attr("class", "node")
+ .on("click", click)
+ .call(force.drag);
+
+
+ nodeEnter.append("circle")
+ .attr("r", function(d) { return 15; });
+
+ link.attr("marker-end", "url(#arrow)"); //also added attribute for arrow at end
+
+ nodeEnter.append("text")
+ .attr("dy", "-1em")
+ .text(function(d) { return d.name; });
+
+ node.select("circle")
+ .style("fill", function(d, i) {
+ if(d.size==3938){
+ return "url('#processICO')";
+ }else{
+ return "url('#textICO')";
+ }
+ return colors(i);
+ });
+
+
+}
+
+function tick() {
+ link.attr("x1", function(d) { return d.source.x; })
+ .attr("y1", function(d) { return d.source.y; })
+ .attr("x2", function(d) { return d.target.x; })
+ .attr("y2", function(d) { return d.target.y; });
+
+ node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
+}
+
+function color(d) {
+ return d._children ? "#3182bd" // collapsed package
+ : d.children ? "#c6dbef" // expanded package
+ : "#fd8d3c"; // leaf node
+}
+
+// Toggle children on click.
+function click(d) {
+ if (d3.event.defaultPrevented) return; // ignore drag
+ if (d.children) {
+ d._children = d.children;
+ d.children = null;
+ } else {
+ d.children = d._children;
+ d._children = null;
+ }
+ update();
+}
+
+// Returns a list of all nodes the root.
+function flatten(root) {
+ var nodes = [], i = 0;
+
+ function recurse(node) {
+ if (node.children) node.children.forEach(recurse);
+ if (!node.id) node.id = ++i;
+ nodes.push(node);
+ }
+
+ recurse(root);
+ return nodes;
+}
+
+</script>
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/dashboard/v3/partials/search.html
----------------------------------------------------------------------
diff --git a/dashboard/v3/partials/search.html b/dashboard/v3/partials/search.html
new file mode 100755
index 0000000..1e9bcb1
--- /dev/null
+++ b/dashboard/v3/partials/search.html
@@ -0,0 +1,127 @@
+<!--
+~ 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.
+--> <!-- Page Content -->
+
+ <!--right panel-->
+ <div class="col-lg-8 mrgl45">
+ <div class="col-lg-12">
+ <h4 class="greyt" ng-hide="isUndefined(SearchQuery)" style="font: 15px sans-serif">{{itemlength}} results found for {{SearchQuery}}</h4>
+ <h4 ng-show="isUndefined(SearchQuery)">Results</h4>
+ </div>
+ <div class="col-lg-12 rightpanal">
+ <!--1-->
+ <div class="col-lg-12 div_ex" style="margin-top:30px" ng-repeat="(key, value) in pagedItems[currentPage]">
+ <div class="row">
+
+ <div ng-repeat="(k, v) in configdata">
+ <div class="col-xs-10" ng-if="datatype === k">
+ <span ng-repeat="(key1, value1) in v">
+
+ <span ng-if="isString(value1)">
+ <span class="resulttxt" ng-if="!(value1=='name')">
+ <b> {{value1}} : </b> {{value[value1] | date:'medium'}}<span ng-show=" ! $last ">,</span>
+
+ </span>
+
+ </span>
+
+ <span ng-if="value1.inputTables">
+ <span class="resulttxt">
+ <b> inputTables : </b> <span ng-repeat="(inkey, invalue) in value.inputTables"> <span ng-controller="GuidController"> <span ng-init="getGuidName(invalue.id)"> <span ng-repeat="x in gnew track by $index">{{x}}</span>, </span> </span> </span>
+
+ </span>
+
+ </span>
+
+ <div ng-if="value1.$id$">
+
+ <div class="col-lg-12" style="margin-left:-40px;">
+ <img src="img/arrow.png"> <span class="guidtxt">
+ <a ui-sref="details({ Id: value['$id$'].id })" style="color: #636364 !important;">{{value['name']}}</a></span>
+ </div>
+ </br>
+ </div>
+ <div ng-if="value1.instanceInfo" ng-controller="GuidController">
+
+ <div class="col-lg-12" style="margin-left:-40px;">
+ <img src="img/arrow.png"> <span class="guidtxt" ui-sref="details({ Id: value['instanceInfo'].guid })" style="color: #636364 !important;" ng-init="getGuidName(value['instanceInfo'].guid)">
+
+ <a ui-sref="details({ Id: value['instanceInfo'].guid })" style="color: #636364 !important;" ng-repeat="x in gnew track by $index">{{x}}</a>
+
+ </span>
+ </div>
+ </br>
+ <div class="col-lg-12" style="margin-left: -15px;">
+ <p>{{value['instanceInfo'].typeName}}</p>
+ </div>
+ </div>
+
+
+ <div ng-if="value1.description">
+
+ <div class="col-lg-12" style="margin-left: -15px;">
+ <p>{{value['description']}}</p>
+ </div>
+ </br>
+ </div>
+ <div ng-if="value1.$traits$" class="col-lg-12 guidtxt2" style="margin-left: -15px;">Tags:
+ <b ng-if="isObject(value['$traits$'])">
+ <u ng-repeat="(keytag, valtag) in value['$traits$']">
+ <a ng-click="updateVars($event)" ui-sref="Search({ searchid: keytag })" style="color: #636364 !important;">{{keytag}}</a>
+ </u>
+ </b>
+ </div>
+
+ </span>
+ </div>
+
+ <!--1-->
+
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-12 img2" align="right"><img src="img/img2.png"></div>
+<br/>
+ <br/>
+ <br/>
+ <div class="col-lg-12" >
+
+
+ <!-- DC Pagination:A1 Start -->
+ <ul class="tsc_pagination tsc_paginationA tsc_paginationA01" style="margin-top:-30px" ng-show="Showpaging(pagedItems.length)">
+
+ <li ng-class="{disabled: currentPage == 0}"><a href ng-click="firstPage()" class="first">First</a></li>
+ <li><a href ng-click="prevPage()" class="previous">Previous</a></li>
+ <li ng-repeat="n in range(pagedItems.length)" nd-class="{current: n == currentPage}" ng-click="setPage()"><a href ng-bind="n+1">1</a></li>
+ <li ng-class="{disabled: currentPage == pagedItems.length-1}"><a href ng-click="nextPage()" class="next">Next</a></li>
+ <li ng-class="{disabled: currentPage == pagedItems.length-1}"><a href ng-click="lastPage()" class="last">Last</a></li>
+
+
+
+
+ </ul>
+ </div>
+ </div>
+</div>
+
+
+
+
+
+
+
+
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/dashboard/v3/partials/wiki.html
----------------------------------------------------------------------
diff --git a/dashboard/v3/partials/wiki.html b/dashboard/v3/partials/wiki.html
new file mode 100755
index 0000000..06da6e5
--- /dev/null
+++ b/dashboard/v3/partials/wiki.html
@@ -0,0 +1,257 @@
+<!--
+ ~ 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.
+ -->
+
+ <!--right panel-->
+ <div class="col-lg-8 mrgl45">
+
+ <tabset justified="true" class="col-lg-12 greyt">
+ <tab heading="DETAILS">
+ <div class="col-lg-12 rightpanal">
+ <!--1-->
+
+ <div class="col-xs-12">
+ <div class="row">
+
+ <div>
+ <!-- name and desc -->
+
+ <div>
+
+ <div ng-repeat="(key, value) in details" ng-if="value && (key==='name')">
+ <br/>
+ <br/>
+ <p style="font-weight:1000;font-size:18px;color:#333;"> {{value }}</p>
+
+ <!-- <h4><b> {{value}}</b></h4> -->
+
+
+ </div>
+
+
+
+ <div ng-repeat="(key, value) in details" ng-if="value && (key==='description')">
+ <!-- <h4> <b>{{value}} </b> </h4> -->
+
+ <p style="font-weight:bold;"> {{value}}</p>
+ </div>
+ <div class="sm-txt2">
+
+
+ <p ng-repeat="(keytag, valtag) in details['$traits$']">Tags:
+ <a ng-click="updateDetailsVariable($event)" ui-sref="Search({ searchid: keytag })" style="color: #636364 !important;">
+ {{keytag}} </a></p>
+
+
+ </div>
+
+ </div>
+ <p ><b> Additional Details</b></p>
+
+ <!-- name and desc -->
+ <table class="table table-bordered table-hover" style="margin-top: 20px">
+ <thead>
+
+ <tr>
+ <th style="border:2px solid #C9CBCC !important;">Key</th>
+ <th style="border:2px solid #C9CBCC !important;">Value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- <tr ng-repeat="(key, value) in details" ng-if="value && (key==='name')">
+ <td>{{key}}</td>
+ <td>
+ {{value}}</td>
+ </tr>
+ <tr ng-repeat="(key, value) in details" ng-if="value && (key==='description')">
+ <td>{{key}}</td>
+ <td>
+ {{value}}</td>
+ </tr> -->
+
+
+ <tr ng-repeat="(key, value) in details" ng-if="value && !(key==='columns') && !(key==='name') && !(key==='description')">
+
+
+ <td>{{key}}</td>
+ <td ng-if="isString(value)">
+ {{value | date:'medium'}}</td>
+
+ <td ng-if="isObject(value)">
+ <div ng-repeat="(key1, value1) in value">
+ <p ng-if="key1==='id'">
+ <a ng-click="updateVariable($event)" href="#/details/{{value1}}" style="color: #636364 !important;" ng-init="getGuidName(value1)">{{ gname.name }}</a></p>
+ <p ng-if="!(key1==='id')" class="sm-txt2"><b>{{ key1}} : </b>
+ {{ value.version}}
+ </div>
+ </td>
+
+ </tr>
+ <!-- <tr>
+
+ <td>
+ <p class="sm-txt2">Tags:</p>
+ </td>
+ <td>
+ <p ng-repeat="(keytag, valtag) in details['$traits$']">
+ <a ng-click="updateVariable($event)" ui-sref="Search({ searchid: keytag })" style="color: #636364 !important;">
+ {{keytag}} </a></p>
+ </td>
+
+ </tr>
+ -->
+ </tbody>
+
+ </table>
+
+ </div>
+
+
+
+
+
+ <div class="col-lg-12 img2" align="right"><img src="img/img2.png"></div>
+ </div>
+ </div>
+
+ </div>
+ </tab>
+
+ <tab heading="SCHEMA" ng-if="datatype1==='Table'">
+ <div class="col-lg-12 rightpanal">
+ <!--1-->
+ <div class="col-xs-12">
+ <div class="row">
+
+
+ <table class="table table-bordered table-hover" style="margin-top: 20px">
+ <!-- <thead>
+ <tr>
+ <th style="border:2px solid #C9CBCC !important;">Value</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-repeat="(key, value) in schema.columns">
+ <td>{{value}}</td>
+ </tr>
+ </tbody>-->
+
+
+ <thead>
+
+ <tr >
+ <th style="border:2px solid #C9CBCC !important;">Name</th>
+ <th style="border:2px solid #C9CBCC !important;">DataType</th>
+ <th style="border:2px solid #C9CBCC !important;">Comment</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr ng-repeat="s in schema track by $index" >
+ <td>{{s.name }}</td>
+
+
+
+ <td> {{s.dataType }}</td>
+
+ <td> {{s.comment }}</td>
+ </tr>
+ <!-- <tr ng-repeat="(key, value) in schema" ng-if="value">
+
+ <td ng-if="isString(value)">
+ {{value | date:'medium'}}</td>
+
+ <td ng-if="isObject(value)">
+ <div ng-repeat="(key1, value1) in value">
+ <p ng-if="key1==='id'">
+ <a ng-click="updateVariable($event)" href="#/details/{{value1}}" style="color: #636364 !important;" ng-init="getGuidName(value1)">{{ gname.name }}</a>
+ </p>
+
+ <p ng-if="!(key1==='id')" class="sm-txt2" >
+ <td><b>{{ key1 }} : </b></td>
+
+
+
+ <td> {{ value1 | date:'medium' }}</td>
+ </tr>
+ </p>
+
+
+ </div>
+ </td>
+
+ </tr> -->
+ </tbody>
+
+ </table>
+
+ </div>
+ <div class="col-lg-12 img2" align="right"><img src="img/img2.png"></div>
+ </div>
+ </div>
+ </tab>
+ <tab heading="OUTPUTS" ng-show="datatype1==='Table'">
+ <div class="col-lg-12 rightpanal" >
+ <div class="col-xs-12">
+ <div class="row">
+ <div ng-if="errornodata"><h1>{{errornodata}}</h1></div>
+ <!--<svg ng-attr-width="{{width}}"-->
+ <!--ng-attr-height="{{height}}">-->
+
+ <!--</svg>-->
+
+
+ <svg
+ width="700px" height="600px" overflow="hidden" style="margin:auto;vertical-align: middle;" preserveAspectRatio="none">
+
+ </svg>
+
+
+ <!--<div id="mybounce" style="text-align:center;">-->
+
+
+ <!--</div>-->
+
+ <div class="col-lg-12 img2" align="right"><img src="img/img2.png"></div>
+ </div>
+ </div>
+ </div>
+ </tab>
+ <tab heading="INPUTS" ng-show="datatype1==='Table'">
+ <div class="col-lg-12 rightpanal">
+ <div class="col-xs-12">
+ <div class="row">
+ <div ng-if="errornodata1"><h1>{{errornodata1}}</h1></div>
+ <svg1 ng-attr-width="{{width}}"
+ ng-attr-height="{{height}}" width="700px" height="600px" overflow="hidden" style="margin:auto;vertical-align: middle;" preserveAspectRatio="none">
+
+ </svg1>
+ <!--<iframe src="partials/sample.html"style=" width:630px;height:500px;overflow-x: hidden;overflow: hidden; overflow-y='scroll';" frameborder="0" scrolling="no"></iframe>-->
+
+
+
+ <div class="col-lg-12 img2" align="right"><img src="img/img2.png"></div>
+ </div>
+ </div>
+ </div>
+ </tab>
+ </tabset>
+ <div>
+ <!--<a ui-sref="Search" ng-click="goBack()" style="color: #636364 !important; margin-left: 15px;">Back To Results(old)</a>-->
+ <a ui-sref="Search" onClick="javascript:history.go(-1);" style="color: #636364 !important; margin-left: 15px;">Back To Results</a>
+ </div>
+
+ </div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 7313fcc..6a66bea 100755
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -216,14 +216,10 @@
<configuration>
<webResources>
<resource>
- <directory>../dashboard/v1</directory>
+ <directory>../dashboard/v3</directory>
<targetPath>dashboard</targetPath>
</resource>
<resource>
- <directory>../dashboard/v2</directory>
- <targetPath>dashboard/v2</targetPath>
- </resource>
- <resource>
<directory>src/main/webapp/WEB-INF</directory>
<targetPath>WEB-INF</targetPath>
</resource>
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/a9d61e1b/webapp/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/webapp/src/main/webapp/index.html b/webapp/src/main/webapp/index.html
index f15a3a9..c248b79 100755
--- a/webapp/src/main/webapp/index.html
+++ b/webapp/src/main/webapp/index.html
@@ -23,11 +23,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="Date-Revision-yyyymmdd" content="20130821"/>
<meta http-equiv="Content-Language" content="en"/>
- <title>Apache DGI - Data Governance platform</title>
+ <title>Apache Atlas - Data Governance for Hadoop</title>
</head>
<body class="topBarEnabled">
-<h1> Apache DGI </h1>
-More information at: <a href="http://dgi.incubator.apache.org/index.html" title="About">Project
- Website</a>
+<h1> Apache Atlas </h1>
+<a href="./dashboard/index.html" title="Atlas">Atlas Dashboard</a>
+<br/>
+More information at: <a href="http://atlas.incubator.apache.org/index.html" title="About">Project Website</a>
</body>
</html>