You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by sh...@apache.org on 2016/09/19 06:27:05 UTC
[2/8] incubator-atlas git commit: ATLAS-1142 Lineage UI Improvement
(kevalbhatt via shwethags)
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/dashboardv2/public/js/require-handlebars-plugin/js/hbs.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/require-handlebars-plugin/js/hbs.js b/dashboardv2/public/js/require-handlebars-plugin/js/hbs.js
deleted file mode 100644
index 4aa054c..0000000
--- a/dashboardv2/public/js/require-handlebars-plugin/js/hbs.js
+++ /dev/null
@@ -1,490 +0,0 @@
-/**
- * @license Handlebars hbs 0.4.0 - Alex Sexton, but Handlebars has it's own licensing junk
- *
- * Available via the MIT or new BSD license.
- * see: http://github.com/jrburke/require-cs for details on the plugin this was based off of
- */
-
-/* Yes, deliciously evil. */
-/*jslint evil: true, strict: false, plusplus: false, regexp: false */
-/*global require: false, XMLHttpRequest: false, ActiveXObject: false,
-define: false, process: false, window: false */
-define([
- //>>excludeStart('excludeHbs', pragmas.excludeHbs)
- 'handlebars', 'underscore', 'i18nprecompile', 'json2'
- //>>excludeEnd('excludeHbs')
-], function(
- //>>excludeStart('excludeHbs', pragmas.excludeHbs)
- Handlebars, _, precompile, JSON
- //>>excludeEnd('excludeHbs')
-) {
- //>>excludeStart('excludeHbs', pragmas.excludeHbs)
- var fs, getXhr,
- progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
- fetchText = function() {
- throw new Error('Environment unsupported.');
- },
- buildMap = [],
- filecode = "w+",
- templateExtension = "hbs",
- customNameExtension = "@hbs",
- devStyleDirectory = "/styles/",
- buildStyleDirectory = "/demo-build/styles/",
- helperDirectory = "template/helpers/",
- i18nDirectory = "template/i18n/",
- buildCSSFileName = "screen.build.css";
-
- Handlebars.registerHelper('$', function() {
- //placeholder for translation helper
- });
-
- if (typeof window !== "undefined" && window.navigator && window.document && !window.navigator.userAgent.match(/Node.js/)) {
- // Browser action
- getXhr = function() {
- //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
- var xhr, i, progId;
- if (typeof XMLHttpRequest !== "undefined") {
- return new XMLHttpRequest();
- } else {
- for (i = 0; i < 3; i++) {
- progId = progIds[i];
- try {
- xhr = new ActiveXObject(progId);
- } catch (e) {}
-
- if (xhr) {
- progIds = [progId]; // so faster next time
- break;
- }
- }
- }
-
- if (!xhr) {
- throw new Error("getXhr(): XMLHttpRequest not available");
- }
-
- return xhr;
- };
-
- fetchText = function(url, callback) {
- var prependComment = "<!--START: " + url + "--> == <!--END: " + url + "-->";
- var xhr = getXhr();
- xhr.open('GET', url, true);
- xhr.onreadystatechange = function(evt) {
- //Do not explicitly handle errors, those should be
- //visible via console output in the browser.
- if (xhr.readyState === 4) {
- callback(xhr.responseText);
- //TODO FIXME Gautam:Not working with backbone-forms when it does this : $($.trim(this.template(_.result(this, 'templateData'))));
- // callback(prependComment.replace('==',xhr.responseText));
- }
- };
- xhr.send(null);
- };
-
- } else if (typeof process !== "undefined" &&
- process.versions &&
- !!process.versions.node) {
- //Using special require.nodeRequire, something added by r.js.
- fs = require.nodeRequire('fs');
- fetchText = function(path, callback) {
- var body = fs.readFileSync(path, 'utf8') || "";
- // we need to remove BOM stuff from the file content
- body = body.replace(/^\uFEFF/, '');
- callback(body);
- };
- } else if (typeof java !== "undefined" && typeof java.io !== "undefined") {
- fetchText = function(path, callback) {
- var f = new java.io.File(path);
- var is = new java.io.FileReader(f);
- var reader = new java.io.BufferedReader(is);
- var line;
- var text = "";
- while ((line = reader.readLine()) !== null) {
- text += new String(line) + "\n";
- }
- reader.close();
- callback(text);
- };
- }
-
- var cache = {};
- var fetchOrGetCached = function(path, callback) {
- if (cache[path]) {
- callback(cache[path]);
- } else {
- fetchText(path, function(data) {
- cache[path] = data;
- callback.call(this, data);
- });
- }
- };
- var styleList = [],
- styleMap = {};
- //>>excludeEnd('excludeHbs')
-
- return {
-
- get: function() {
- return Handlebars;
- },
-
- write: function(pluginName, name, write) {
-
- if ((name + customNameExtension) in buildMap) {
- var text = buildMap[name + customNameExtension];
- write.asModule(pluginName + "!" + name, text);
- }
- },
-
- version: '0.4.0',
-
- load: function(name, parentRequire, load, config) {
- //>>excludeStart('excludeHbs', pragmas.excludeHbs)
-
- var compiledName = name + customNameExtension,
- disableI18n = (config.hbs && config.hbs.disableI18n),
- partialDeps = [];
-
- function recursiveNodeSearch(statements, res) {
- _(statements).forEach(function(statement) {
- if (statement && statement.type && statement.type === 'partial') {
- res.push(statement.partialName.name);
- }
- if (statement && statement.program && statement.program.statements) {
- recursiveNodeSearch(statement.program.statements, res);
- }
- if (statement && statement.program && statement.program.inverse && statement.program.inverse.statements) {
- recursiveNodeSearch(statement.program.inverse.statements, res);
- }
- });
- return res;
- }
-
- // TODO :: use the parser to do this!
- function findPartialDeps(nodes) {
- var res = [];
- if (nodes && nodes.statements) {
- res = recursiveNodeSearch(nodes.statements, []);
- }
- return _(res).unique();
- }
-
- // See if the first item is a comment that's json
- function getMetaData(nodes) {
- var statement, res, test;
- if (nodes && nodes.statements) {
- statement = nodes.statements[0];
- if (statement && statement.type === "comment") {
- try {
- res = (statement.comment).replace(new RegExp('^[\\s]+|[\\s]+$', 'g'), '');
- test = JSON.parse(res);
- return res;
- } catch (e) {
- return "{}";
- }
- }
- }
- return "{}";
- }
-
- function composeParts(parts) {
- if (!parts) {
- return [];
- }
- var res = [parts[0]],
- cur = parts[0],
- i;
-
- for (i = 1; i < parts.length; ++i) {
- if (parts.hasOwnProperty(i)) {
- cur += "." + parts[i];
- res.push(cur);
- }
- }
- return res;
- }
-
- function recursiveVarSearch(statements, res, prefix, helpersres) {
- prefix = prefix ? prefix + "." : "";
-
- var newprefix = "",
- flag = false;
-
- // loop through each statement
- _(statements).forEach(function(statement) {
- var parts, part, sideways;
-
- // if it's a mustache block
- if (statement && statement.type && statement.type === 'mustache') {
-
- // If it has params, the first part is a helper or something
- if (!statement.params || !statement.params.length) {
- parts = composeParts(statement.id.parts);
- for (part in parts) {
- if (parts[part]) {
- newprefix = parts[part] || newprefix;
- res.push(prefix + parts[part]);
- }
- }
- res.push(prefix + statement.id.string);
- }
-
- var paramsWithoutParts = ['this', '.', '..', './..', '../..', '../../..'];
-
- // grab the params
- if (statement.params && typeof Handlebars.helpers[statement.id.string] === 'undefined') {
- _(statement.params).forEach(function(param) {
- if (_(paramsWithoutParts).contains(param.original) || param instanceof Handlebars.AST.StringNode || param instanceof Handlebars.AST.IntegerNode || param instanceof Handlebars.AST.BooleanNode) {
- helpersres.push(statement.id.string);
- }
-
- parts = composeParts(param.parts);
-
- for (var part in parts) {
- if (parts[part]) {
- newprefix = parts[part] || newprefix;
- helpersres.push(statement.id.string);
- res.push(prefix + parts[part]);
- }
- }
- });
- }
- }
-
- // If it's a meta block
- if (statement && statement.mustache) {
- recursiveVarSearch([statement.mustache], res, prefix + newprefix, helpersres);
- }
-
- // if it's a whole new program
- if (statement && statement.program && statement.program.statements) {
- sideways = recursiveVarSearch([statement.mustache], [], "", helpersres)[0] || "";
- if (statement.program.inverse && statement.program.inverse.statements) {
- recursiveVarSearch(statement.program.inverse.statements, res, prefix + newprefix + (sideways ? (prefix + newprefix) ? "." + sideways : sideways : ""), helpersres);
- }
- recursiveVarSearch(statement.program.statements, res, prefix + newprefix + (sideways ? (prefix + newprefix) ? "." + sideways : sideways : ""), helpersres);
- }
- });
- return res;
- }
-
- // This finds the Helper dependencies since it's soooo similar
- function getExternalDeps(nodes) {
- var res = [];
- var helpersres = [];
-
- if (nodes && nodes.statements) {
- res = recursiveVarSearch(nodes.statements, [], undefined, helpersres);
- }
-
- var defaultHelpers = ["helperMissing", "blockHelperMissing", "each", "if", "unless", "with"];
-
- return {
- vars: _(res).chain().unique().map(function(e) {
- if (e === "") {
- return '.';
- }
- if (e.length && e[e.length - 1] === '.') {
- return e.substr(0, e.length - 1) + '[]';
- }
- return e;
- }).value(),
- helpers: _(helpersres).chain().unique().map(function(e) {
- if (_(defaultHelpers).contains(e)) {
- return undefined;
- }
- return e;
- }).compact().value()
- };
- }
-
- function fetchAndRegister(langMap) {
- fetchText(path, function(text) {
- // for some reason it doesn't include hbs _first_ when i don't add it here...
- var nodes = Handlebars.parse(text),
- deps = findPartialDeps(nodes),
- meta = getMetaData(nodes),
- extDeps = getExternalDeps(nodes),
- vars = extDeps.vars,
- helps = extDeps.helpers || [],
- depStr = deps.join("', 'hbs!").replace(/_/g, '/'),
- helpDepStr = config.hbs && config.hbs.disableHelpers ?
- "" : (function() {
- var i, paths = [],
- pathGetter = config.hbs && config.hbs.helperPathCallback ? config.hbs.helperPathCallback : function(name) {
- return (config.hbs && config.hbs.helperDirectory ? config.hbs.helperDirectory : helperDirectory) + name;
- };
-
- for (i = 0; i < helps.length; i++) {
- paths[i] = "'" + pathGetter(helps[i], path) + "'"
- }
- return paths;
- })().join(','),
- debugOutputStart = "",
- debugOutputEnd = "",
- debugProperties = "",
- metaObj, head, linkElem;
-
- if (depStr) {
- depStr = ",'hbs!" + depStr + "'";
- }
- if (helpDepStr) {
- helpDepStr = "," + helpDepStr;
- }
-
- if (meta !== "{}") {
- try {
- metaObj = JSON.parse(meta);
- if (metaObj && metaObj.styles) {
- styleList = _.union(styleList, metaObj.styles);
-
- // In dev mode in the browser
- if (require.isBrowser && !config.isBuild) {
- head = document.head || document.getElementsByTagName('head')[0];
- _(metaObj.styles).forEach(function(style) {
- if (!styleMap[style]) {
- linkElem = document.createElement('link');
- linkElem.href = config.baseUrl + devStyleDirectory + style + '.css';
- linkElem.media = 'all';
- linkElem.rel = 'stylesheet';
- linkElem.type = 'text/css';
- head.appendChild(linkElem);
- styleMap[style] = linkElem;
- }
- });
- } else if (config.isBuild) {
- (function() {
- var fs = require.nodeRequire('fs'),
- str = _(metaObj.styles).map(function(style) {
- if (!styleMap[style]) {
- styleMap[style] = true;
- return "@import url(" + style + ".css);\n";
- }
- return "";
- }).join("\n");
-
- // I write out my import statements to a file in order to help me build stuff.
- // Then I use a tool to inline my import statements afterwards. (you can run r.js on it too)
- fs.open(__dirname + buildStyleDirectory + buildCSSFileName, filecode, '0666', function(e, id) {
- fs.writeSync(id, str, null, encoding = 'utf8');
- fs.close(id);
- });
- filecode = "a";
- })();
- }
- }
- } catch (e) {
- console.log('error injecting styles');
- }
- }
-
- if (!config.isBuild && !config.serverRender) {
- debugOutputStart = "<!-- START - " + name + " -->";
- debugOutputEnd = "<!-- END - " + name + " -->";
- debugProperties = "t.meta = " + meta + ";\n" +
- "t.helpers = " + JSON.stringify(helps) + ";\n" +
- "t.deps = " + JSON.stringify(deps) + ";\n" +
- "t.vars = " + JSON.stringify(vars) + ";\n";
- }
-
- var mapping = disableI18n ? false : _.extend(langMap, config.localeMapping),
- configHbs = config.hbs || {},
- options = _.extend(configHbs.compileOptions || {}, {
- originalKeyFallback: configHbs.originalKeyFallback
- }),
- prec = precompile(text, mapping, options);
-
- text = "/* START_TEMPLATE */\n" +
- "define(['hbs','handlebars'" + depStr + helpDepStr + "], function( hbs, Handlebars ){ \n" +
- "var t = Handlebars.template(" + prec + ");\n" +
- "Handlebars.registerPartial('" + name.replace(/\//g, '_') + "', t);\n" +
- debugProperties +
- "return t;\n" +
- "});\n" +
- "/* END_TEMPLATE */\n";
-
- //Hold on to the transformed text if a build.
- if (config.isBuild) {
- buildMap[compiledName] = text;
- }
-
- //IE with conditional comments on cannot handle the
- //sourceURL trick, so skip it if enabled.
- /*@if (@_jscript) @else @*/
- if (!config.isBuild) {
- text += "\r\n//@ sourceURL=" + path;
- }
- /*@end@*/
-
- for (var i in deps) {
- if (deps.hasOwnProperty(i)) {
- deps[i] = 'hbs!' + deps[i].replace(/_/g, '/');
- }
- }
-
- if (!config.isBuild) {
- require(deps, function() {
- load.fromText(text);
-
- //Give result to load. Need to wait until the module
- //is fully parse, which will happen after this
- //execution.
- parentRequire([name], function(value) {
- load(value);
- });
- });
- } else {
- load.fromText(name, text);
-
- //Give result to load. Need to wait until the module
- //is fully parse, which will happen after this
- //execution.
- parentRequire([name], function(value) {
- load(value);
- });
- }
-
- if (config.removeCombined) {
- fs.unlinkSync(path);
- }
- });
- }
-
- var path,
- omitExtension = config.hbs && config.hbs.templateExtension === false;
- if (omitExtension) {
- path = parentRequire.toUrl(name);
- } else {
- path = parentRequire.toUrl(name + '.' + (config.hbs && config.hbs.templateExtension ? config.hbs.templateExtension : templateExtension));
- }
-
- if (disableI18n) {
- fetchAndRegister(false);
- } else {
- // Workaround until jam is able to pass config info or we move i18n to a separate module.
- // This logs a warning and disables i18n if there's an error loading the language file
- var langMapPath = (config.hbs && config.hbs.i18nDirectory ? config.hbs.i18nDirectory : i18nDirectory) + (config.locale || "en_us") + '.json';
- try {
- fetchOrGetCached(parentRequire.toUrl(langMapPath), function(langMap) {
- fetchAndRegister(JSON.parse(langMap));
- });
- } catch (er) {
- // if there's no configuration at all, log a warning and disable i18n for this and subsequent templates
- if (!config.hbs) {
- console.warn('hbs: Error reading ' + langMapPath + ', disabling i18n. Ignore this if you\'re using jam, otherwise check your i18n configuration.\n');
- config.hbs = {
- disableI18n: true
- };
- fetchAndRegister(false);
- } else {
- throw er;
-
- }
- }
- }
- //>>excludeEnd('excludeHbs')
- }
- };
-});
-/* END_hbs_PLUGIN */
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/dashboardv2/public/js/require-handlebars-plugin/js/i18nprecompile.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/require-handlebars-plugin/js/i18nprecompile.js b/dashboardv2/public/js/require-handlebars-plugin/js/i18nprecompile.js
deleted file mode 100644
index 925ac39..0000000
--- a/dashboardv2/public/js/require-handlebars-plugin/js/i18nprecompile.js
+++ /dev/null
@@ -1,57 +0,0 @@
-//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)
-define(['handlebars', "underscore"], function(Handlebars, _) {
-
- function replaceLocaleStrings(ast, mapping, options) {
- options = options || {};
- mapping = mapping || {};
- // Base set of things
- if (ast && ast.type === "program" && ast.statements) {
- _(ast.statements).forEach(function(statement, i) {
- var newString = "<!-- i18n error -->";
- // If it's a translation node
- if (statement.type === "mustache" && statement.id && statement.id.original === "$") {
-
- if (statement.params.length && statement.params[0].string) {
- var key = statement.params[0].string;
- newString = mapping[key] || (options.originalKeyFallback ? key : newString);
- }
- ast.statements[i] = new Handlebars.AST.ContentNode(newString);
- }
- // If we need to recurse
- else if (statement.program) {
- statement.program = replaceLocaleStrings(statement.program, mapping, options);
- }
- });
- // Also cover the else blocks
- if (ast.inverse) {
- replaceLocaleStrings(ast.inverse, mapping, options);
- }
- }
- return ast;
- }
-
- return function precompile(string, mapping, options) {
- var ast, environment;
-
- options = options || {};
-
- if (!('data' in options)) {
- options.data = true;
- }
-
- if (options.compat) {
- options.useDepths = true;
- }
-
- ast = Handlebars.parse(string);
-
- // avoid replacing locale if mapping is `false`
- if (mapping !== false) {
- ast = replaceLocaleStrings(ast, mapping, options);
- }
-
- environment = new Handlebars.Compiler().compile(ast, options);
- return new Handlebars.JavaScriptCompiler().compile(environment, options);
- };
-});
-//>>excludeEnd('excludeAfterBuild')
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/dashboardv2/public/js/require-handlebars-plugin/js/json2.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/require-handlebars-plugin/js/json2.js b/dashboardv2/public/js/require-handlebars-plugin/js/json2.js
deleted file mode 100644
index c740001..0000000
--- a/dashboardv2/public/js/require-handlebars-plugin/js/json2.js
+++ /dev/null
@@ -1,351 +0,0 @@
-//>>excludeStart('excludeAfterBuild', pragmas.excludeAfterBuild)
-/*
- http://www.JSON.org/json2.js
- 2011-10-19
-
- Public Domain.
-
- NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
-
- See http://www.JSON.org/js.html
-
-
- This code should be minified before deployment.
- See http://javascript.crockford.com/jsmin.html
-
- USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
- NOT CONTROL.
-*/
-
-/*jslint evil: true, regexp: true */
-
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
- call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
- getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
- lastIndex, length, parse, prototype, push, replace, slice, stringify,
- test, toJSON, toString, valueOf
-*/
-
-(function(window) {
-
- // Create a JSON object only if one does not already exist. We create the
- // methods in a closure to avoid creating global variables.
-
- // Return the window JSON element if it exists;
- var JSON = window.JSON || {};
-
- (function() {
- 'use strict';
-
- function f(n) {
- // Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
- }
-
- if (typeof Date.prototype.toJSON !== 'function') {
-
- Date.prototype.toJSON = function(key) {
-
- return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' +
- f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z' : null;
- };
-
- String.prototype.toJSON =
- Number.prototype.toJSON =
- Boolean.prototype.toJSON = function(key) {
- return this.valueOf();
- };
- }
-
- var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- gap,
- indent,
- meta = { // table of character substitutions
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"': '\\"',
- '\\': '\\\\'
- },
- rep;
-
- function quote(string) {
-
- // If the string contains no control characters, no quote characters, and no
- // backslash characters, then we can safely slap some quotes around it.
- // Otherwise we must also replace the offending characters with safe escape
- // sequences.
-
- escapable.lastIndex = 0;
- return escapable.test(string) ? '"' + string.replace(escapable, function(a) {
- var c = meta[a];
- return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' : '"' + string + '"';
- }
-
- function str(key, holder) {
-
- // Produce a string from holder[key].
-
- var i, // The loop counter.
- k, // The member key.
- v, // The member value.
- length,
- mind = gap,
- partial,
- value = holder[key];
-
- // If the value has a toJSON method, call it to obtain a replacement value.
-
- if (value && typeof value === 'object' &&
- typeof value.toJSON === 'function') {
- value = value.toJSON(key);
- }
-
- // If we were called with a replacer function, then call the replacer to
- // obtain a replacement value.
-
- if (typeof rep === 'function') {
- value = rep.call(holder, key, value);
- }
-
- // What happens next depends on the value's type.
-
- switch (typeof value) {
- case 'string':
- return quote(value);
-
- case 'number':
-
- // JSON numbers must be finite. Encode non-finite numbers as null.
-
- return isFinite(value) ? String(value) : 'null';
-
- case 'boolean':
- case 'null':
-
- // If the value is a boolean or null, convert it to a string. Note:
- // typeof null does not produce 'null'. The case is included here in
- // the remote chance that this gets fixed someday.
-
- return String(value);
-
- // If the type is 'object', we might be dealing with an object or an array or
- // null.
-
- case 'object':
-
- // Due to a specification blunder in ECMAScript, typeof null is 'object',
- // so watch out for that case.
-
- if (!value) {
- return 'null';
- }
-
- // Make an array to hold the partial results of stringifying this object value.
-
- gap += indent;
- partial = [];
-
- // Is the value an array?
-
- if (Object.prototype.toString.apply(value) === '[object Array]') {
-
- // The value is an array. Stringify every element. Use null as a placeholder
- // for non-JSON values.
-
- length = value.length;
- for (i = 0; i < length; i += 1) {
- partial[i] = str(i, value) || 'null';
- }
-
- // Join all of the elements together, separated with commas, and wrap them in
- // brackets.
-
- v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']';
- gap = mind;
- return v;
- }
-
- // If the replacer is an array, use it to select the members to be stringified.
-
- if (rep && typeof rep === 'object') {
- length = rep.length;
- for (i = 0; i < length; i += 1) {
- if (typeof rep[i] === 'string') {
- k = rep[i];
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
- } else {
-
- // Otherwise, iterate through all of the keys in the object.
-
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
- }
-
- // Join all of the member texts together, separated with commas,
- // and wrap them in braces.
-
- v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}';
- gap = mind;
- return v;
- }
- }
-
- // If the JSON object does not yet have a stringify method, give it one.
-
- if (typeof JSON.stringify !== 'function') {
- JSON.stringify = function(value, replacer, space) {
-
- // The stringify method takes a value and an optional replacer, and an optional
- // space parameter, and returns a JSON text. The replacer can be a function
- // that can replace values, or an array of strings that will select the keys.
- // A default replacer method can be provided. Use of the space parameter can
- // produce text that is more easily readable.
-
- var i;
- gap = '';
- indent = '';
-
- // If the space parameter is a number, make an indent string containing that
- // many spaces.
-
- if (typeof space === 'number') {
- for (i = 0; i < space; i += 1) {
- indent += ' ';
- }
-
- // If the space parameter is a string, it will be used as the indent string.
-
- } else if (typeof space === 'string') {
- indent = space;
- }
-
- // If there is a replacer, it must be a function or an array.
- // Otherwise, throw an error.
-
- rep = replacer;
- if (replacer && typeof replacer !== 'function' &&
- (typeof replacer !== 'object' ||
- typeof replacer.length !== 'number')) {
- throw new Error('JSON.stringify');
- }
-
- // Make a fake root object containing our value under the key of ''.
- // Return the result of stringifying the value.
-
- return str('', {
- '': value
- });
- };
- }
-
- // If the JSON object does not yet have a parse method, give it one.
-
- if (typeof JSON.parse !== 'function') {
- JSON.parse = function(text, reviver) {
-
- // The parse method takes a text and an optional reviver function, and returns
- // a JavaScript value if the text is a valid JSON text.
-
- var j;
-
- function walk(holder, key) {
-
- // The walk method is used to recursively walk the resulting structure so
- // that modifications can be made.
-
- var k, v, value = holder[key];
- if (value && typeof value === 'object') {
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = walk(value, k);
- if (v !== undefined) {
- value[k] = v;
- } else {
- delete value[k];
- }
- }
- }
- }
- return reviver.call(holder, key, value);
- }
-
- // Parsing happens in four stages. In the first stage, we replace certain
- // Unicode characters with escape sequences. JavaScript handles many characters
- // incorrectly, either silently deleting them, or treating them as line endings.
-
- text = String(text);
- cx.lastIndex = 0;
- if (cx.test(text)) {
- text = text.replace(cx, function(a) {
- return '\\u' +
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- });
- }
-
- // In the second stage, we run the text against regular expressions that look
- // for non-JSON patterns. We are especially concerned with '()' and 'new'
- // because they can cause invocation, and '=' because it can cause mutation.
- // But just to be safe, we want to reject all unexpected forms.
-
- // We split the second stage into 4 regexp operations in order to work around
- // crippling inefficiencies in IE's and Safari's regexp engines. First we
- // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
- // replace all simple value tokens with ']' characters. Third, we delete all
- // open brackets that follow a colon or comma or that begin the text. Finally,
- // we look to see that the remaining characters are only whitespace or ']' or
- // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
-
- if (/^[\],:{}\s]*$/
- .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
- .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
-
- // In the third stage we use the eval function to compile the text into a
- // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
- // in JavaScript: it can begin a block or an object literal. We wrap the text
- // in parens to eliminate the ambiguity.
-
- j = eval('(' + text + ')');
-
- // In the optional fourth stage, we recursively walk the new structure, passing
- // each name/value pair to a reviver function for possible transformation.
-
- return typeof reviver === 'function' ? walk({
- '': j
- }, '') : j;
- }
-
- // If the text is not JSON parseable, then a SyntaxError is thrown.
-
- throw new SyntaxError('JSON.parse');
- };
- }
- }());
-
- define(function() {
- return JSON;
- });
- // otherwise just leave it alone
-
-}).call(this, this);
-//>>excludeEnd('excludeAfterBuild')
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html b/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
index 26d27b3..12e3a0a 100644
--- a/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/graph/LineageLayoutView_tmpl.html
@@ -17,7 +17,7 @@
<!-- <div class="panel-heading">
<h3 class="panel-title">Lineage</h3>
</div> -->
-<div class="panel-body graph-bg" align="center">
+<div class="panel-body graph-bg resize-graph" align="center">
<div class="graph" id="tree-container">
</div>
<div style="position:relative">
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 35f5811..4706ba3 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -142,9 +142,13 @@ define(['require',
if (!this.name && collectionJSON[0].values.qualifiedName) {
this.name = collectionJSON[0].values.qualifiedName;
}
+ if (this.name && collectionJSON[0].typeName) {
+ this.name = this.name + ' (' + collectionJSON[0].typeName + ')';
+ }
if (!this.name && collectionJSON[0].typeName) {
this.name = collectionJSON[0].typeName;
}
+
if (!this.name && this.id) {
this.name = this.id;
}
@@ -153,7 +157,7 @@ define(['require',
this.ui.title.show();
var titleName = '<span>' + this.name + '</span>';
if (this.readOnly) {
- titleName += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i> Deleted</button>'
+ titleName += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i> Deleted</button>';
}
this.ui.title.html(titleName);
} else {
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/dashboardv2/public/js/views/graph/LineageLayoutView.js
----------------------------------------------------------------------
diff --git a/dashboardv2/public/js/views/graph/LineageLayoutView.js b/dashboardv2/public/js/views/graph/LineageLayoutView.js
index 706848e..eebbd9f 100644
--- a/dashboardv2/public/js/views/graph/LineageLayoutView.js
+++ b/dashboardv2/public/js/views/graph/LineageLayoutView.js
@@ -24,7 +24,8 @@ define(['require',
'utils/Utils',
'dagreD3',
'd3-tip',
- 'utils/Globals'
+ 'utils/Globals',
+ 'jquery-ui'
], function(require, Backbone, LineageLayoutViewtmpl, VLineageList, VEntity, Utils, dagreD3, d3Tip, Globals) {
'use strict';
@@ -64,6 +65,7 @@ define(['require',
this.fetchGraphData();
this.data = {};
this.asyncFetchCounter = 0;
+
},
bindEvents: function() {
this.listenTo(this.inputCollection, 'reset', function() {
@@ -82,7 +84,15 @@ define(['require',
}, this);
},
onRender: function() {
+ var that = this;
this.$('.fontLoader').show();
+ this.$(".resize-graph").resizable({
+ handles: ' s',
+ minHeight: 355,
+ stop: function(event, ui) {
+ that.$('svg').height(($(this).height() - 5))
+ },
+ });
this.g = new dagreD3.graphlib.Graph()
.setGraph({
nodesep: 50,
@@ -114,8 +124,15 @@ define(['require',
if (data && data.definition) {
if (data.definition.values) {
var values = data.definition.values;
- obj['label'] = values.name.trunc(20);
+ obj['label'] = values.name;
+
obj['toolTiplabel'] = values.name;
+ if (data.definition.typeName) {
+ var temp = obj['label'] + ' (' + data.definition.typeName + ')'
+ obj['label'] = temp;
+ obj['toolTiplabel'] = temp;
+ }
+ obj['label'] = obj['label'].trunc(18);
obj['id'] = data.GUID;
if (values.queryText) {
obj['queryText'] = values.queryText;
@@ -176,8 +193,14 @@ define(['require',
_.each(uniquNode, function(val, key) {
var obj = {};
if (vertices[val] && vertices[val].values) {
- obj['label'] = vertices[val].values.name.trunc(20);
+ obj['label'] = vertices[val].values.name;
obj['toolTiplabel'] = vertices[val].values.name;
+ if (vertices[val].values.vertexId && vertices[val].values.vertexId.values && vertices[val].values.vertexId.values.typeName) {
+ var temp = obj['label'] + ' (' + vertices[val].values.vertexId.values.typeName + ')';
+ obj['label'] = temp;
+ obj['toolTiplabel'] = temp;
+ }
+ obj['label'] = obj['label'].trunc(18);
obj['id'] = val;
obj['class'] = "type-TOP";
obj['shape'] = "img";
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/7bb2709d/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index b11d7dc..d53a866 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -9,6 +9,7 @@ ATLAS-1060 Add composite indexes for exact match performance improvements for al
ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai)
ALL CHANGES:
+ATLAS-1142 Lineage UI Improvement (kevalbhatt via shwethags)
ATLAS-712 Support getTrait() API (svimal2106 via shwethags)
ATLAS-1173 Doc: Minor editorial bug in the example given for property atlas.server.ha.zookeeper.auth (yhemanth via shwethags)
ATLAS-1133 Jetty Server start doesn't throw exception when user-credential.properties file is not found (nixonrodrigues,svimal2106 via kevalbhatt)