blob: 3a5ee0d8c73ac211e4c3ddfef10cff3c5a2b87cf [file] [log] [blame]
/*
* 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([
"underscore", "jquery", "backbone",
"view/viewutils",
"text!tpl/script/groovy.html",
"jquery-slideto",
"jquery-wiggle",
"jquery-ba-bbq",
"handlebars",
"bootstrap"
], function (_, $, Backbone, ViewUtils, GroovyHtml) {
var ScriptGroovyView = Backbone.View.extend({
tagName:"div",
events:{
"click #groovy-ui-container #submit":"submitScript",
"click #load-example":"loadExample"
},
className:"container container-fluid",
groovyTemplate:_.template(GroovyHtml),
initialize:function () {
this.reset();
},
reset: function() {
this.$el.html(_.template(GroovyHtml, {}))
$(".output", this.$el).hide()
$(".output .toggler-region", this.$el).hide()
ViewUtils.attachToggler(this.$el)
},
render:function (eventName) {
return this
},
loadExample: function() {
$(".input textarea").val(
'import static org.apache.brooklyn.core.entity.Entities.*\n'+
'\n'+
'println "Last result: "+last\n'+
'data.exampleRunCount = (data.exampleRunCount ?: 0) + 1\n'+
'println "Example run count: ${data.exampleRunCount}"\n'+
'\n'+
'println "Application count: ${mgmt.applications.size()}\\n"\n'+
'\n'+
'mgmt.applications.each { dumpInfo(it) }\n'+
'\n'+
'return mgmt.applications\n')
},
updateTextareaWithData: function($div, data, alwaysShow) {
ViewUtils.updateTextareaWithData($div, data, alwaysShow, 50, 350)
},
submitScript: function() {
var that = this;
var script = $("#groovy-ui-container #script").val()
$(".output .toggler-region", this.$el).hide()
$(".output .throbber", this.$el).show()
$(".output", this.$el).show()
that.updateTextareaWithData($(".output .result"), undefined, false, false);
that.updateTextareaWithData($(".output .error"), undefined, false, false);
that.updateTextareaWithData($(".output .stdout"), undefined, false, false);
that.updateTextareaWithData($(".output .stderr"), undefined, false, false);
$.ajax({
type:"POST",
url:"/v1/script/groovy",
data:script,
contentType:"application/text",
headers: { "Brooklyn-Allow-Non-Master-Access": true },
success:function (data) {
$(".output .throbber", that.$el).hide()
that.updateTextareaWithData($(".output .result"), data.result, true, true);
that.updateTextareaWithData($(".output .error"), data.problem, false, true);
that.updateTextareaWithData($(".output .stdout"), data.stdout, false, true);
that.updateTextareaWithData($(".output .stderr"), data.stderr, false, true);
},
error: function(data) {
$(".output .throbber", that.$el).hide()
$("#groovy-ui-container div.error").val("ERROR: "+data)
$(".output .error").show()
console.error("ERROR submitting groovy script")
console.debug(data)
}})
}
})
return ScriptGroovyView
})