You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/02/01 18:52:53 UTC
[35/51] [abbrv] [partial] brooklyn-ui git commit: move subdir from
incubator up a level as it is promoted to its own repo (first non-incubator
commit!)
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/router.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/router.js b/brooklyn-ui/src/main/webapp/assets/js/router.js
deleted file mode 100644
index d80d35c..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/router.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-define([
- "brooklyn", "underscore", "jquery", "backbone",
- "model/application", "model/app-tree", "model/location",
- "model/server-extended-status",
- "view/home", "view/application-explorer", "view/catalog", "view/script-groovy",
- "text!tpl/help/page.html","text!tpl/labs/page.html", "text!tpl/home/server-caution.html"
-], function (Brooklyn, _, $, Backbone,
- Application, AppTree, Location,
- serverStatus,
- HomeView, ExplorerView, CatalogView, ScriptGroovyView,
- HelpHtml, LabsHtml, ServerCautionHtml) {
-
- var ServerCautionOverlay = Backbone.View.extend({
- template: _.template(ServerCautionHtml),
- scheduledRedirect: false,
- initialize: function() {
- var that = this;
- this.carryOnRegardless = false;
- _.bindAll(this);
- serverStatus.addCallback(this.renderAndAddCallback);
- },
- renderAndAddCallback: function() {
- this.renderOnUpdate();
- serverStatus.addCallback(this.renderAndAddCallback);
- },
- renderOnUpdate: function() {
- var that = this;
- if (this.carryOnRegardless) return this.renderEmpty();
-
- var state = {
- loaded: serverStatus.loaded,
- up: serverStatus.isUp(),
- shuttingDown: serverStatus.isShuttingDown(),
- healthy: serverStatus.isHealthy(),
- master: serverStatus.isMaster(),
- masterUri: serverStatus.getMasterUri(),
- };
-
- if (state.loaded && state.up && state.healthy && state.master) {
- // this div shows nothing in normal operation
- return this.renderEmpty();
- }
-
- this.warningActive = true;
- this.$el.html(this.template(state));
- $('#application-content').fadeTo(500,0.1);
- this.$el.fadeTo(200,1);
-
- $("#dismiss-standby-warning", this.$el).click(function() {
- that.carryOnRegardless = true;
- if (that.redirectPending) {
- log("Cancelling redirect, using this non-master instance");
- clearTimeout(that.redirectPending);
- that.redirectPending = null;
- }
- that.renderOnUpdate();
- });
-
- if (!state.master && state.masterUri) {
- if (!this.scheduledRedirect && !this.redirectPending) {
- log("Not master; will redirect shortly to: "+state.masterUri);
- var destination = state.masterUri + "#" + Backbone.history.fragment;
- var time = 10;
- this.scheduledRedirect = true;
- log("Redirecting to " + destination + " in " + time + " seconds");
- this.redirectPending = setTimeout(function () {
- // re-check, in case the server's status changed in the wait
- if (!serverStatus.isMaster()) {
- if (that.redirectPending) {
- window.location.href = destination;
- } else {
- log("Cancelled redirect, using this non-master instance");
- }
- } else {
- log("Cancelled redirect, this instance is now master");
- }
- }, time * 1000);
- }
- }
- return this;
- },
- renderEmpty: function() {
- var that = this;
- this.warningActive = false;
- this.$el.fadeTo(200,0.2, function() {
- if (!that.warningActive)
- that.$el.empty();
- });
- $('#application-content').fadeTo(200,1);
- return this;
- },
- beforeClose: function() {
- this.stopListening();
- },
- warnIfNotLoaded: function() {
- if (!this.loaded)
- this.renderOnUpdate();
- }
- });
- // look for ha-standby-overlay for compatibility with older index.html copies
- var serverCautionOverlay = new ServerCautionOverlay({ el: $("#server-caution-overlay").length ? $("#server-caution-overlay") : $("#ha-standby-overlay")});
- serverCautionOverlay.render();
-
- var Router = Backbone.Router.extend({
- routes:{
- 'v1/home/*trail':'homePage',
- 'v1/applications/:app/entities/*trail':'applicationsPage',
- 'v1/applications/*trail':'applicationsPage',
- 'v1/applications':'applicationsPage',
- 'v1/locations':'catalogPage',
- 'v1/catalog/:kind(/:id)':'catalogPage',
- 'v1/catalog':'catalogPage',
- 'v1/script/groovy':'scriptGroovyPage',
- 'v1/help':'helpPage',
- 'labs':'labsPage',
- '*path':'defaultRoute'
- },
-
- showView: function(selector, view) {
- // close the previous view - does binding clean-up and avoids memory leaks
- if (this.currentView) {
- this.currentView.close();
- }
- // render the view inside the selector element
- $(selector).html(view.render().el);
- this.currentView = view;
- return view;
- },
-
- defaultRoute: function() {
- this.homePage('auto')
- },
-
- applications: new Application.Collection,
- appTree: new AppTree.Collection,
- locations: new Location.Collection,
-
- homePage:function (trail) {
- var that = this;
- var veryFirstViewLoad, homeView;
- // render the page after we fetch the collection -- no rendering on error
- function render() {
- homeView = new HomeView({
- collection:that.applications,
- locations:that.locations,
- cautionOverlay:serverCautionOverlay,
- appRouter:that
- });
- veryFirstViewLoad = !that.currentView;
- that.showView("#application-content", homeView);
- }
- this.applications.fetch({success:function () {
- render();
- // show add application wizard if none already exist and this is the first page load
- if ((veryFirstViewLoad && trail=='auto' && that.applications.isEmpty()) || (trail=='add_application') ) {
- if (serverStatus.isMaster()) {
- homeView.createApplication();
- }
- }
- }, error: render});
- },
- applicationsPage:function (app, trail, tab) {
- if (trail === undefined) trail = app
- var that = this
- this.appTree.fetch({success:function () {
- var appExplorer = new ExplorerView({
- collection:that.appTree,
- appRouter:that
- })
- that.showView("#application-content", appExplorer)
- if (trail !== undefined) appExplorer.show(trail)
- }})
- },
- catalogPage: function (catalogItemKind, id) {
- var catalogResource = new CatalogView({
- locations: this.locations,
- appRouter: this,
- kind: catalogItemKind,
- id: id
- });
- this.showView("#application-content", catalogResource);
- },
- scriptGroovyPage:function () {
- if (this.scriptGroovyResource === undefined)
- this.scriptGroovyResource = new ScriptGroovyView({})
- this.showView("#application-content", this.scriptGroovyResource)
- $(".nav1").removeClass("active")
- $(".nav1_script").addClass("active")
- $(".nav1_script_groovy").addClass("active")
- },
- helpPage:function () {
- $("#application-content").html(_.template(HelpHtml, {}))
- $(".nav1").removeClass("active")
- $(".nav1_help").addClass("active")
- },
- labsPage:function () {
- $("#application-content").html(_.template(LabsHtml, {}))
- $(".nav1").removeClass("active")
- },
-
- /** Triggers the Backbone.Router process which drives this GUI through Backbone.history,
- * after starting background server health checks and waiting for confirmation of health
- * (or user click-through). */
- startBrooklynGui: function() {
- serverStatus.whenUp(function() { Backbone.history.start(); });
- serverStatus.autoUpdate();
- _.delay(serverCautionOverlay.warnIfNotLoaded, 2*1000)
- }
- });
-
- $.ajax({
- type: "GET",
- url: "/v1/server/user",
- dataType: "text"
- }).done(function (data) {
- if (data != null) {
- $("#user").html(_.escape(data));
- }
- });
-
- return Router
-})
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-utils.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-utils.js b/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-utils.js
deleted file mode 100644
index 5f3915c..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-utils.js
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* brooklyn utility methods */
-
-define([
- 'jquery', 'underscore'
-], function ($, _) {
-
- var Util = {};
-
- /**
- * @return {string} empty string if s is null or undefined, otherwise result of _.escape(s)
- */
- Util.escape = function (s) {
- if (s == undefined || s == null) return "";
- return _.escape(s);
- };
-
- function isWholeNumber(v) {
- return (Math.abs(Math.round(v) - v) < 0.000000000001);
- }
-
- Util.roundIfNumberToNumDecimalPlaces = function (v, mantissa) {
- if (!_.isNumber(v) || mantissa < 0)
- return v;
-
- if (isWholeNumber(v))
- return Math.round(v);
-
- var vk = v, xp = 1;
- for (var i=0; i < mantissa; i++) {
- vk *= 10;
- xp *= 10;
- if (isWholeNumber(vk)) {
- return Math.round(vk)/xp;
- }
- }
- return Number(v.toFixed(mantissa));
- };
-
- Util.toDisplayString = function(data) {
- if (data==null) return null;
- data = Util.roundIfNumberToNumDecimalPlaces(data, 4);
- if (typeof data !== 'string')
- data = JSON.stringify(data);
- return Util.escape(data);
- };
-
- Util.toTextAreaString = function(data) {
- if (data==null) return null;
- data = Util.roundIfNumberToNumDecimalPlaces(data, 8);
- if (typeof data !== 'string')
- data = JSON.stringify(data, null, 2);
- return data;
- };
-
- if (!String.prototype.trim) {
- // some older javascripts do not support 'trim' (including jasmine spec runner) so let's define it
- String.prototype.trim = function(){
- return this.replace(/^\s+|\s+$/g, '');
- };
- }
-
- // from http://stackoverflow.com/questions/646628/how-to-check-if-a-string-startswith-another-string
- if (typeof String.prototype.startsWith != 'function') {
- String.prototype.startsWith = function (str){
- return this.slice(0, str.length) == str;
- };
- }
- if (typeof String.prototype.endsWith != 'function') {
- String.prototype.endsWith = function (str){
- return this.slice(-str.length) == str;
- };
- }
-
- // poor-man's copy
- Util.promptCopyToClipboard = function(text) {
- window.prompt("To copy to the clipboard, press Ctrl+C then Enter.", text);
- };
-
- /**
- * Returns the path component of a string URL. e.g. http://example.com/bob/bob --> /bob/bob
- */
- Util.pathOf = function(string) {
- if (!string) return "";
- var a = document.createElement("a");
- a.href = string;
- return a.pathname;
- };
-
- /**
- * Extracts the value of the given input. Returns true/false for for checkboxes
- * rather than "on" or "off".
- */
- Util.inputValue = function($input) {
- if ($input.attr("type") === "checkbox") {
- return $input.is(":checked");
- } else {
- return $input.val();
- }
- };
-
- /**
- * Updates or initialises the given model with the values of named elements under
- * the given element. Force-updates the model by setting silent: true.
- */
- Util.bindModelFromForm = function(modelOrConstructor, $el) {
- var model = _.isFunction(modelOrConstructor) ? new modelOrConstructor() : modelOrConstructor;
- var inputs = {};
-
- // Look up all named elements
- $("[name]", $el).each(function(idx, inp) {
- var input = $(inp);
- var name = input.attr("name");
- inputs[name] = Util.inputValue(input);
- });
- model.set(inputs, { silent: true });
- return model;
- };
-
- /**
- * Parses xhrResponse.responseText as JSON and returns its message. Returns
- * alternate message if parsing fails or the parsed object has no message.
- * @param {jqXHR} xhrResponse
- * @param {string} alternateMessage
- * @param {string=} logMessage if false or null, does not log;
- * otherwise it logs a message and the xhrResponse, with logMessage
- * (or with alternateMessage if logMessage is true)
- * @returns {*}
- */
- Util.extractError = function (xhrResponse, alternateMessage, logMessage) {
- if (logMessage) {
- if (logMessage === true) {
- console.error(alternateMessage);
- } else {
- console.error(logMessage);
- }
- console.log(xhrResponse);
- }
-
- try {
- var response = JSON.parse(xhrResponse.responseText);
- return response.message ? response.message : alternateMessage;
- } catch (e) {
- return alternateMessage;
- }
- };
-
- secretWords = [ "password", "passwd", "credential", "secret", "private", "access.cert", "access.key" ];
-
- Util.isSecret = function (key) {
- if (!key) return false;
- key = key.toString().toLowerCase();
- for (secretWord in secretWords)
- if (key.indexOf(secretWords[secretWord]) >= 0)
- return true;
- return false;
- };
-
- Util.logout = function logout() {
- $.ajax({
- type: "POST",
- dataType: "text",
- url: "/logout",
- success: function() {
- window.location.replace("/");
- },
- failure: function() {
- window.location.replace("/");
- }
- });
- }
-
- Util.setSelectionRange = function (input, selectionStart, selectionEnd) {
- if (input.setSelectionRange) {
- input.focus();
- input.setSelectionRange(selectionStart, selectionEnd);
- }
- else if (input.createTextRange) {
- var range = input.createTextRange();
- range.collapse(true);
- range.moveEnd('character', selectionEnd);
- range.moveStart('character', selectionStart);
- range.select();
- }
- };
-
- Util.setCaretToPos = function (input, pos) {
- Util.setSelectionRange(input, pos, pos);
- };
-
- $.fn.setCaretToStart = function() {
- this.each(function(index, elem) {
- Util.setCaretToPos(elem, 0);
- $(elem).scrollTop(0);
- });
- return this;
- };
-
- $("#logout-link").on("click", function (e) {
- e.preventDefault();
- Util.logout()
- return false;
- });
-
- return Util;
-
-});
-
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-view.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-view.js b/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-view.js
deleted file mode 100644
index 7151ae1..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn-view.js
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-
-/* brooklyn extensions for supporting views */
-define([
- "jquery", "underscore", "backbone", "brooklyn-utils",
- "text!tpl/lib/basic-modal.html",
- "text!tpl/lib/config-key-type-value-input-pair.html"
- ], function (
- $, _, Backbone, Util,
- ModalHtml, ConfigKeyInputHtml
-) {
-
- var module = {};
-
- module.refresh = true;
-
- /** Toggles automatic refreshes of instances of View. */
- module.toggleRefresh = function () {
- this.refresh = !this.refresh;
- return this.refresh;
- };
-
- // TODO this customising of the View prototype could be expanded to include
- // other methods from viewutils. see discussion at
- // https://github.com/brooklyncentral/brooklyn/pull/939
-
- // add close method to all views for clean-up
- // (NB we have to update the prototype _here_ before any views are instantiated;
- // see "close" called below in "showView")
- Backbone.View.prototype.close = function () {
- // call user defined close method if exists
- this.viewIsClosed = true;
- if (_.isFunction(this.beforeClose)) {
- this.beforeClose();
- }
- _.each(this._periodicFunctions, function (i) {
- clearInterval(i);
- });
- this.remove();
- this.unbind();
- };
-
- Backbone.View.prototype.viewIsClosed = false;
-
- /**
- * Registers a callback (cf setInterval) that is unregistered cleanly when the view
- * closes. The callback is run in the context of the owning view, so callbacks can
- * refer to 'this' safely.
- */
- Backbone.View.prototype.callPeriodically = function (uid, callback, interval) {
- if (!this._periodicFunctions) {
- this._periodicFunctions = {};
- }
- var old = this._periodicFunctions[uid];
- if (old) clearInterval(old);
-
- // Wrap callback in function that checks whether updates are enabled
- var periodic = function () {
- if (module.refresh) {
- callback.apply(this);
- }
- };
- // Bind this to the view
- periodic = _.bind(periodic, this);
- this._periodicFunctions[uid] = setInterval(periodic, interval);
- };
-
- /**
- * A form that listens to modifications to its inputs, maintaining a model that is
- * submitted when a button with class 'submit' is clicked.
- *
- * Expects a body view or a template function to render.
- */
- module.Form = Backbone.View.extend({
- events: {
- "change": "onChange",
- "submit": "onSubmit"
- },
-
- initialize: function() {
- if (!this.options.body && !this.options.template) {
- throw new Error("body view or template function required by GenericForm");
- } else if (!this.options.onSubmit) {
- throw new Error("onSubmit function required by GenericForm");
- }
- this.onSubmitCallback = this.options.onSubmit;
- this.model = new (this.options.model || Backbone.Model);
- _.bindAll(this, "onSubmit", "onChange");
- this.render();
- },
-
- beforeClose: function() {
- if (this.options.body) {
- this.options.body.close();
- }
- },
-
- render: function() {
- if (this.options.body) {
- this.options.body.render();
- this.$el.html(this.options.body.$el);
- } else {
- this.$el.html(this.options.template());
- }
- // Initialise the model with existing values
- Util.bindModelFromForm(this.model, this.$el);
- return this;
- },
-
- onChange: function(e) {
- var target = $(e.target);
- var name = target.attr("name");
- this.model.set(name, Util.inputValue(target), { silent: true });
- },
-
- onSubmit: function(e) {
- e.preventDefault();
- // Could validate model
- this.onSubmitCallback(this.model.clone());
- return false;
- }
-
- });
-
- /**
- * A view to render another view in a modal. Give another view to render as
- * the `body' parameter that has an onSubmit function that will be called
- * when the modal's `Save' button is clicked, and/or an onCancel callback
- * that will be called when the modal is closed without saving.
- *
- * The onSubmit callback should return either:
- * <ul>
- * <li><b>nothing</b>: the callback is treated as successful
- * <li><b>true</b> or <b>false</b>: the callback is treated as appropriate
- * <li>a <b>promise</b> with `done' and `fail' callbacks (for example a jqXHR object):
- * The callback is treated as successful when the promise is done without error.
- * <li><b>anything else</b>: the callback is treated as successful
- * </ul>
- * When the onSubmit callback is successful the modal is closed.
- *
- * The return value of the onCancel callback is ignored.
- *
- * The modal will still be open and visible when the onSubmit callback is called.
- * The modal will have been closed when the onCancel callback is called.
- */
- module.Modal = Backbone.View.extend({
-
- id: _.uniqueId("modal"),
- className: "modal",
- template: _.template(ModalHtml),
-
- events: {
- "hide": "onClose",
- "click .modal-submit": "onSubmit"
- },
-
- initialize: function() {
- if (!this.options.body) {
- throw new Error("Modal view requires body to render");
- }
- _.bindAll(this, "onSubmit", "onCancel", "show");
- if (this.options.autoOpen) {
- this.show();
- }
- },
-
- beforeClose: function() {
- if (this.options.body) {
- this.options.body.close();
- }
- },
-
- render: function() {
- var optionalTitle = this.options.body.title;
- var title = _.isFunction(optionalTitle)
- ? optionalTitle()
- : _.isString(optionalTitle)
- ? optionalTitle : this.options.title;
- this.$el.html(this.template({
- title: title,
- submitButtonText: this.options.submitButtonText || "Apply",
- cancelButtonText: this.options.cancelButtonText || "Cancel"
- }));
- this.options.body.render();
- this.$(".modal-body").html(this.options.body.$el);
- return this;
- },
-
- show: function() {
- this.render().$el.modal();
- return this;
- },
-
- onSubmit: function(event) {
- if (_.isFunction(this.options.body.onSubmit)) {
- var submission = this.options.body.onSubmit.apply(this.options.body, [event]);
- var self = this;
- var submissionSuccess = function() {
- // Closes view via event.
- self.closingSuccessfully = true;
- self.$el.modal("hide");
- };
- var submissionFailure = function () {
- // Better response.
- console.log("modal submission failed!", arguments);
- };
- // Assuming no value is fine
- if (!submission) {
- submission = true;
- }
- if (_.isBoolean(submission) && submission) {
- submissionSuccess();
- } else if (_.isBoolean(submission)) {
- submissionFailure();
- } else if (_.isFunction(submission.done) && _.isFunction(submission.fail)) {
- submission.done(submissionSuccess).fail(submissionFailure);
- } else {
- // assuming success and closing modal
- submissionSuccess()
- }
- }
- return false;
- },
-
- onCancel: function () {
- if (_.isFunction(this.options.body.onCancel)) {
- this.options.body.onCancel.apply(this.options.body);
- }
- },
-
- onClose: function () {
- if (!this.closingSuccessfully) {
- this.onCancel();
- }
- this.close();
- }
- });
-
- /**
- * Shows a modal with yes/no buttons as a user confirmation prompt.
- * @param {string} question The message to show in the body of the modal
- * @param {string} [title] An optional title to show. Uses generic default if not given.
- * @returns {jquery.Deferred} The promise from a jquery.Deferred object. The
- * promise is resolved if the modal was submitted normally and rejected
- * otherwise.
- */
- module.requestConfirmation = function (question, title) {
- var deferred = $.Deferred();
- var Confirmation = Backbone.View.extend({
- title: title || "Confirm action",
- render: function () {
- this.$el.html(question || "");
- },
- onSubmit: function () {
- deferred.resolve();
- },
- onCancel: function () {
- deferred.reject();
- }
- });
- new module.Modal({
- body: new Confirmation(),
- autoOpen: true,
- submitButtonText: "Yes",
- cancelButtonText: "No"
- });
- return deferred.promise();
- };
-
- /** Creates, displays and returns a modal with the given view used as its body */
- module.showModalWith = function (bodyView) {
- return new module.Modal({body: bodyView}).show();
- };
-
- /**
- * Presents inputs for config key names/values with buttons to add/remove entries
- * and a function to extract a map of name->value.
- */
- module.ConfigKeyInputPairList = Backbone.View.extend({
- template: _.template(ConfigKeyInputHtml),
- // Could listen to input change events and add 'error' class to any type inputs
- // that duplicate values.
- events: {
- "click .config-key-row-remove": "rowRemove",
- "keypress .last": "rowAdd"
- },
- render: function () {
- if (this.options.configKeys) {
- var templated = _.map(this.options.configKeys, function (value, key) {
- return this.templateRow(key, value);
- }, this);
- this.$el.html(templated.join(""));
- }
- this.$el.append(this.templateRow());
- this.markLast();
- return this;
- },
- rowAdd: function (event) {
- this.$el.append(this.templateRow());
- this.markLast();
- },
- rowRemove: function (event) {
- $(event.currentTarget).parent().remove();
- if (this.$el.children().length == 0) {
- this.rowAdd();
- }
- this.markLast();
- },
- markLast: function () {
- this.$(".last").removeClass("last");
- // Marking inputs rather than parent div to avoid weird behaviour when
- // remove row button is triggered with the keyboard.
- this.$(".config-key-type").last().addClass("last");
- this.$(".config-key-value").last().addClass("last");
- },
- templateRow: function (type, value) {
- return this.template({type: type || "", value: value || ""});
- },
- getConfigKeys: function () {
- var cks = {};
- this.$(".config-key-type").each(function (index, input) {
- input = $(input);
- var type = input.val() && input.val().trim();
- var value = input.next().val() && input.next().val().trim();
- if (type && value) {
- cks[type] = value;
- }
- });
- return cks;
- }
- });
-
- return module;
-
-});
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn.js b/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn.js
deleted file mode 100644
index 702b59b..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/util/brooklyn.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-/** brooklyn extension to make console methods available and simplify access to other utils */
-
-define([
- "underscore", "brooklyn-view", "brooklyn-utils"
-], function (_, BrooklynViews, BrooklynUtils) {
-
- /**
- * Makes the console API safe to use:
- * - Stubs missing methods to prevent errors when no console is present.
- * - Exposes a global `log` function that preserves line numbering and formatting.
- *
- * Idea from https://gist.github.com/bgrins/5108712
- */
- (function () {
- var noop = function () {},
- consoleMethods = [
- 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
- 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
- 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
- 'timeStamp', 'trace', 'warn'
- ],
- length = consoleMethods.length,
- console = (window.console = window.console || {});
-
- while (length--) {
- var method = consoleMethods[length];
-
- // Only stub undefined methods.
- if (!console[method]) {
- console[method] = noop;
- }
- }
-
- if (Function.prototype.bind) {
- window.log = Function.prototype.bind.call(console.log, console);
- } else {
- window.log = function () {
- Function.prototype.apply.call(console.log, console, arguments);
- };
- }
- })();
-
- var template = _.template;
- _.mixin({
- /**
- * @param {string} text
- * @return string The text with HTML comments removed.
- */
- stripComments: function (text) {
- return text.replace(/<!--(.|[\n\r\t])*?-->\r?\n?/g, "");
- },
- /**
- * As the real _.template, calling stripComments on text.
- */
- template: function (text, data, settings) {
- return template(_.stripComments(text), data, settings);
- }
- });
-
- var Brooklyn = {
- view: BrooklynViews,
- util: BrooklynUtils
- };
-
- return Brooklyn;
-});
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/util/dataTables.extensions.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/util/dataTables.extensions.js b/brooklyn-ui/src/main/webapp/assets/js/util/dataTables.extensions.js
deleted file mode 100644
index 74a548e..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/util/dataTables.extensions.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * ---
- *
- * This code has been created by the Apache Brooklyn contributors.
- * It is heavily based on earlier software but rewritten for clarity
- * and to preserve license integrity.
- *
- * This work is based on the existing jQuery DataTables plug-ins for:
- *
- * * fnStandingRedraw by Jonathan Hoguet,
- * http://www.datatables.net/plug-ins/api/fnStandingRedraw
- *
- * * fnProcessingIndicator by Allan Chappell
- * https://www.datatables.net/plug-ins/api/fnProcessingIndicator
- *
- */
-define([
- "jquery", "jquery-datatables"
-], function($, dataTables) {
-
-$.fn.dataTableExt.oApi.fnStandingRedraw = function(oSettings) {
- if (oSettings.oFeatures.bServerSide === false) {
- // remember and restore cursor position
- var oldDisplayStart = oSettings._iDisplayStart;
- oSettings.oApi._fnReDraw(oSettings);
- oSettings._iDisplayStart = oldDisplayStart;
- oSettings.oApi._fnCalculateEnd(oSettings);
- }
- // and force draw
- oSettings.oApi._fnDraw(oSettings);
-};
-
-
-jQuery.fn.dataTableExt.oApi.fnProcessingIndicator = function(oSettings, bShow) {
- if (typeof bShow === "undefined") bShow=true;
- this.oApi._fnProcessingDisplay(oSettings, bShow);
-};
-
-});
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/util/jquery.slideto.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/util/jquery.slideto.js b/brooklyn-ui/src/main/webapp/assets/js/util/jquery.slideto.js
deleted file mode 100644
index 17afeed..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/util/jquery.slideto.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * ---
- *
- * This code has been created by the Apache Brooklyn contributors.
- * It is heavily based on earlier software but rewritten for readability
- * and to preserve license integrity.
- *
- * Our influences are:
- *
- * * jquery.slideto.min.js in Swagger UI, provenance unknown, added in:
- * https://github.com/wordnik/swagger-ui/commit/d2eb882e5262e135dfa3f5919796bbc3785880b8#diff-bd86720650a2ebd1ab11e870dc475564
- *
- * Swagger UI is distributed under ASL but it is not clear that this code originated in that project.
- * No other original author could be identified.
- *
- * * Nearly identical code referenced here:
- * http://stackoverflow.com/questions/12375440/scrolling-works-in-chrome-but-not-in-firefox-or-ie
- *
- * Note that the project https://github.com/Sleavely/jQuery-slideto is NOT this.
- *
- */
-(function(jquery){
-jquery.fn.slideto=function(opts) {
- opts = _.extend( {
- highlight: true,
- slide_duration: "slow",
- highlight_duration: 3000,
- highlight_color: "#FFFF99" },
- opts);
- return this.each(function() {
- $target=jquery(this);
- jquery("body").animate(
- { scrollTop: $target.offset().top },
- opts.slide_duration,
- function() {
- opts.highlight &&
- jquery.ui.version &&
- $target.effect(
- "highlight",
- { color: opts.highlight_color },
- opts.highlight_duration)
- })
- });
-}}) (jQuery);
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/view/activity-details.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/view/activity-details.js b/brooklyn-ui/src/main/webapp/assets/js/view/activity-details.js
deleted file mode 100644
index fa8b552..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/view/activity-details.js
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-/**
- * Displays details on an activity/task
- */
-define([
- "underscore", "jquery", "backbone", "brooklyn-utils", "view/viewutils", "moment",
- "model/task-summary",
- "text!tpl/apps/activity-details.html", "text!tpl/apps/activity-table.html",
-
- "bootstrap", "jquery-datatables", "datatables-extensions"
-], function (_, $, Backbone, Util, ViewUtils, moment,
- TaskSummary,
- ActivityDetailsHtml, ActivityTableHtml) {
-
- var activityTableTemplate = _.template(ActivityTableHtml),
- activityDetailsTemplate = _.template(ActivityDetailsHtml);
-
- function makeActivityTable($el) {
- $el.html(_.template(ActivityTableHtml));
- var $subTable = $('.activity-table', $el);
- $subTable.attr('width', 569-6-6 /* subtract padding */)
-
- return ViewUtils.myDataTable($subTable, {
- "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
- $(nRow).attr('id', aData[0])
- $(nRow).addClass('activity-row')
- },
- "aoColumnDefs": [ {
- "mRender": function ( data, type, row ) { return Util.escape(data) },
- "aTargets": [ 1, 2, 3 ]
- }, {
- "bVisible": false,
- "aTargets": [ 0 ]
- } ],
- "aaSorting":[] // default not sorted (server-side order)
- });
- }
-
- var ActivityDetailsView = Backbone.View.extend({
- template: activityDetailsTemplate,
- taskLink: '',
- task: null,
- /* children of this task; see HasTaskChildren for difference between this and sub(mitted)Tasks */
- childrenTable: null,
- /* tasks in the current execution context (this.collections) whose submittedByTask
- * is the task we are drilled down on. this defaults to the passed in collection,
- * which will be the last-viewed entity's exec-context; when children cross exec-context
- * boundaries we have to rewire to point to the current entity's exec-context / tasks */
- subtasksTable: null,
- children: null,
- breadcrumbs: [],
- firstLoad: true,
- events:{
- "click #activities-children-table .activity-table tr":"childrenRowClick",
- "click #activities-submitted-table .activity-table tr":"submittedRowClick",
- 'click .showDrillDownSubmittedByAnchor':'showDrillDownSubmittedByAnchor',
- 'click .showDrillDownBlockerOfAnchor':'showDrillDownBlockerOfAnchor',
- 'click .backDrillDown':'backDrillDown'
- },
- // requires taskLink or task; breadcrumbs is optional
- initialize:function () {
- var that = this;
- this.taskLink = this.options.taskLink;
- this.taskId = this.options.taskId;
- if (this.options.task)
- this.task = this.options.task;
- else if (this.options.tabView)
- this.task = this.options.tabView.collection.get(this.taskId);
- if (!this.taskLink && this.task) this.taskLink = this.task.get('links').self;
- if (!this.taskLink && this.taskId) this.taskLink = "v1/activities/"+this.taskId;;
-
- this.tabView = this.options.tabView || null;
-
- if (this.options.breadcrumbs) this.breadcrumbs = this.options.breadcrumbs;
-
- this.$el.html(this.template({ taskLink: this.taskLink, taskId: this.taskId, task: this.task, breadcrumbs: this.breadcrumbs }));
- this.$el.addClass('activity-detail-panel');
-
- this.childrenTable = makeActivityTable(this.$('#activities-children-table'));
- this.subtasksTable = makeActivityTable(this.$('#activities-submitted-table'));
-
- ViewUtils.attachToggler(this.$el)
-
- if (this.task) {
- this.renderTask()
- this.setUpPolling()
- } else {
- ViewUtils.fadeToIndicateInitialLoad(this.$el);
- this.$el.css('cursor', 'wait')
- $.get(this.taskLink, function(data) {
- ViewUtils.cancelFadeOnceLoaded(that.$el);
- that.task = new TaskSummary.Model(data)
- that.renderTask()
- that.setUpPolling();
- }).fail(function() { log("unable to load "+that.taskLink) })
- }
-
- // initial subtasks may be available from parent, so try to render those
- // (reliable polling for subtasks, and for children, is set up in setUpPolling )
- this.renderSubtasks()
- },
-
- refreshNow: function(initial) {
- var that = this
- $.get(this.taskLink, function(data) {
- that.task = new TaskSummary.Model(data)
- that.renderTask()
- if (initial) that.setUpPolling();
- })
- },
- renderTask: function() {
- // update task fields
- var that = this, firstLoad = this.firstLoad;
- this.firstLoad = false;
-
- if (firstLoad && this.task) {
-// log("rendering "+firstLoad+" "+this.task.get('isError')+" "+this.task.id);
- if (this.task.get('isError')) {
- // on first load, expand the details if there is a problem
- var $details = this.$(".toggler-region.task-detail .toggler-header");
- ViewUtils.showTogglerClickElement($details);
- }
- }
-
- this.updateFields('displayName', 'entityDisplayName', 'id', 'description', 'currentStatus', 'blockingDetails');
- this.updateFieldWith('blockingTask',
- function(v) {
- return "<a class='showDrillDownBlockerOfAnchor handy' link='"+_.escape(v.link)+"' id='"+v.metadata.id+"'>"+
- that.displayTextForLinkedTask(v)+"</a>" })
- this.updateFieldWith('result',
- function(v) {
- // use display string (JSON.stringify(_.escape(v)) because otherwise list of [null,null] is just ","
- var vs = Util.toDisplayString(v);
- if (vs.trim().length==0) {
- return " (empty result)";
- } else if (vs.length<20 && !/\r|\n/.exec(v)) {
- return " with result: <span class='result-literal'>"+vs+"</span>";
- } else {
- return "<div class='result-literal'>"+vs.replace(/\n+/g,"<br>")+"</div>"
- }
- })
- this.updateFieldWith('tags', function(tags) {
- var tagBody = "";
- for (var tag in tags) {
- tagBody += "<div class='activity-tag-giftlabel'>"+Util.toDisplayString(tags[tag])+"</div>";
- }
- return tagBody;
- })
-
- var submitTimeUtc = this.updateFieldWith('submitTimeUtc',
- function(v) { return v <= 0 ? "-" : moment(v).format('D MMM YYYY H:mm:ss.SSS')+" <i>"+moment(v).fromNow()+"</i>" })
- var startTimeUtc = this.updateFieldWith('startTimeUtc',
- function(v) { return v <= 0 ? "-" : moment(v).format('D MMM YYYY H:mm:ss.SSS')+" <i>"+moment(v).fromNow()+"</i>" })
- this.updateFieldWith('endTimeUtc',
- function(v) { return v <= 0 ? "-" : moment(v).format('D MMM YYYY H:mm:ss.SSS')+" <i>"+moment(v).from(startTimeUtc, true)+" later</i>" })
-
- ViewUtils.updateTextareaWithData(this.$(".task-json .for-textarea"),
- Util.toTextAreaString(this.task), false, false, 150, 400)
-
- ViewUtils.updateTextareaWithData(this.$(".task-detail .for-textarea"),
- this.task.get('detailedStatus'), false, false, 30, 250)
-
- this.updateFieldWith('streams',
- function(streams) {
- // Stream names presented alphabetically
- var keys = _.keys(streams);
- keys.sort();
- var result = "";
- for (var i = 0; i < keys.length; i++) {
- var name = keys[i];
- var stream = streams[name];
- result += "<div class='activity-stream-div'>" +
- "<span class='activity-label'>" +
- _.escape(name) +
- "</span><span>" +
- "<a href='" + stream.link + "'>download</a>" +
- (stream.metadata["sizeText"] ? " (" + _.escape(stream.metadata["sizeText"]) + ")" : "") +
- "</span></div>";
- }
- return result;
- });
-
- this.updateFieldWith('submittedByTask',
- function(v) { return "<a class='showDrillDownSubmittedByAnchor handy' link='"+_.escape(v.link)+"' id='"+v.metadata.id+"'>"+
- that.displayTextForLinkedTask(v)+"</a>" })
-
- if (this.task.get("children").length==0)
- this.$('.toggler-region.tasks-children').hide();
- },
- setUpPolling: function() {
- var that = this
-
- // on first load, clear any funny cursor
- this.$el.css('cursor', 'auto')
-
- this.task.url = this.taskLink;
- this.task.on("all", this.renderTask, this)
-
- ViewUtils.get(this, this.taskLink, function(data) {
- // if we can get the data, then start fetching certain things repeatedly
- // (would be good to skip the immediate "doitnow" below but not a big deal)
- ViewUtils.fetchRepeatedlyWithDelay(that, that.task, { doitnow: true });
-
- // and set up to load children (now that the task is guaranteed to be loaded)
- that.children = new TaskSummary.Collection()
- that.children.url = that.task.get("links").children
- that.children.on("reset", that.renderChildren, that)
- ViewUtils.fetchRepeatedlyWithDelay(that, that.children, {
- fetchOptions: { reset: true }, doitnow: true, fadeTarget: that.$('.tasks-children') });
- }).fail( function() { that.$('.toggler-region.tasks-children').hide() } );
-
-
- $.get(this.task.get("links").entity, function(entity) {
- if (that.collection==null || entity.links.activities != that.collection.url) {
- // need to rewire collection to point to the right ExecutionContext
- that.collection = new TaskSummary.Collection()
- that.collection.url = entity.links.activities
- that.collection.on("reset", that.renderSubtasks, that)
- ViewUtils.fetchRepeatedlyWithDelay(that, that.collection, {
- fetchOptions: { reset: true }, doitnow: true, fadeTarget: that.$('.tasks-submitted') });
- } else {
- that.collection.on("reset", that.renderSubtasks, that)
- that.collection.fetch({reset: true});
- }
- });
- },
-
- renderChildren: function() {
- var that = this
- var children = this.children
- ViewUtils.updateMyDataTable(this.childrenTable, children, function(task, index) {
- return [ task.get("id"),
- (task.get("entityId") && task.get("entityId")!=that.task.get("entityId") ? task.get("entityDisplayName") + ": " : "") +
- task.get("displayName"),
- task.get("submitTimeUtc") <= 0 ? "-" : moment(task.get("submitTimeUtc")).calendar(),
- task.get("currentStatus")
- ];
- });
- if (children && children.length>0) {
- this.$('.toggler-region.tasks-children').show();
- } else {
- this.$('.toggler-region.tasks-children').hide();
- }
- },
- renderSubtasks: function() {
- var that = this
- var taskId = this.taskId || (this.task ? this.task.id : null);
- if (!this.collection) {
- this.$('.toggler-region.tasks-submitted').hide();
- return;
- }
- if (!taskId) {
- // task not available yet; just wait for it to be loaded
- // (and in worst case, if it can't be loaded, this panel stays faded)
- return;
- }
-
- // find tasks submitted by this one which aren't included as children
- // this uses collections -- which is everything in the current execution context
- var subtasks = []
- for (var taskI in this.collection.models) {
- var task = this.collection.models[taskI]
- var submittedBy = task.get("submittedByTask")
- if (submittedBy!=null && submittedBy.metadata!=null && submittedBy.metadata["id"] == taskId &&
- (!this.children || this.children.get(task.id)==null)) {
- subtasks.push(task)
- }
- }
- ViewUtils.updateMyDataTable(this.subtasksTable, subtasks, function(task, index) {
- return [ task.get("id"),
- (task.get("entityId") && (!that.task || task.get("entityId")!=that.task.get("entityId")) ? task.get("entityDisplayName") + ": " : "") +
- task.get("displayName"),
- task.get("submitTimeUtc") <= 0 ? "-" : moment(task.get("submitTimeUtc")).calendar(),
- task.get("currentStatus")
- ];
- });
- if (subtasks && subtasks.length>0) {
- this.$('.toggler-region.tasks-submitted').show();
- } else {
- this.$('.toggler-region.tasks-submitted').hide();
- }
- },
-
- displayTextForLinkedTask: function(v) {
- return v.metadata.taskName ?
- (v.metadata.entityDisplayName ? _.escape(v.metadata.entityDisplayName)+" <b>"+_.escape(v.metadata.taskName)+"</b>" :
- _.escape(v.metadata.taskName)) :
- v.metadata.taskId ? _.escape(v.metadata.taskId) :
- _.escape(v.link)
- },
- updateField: function(field) {
- return this.updateFieldWith(field, _.escape)
- },
- updateFields: function() {
- _.map(arguments, this.updateField, this);
- },
- updateFieldWith: function(field, f) {
- var v = this.task.get(field)
- if (v !== undefined && v != null &&
- (typeof v !== "object" || _.size(v) > 0)) {
- this.$('.updateField-'+field, this.$el).html( f(v) );
- this.$('.ifField-'+field, this.$el).show();
- } else {
- // blank if there is no value
- this.$('.updateField-'+field).empty();
- this.$('.ifField-'+field).hide();
- }
- return v
- },
- childrenRowClick:function(evt) {
- var row = $(evt.currentTarget).closest("tr");
- var id = row.attr("id");
- this.showDrillDownTask("subtask of", this.children.get(id).get("links").self, id, this.children.get(id))
- },
- submittedRowClick:function(evt) {
- var row = $(evt.currentTarget).closest("tr");
- var id = row.attr("id");
- // submitted tasks are guaranteed to be in the collection, so this is safe
- this.showDrillDownTask("subtask of", this.collection.get(id).get('links').self, id)
- },
-
- showDrillDownSubmittedByAnchor: function(from) {
- var $a = $(from.target).closest('a');
- this.showDrillDownTask("submitter of", $a.attr("link"), $a.attr("id"))
- },
- showDrillDownBlockerOfAnchor: function(from) {
- var $a = $(from.target).closest('a');
- this.showDrillDownTask("blocker of", $a.attr("link"), $a.attr("id"))
- },
- showDrillDownTask: function(relation, newTaskLink, newTaskId, newTask) {
-// log("activities deeper drill down - "+newTaskId +" / "+newTaskLink)
- var that = this;
-
- var newBreadcrumbs = [ relation + ' ' +
- this.task.get('entityDisplayName') + ' ' +
- this.task.get('displayName') ].concat(this.breadcrumbs)
-
- var activityDetailsPanel = new ActivityDetailsView({
- taskLink: newTaskLink,
- taskId: newTaskId,
- task: newTask,
- tabView: that.tabView,
- collection: this.collection,
- breadcrumbs: newBreadcrumbs
- });
- activityDetailsPanel.addToView(this.$el);
- },
- addToView: function(parent) {
- if (this.parent) {
- log("WARN: adding details to view when already added")
- this.parent = parent;
- }
-
- if (Backbone.history && (!this.tabView || !this.tabView.openingQueuedTasks)) {
- Backbone.history.navigate(Backbone.history.fragment+"/"+"subtask"+"/"+this.taskId);
- }
-
- var $t = parent.closest('.slide-panel');
- var $t2 = $t.after('<div>').next();
- $t2.addClass('slide-panel');
-
- // load the drill-down page
- $t2.html(this.render().el)
-
- var speed = (!this.tabView || !this.tabView.openingQueuedTasks) ? 300 : 0;
- $t.animate({
- left: -600
- }, speed, function() {
- $t.hide()
- });
-
- $t2.show().css({
- left: 600
- , top: 0
- }).animate({
- left: 0
- }, speed);
- },
- backDrillDown: function(event) {
-// log("activities drill back from "+this.taskLink)
- var that = this
- var $t2 = this.$el.closest('.slide-panel')
- var $t = $t2.prev()
-
- if (Backbone.history) {
- var fragment = Backbone.history.fragment
- var thisLoc = fragment.indexOf("/subtask/"+this.taskId);
- if (thisLoc>=0)
- Backbone.history.navigate( fragment.substring(0, thisLoc) );
- }
-
- $t2.animate({
- left: 569 //prevTable.width()
- }, 300, function() {
- that.$el.empty()
- $t2.remove()
- that.remove()
- });
-
- $t.show().css({
- left: -600 //-($t2.width())
- }).animate({
- left: 0
- }, 300);
- }
- });
-
- return ActivityDetailsView;
-});
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/18b073a9/brooklyn-ui/src/main/webapp/assets/js/view/add-child-invoke.js
----------------------------------------------------------------------
diff --git a/brooklyn-ui/src/main/webapp/assets/js/view/add-child-invoke.js b/brooklyn-ui/src/main/webapp/assets/js/view/add-child-invoke.js
deleted file mode 100644
index 1105afe..0000000
--- a/brooklyn-ui/src/main/webapp/assets/js/view/add-child-invoke.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-/**
- * Render as a modal
- */
-define([
- "underscore", "jquery", "backbone", "brooklyn", "brooklyn-utils", "view/viewutils",
- "text!tpl/apps/add-child-modal.html"
-], function(_, $, Backbone, Brooklyn, Util, ViewUtils,
- AddChildModalHtml) {
- return Backbone.View.extend({
- template: _.template(AddChildModalHtml),
- initialize: function() {
- this.title = "Add Child to "+this.options.entity.get('name');
- },
- render: function() {
- this.$el.html(this.template(this.options.entity.attributes));
- return this;
- },
- onSubmit: function (event) {
- var self = this;
- var childSpec = this.$("#child-spec").val();
- var start = this.$("#child-autostart").is(":checked");
- var url = this.options.entity.get('links').children + (!start ? "?start=false" : "");
- var ajax = $.ajax({
- type: "POST",
- url: url,
- data: childSpec,
- contentType: "application/yaml",
- success: function() {
- self.options.target.reload();
- },
- error: function(response) {
- self.showError(Util.extractError(response, "Error contacting server", url));
- }
- });
- return ajax;
- },
- showError: function (message) {
- this.$(".child-add-error-container").removeClass("hide");
- this.$(".child-add-error-message").html(message);
- }
-
- });
-});