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:42 UTC
[05/11] incubator-atlas git commit: ATLAS-109 Remove v2 Folder.
Contributed by Vishal Kadam
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);
+ };
+ }
+]);