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)