azkaban-uncached
Changes
src/web/js/azkaban.project.view.js 120(+0 -120)
src/web/js/azkaban.projectmodals.view.js 139(+139 -0)
Details
diff --git a/src/java/azkaban/webapp/servlet/velocity/permissionspage.vm b/src/java/azkaban/webapp/servlet/velocity/permissionspage.vm
index 58352bb..edd848d 100644
--- a/src/java/azkaban/webapp/servlet/velocity/permissionspage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/permissionspage.vm
@@ -22,6 +22,7 @@
#parse ("azkaban/webapp/servlet/velocity/javascript.vm")
<script type="text/javascript" src="${context}/js/azkaban.permission.view.js"></script>
+ <script type="text/javascript" src="${context}/js/azkaban.projectmodals.view.js"></script>
<script type="text/javascript">
var contextURL = "${context}";
var currentTime = ${currentTime};
@@ -63,12 +64,11 @@
</div>
</div>
- <div class="az-page-header">
- <div class="container">
- <h1><a href="${context}/manager?project=${project.name}">Project <small>$project.name</small></a></h1>
- <p>$project.description</p>
- </div>
- </div>
+ ## Page header.
+
+ #parse ("azkaban/webapp/servlet/velocity/projectpageheader.vm")
+
+ ## Page content.
<div class="container">
<div class="row">
@@ -356,6 +356,7 @@
</div>
</div>
+ #parse ("azkaban/webapp/servlet/velocity/projectmodals.vm")
#parse ("azkaban/webapp/servlet/velocity/invalidsessionmodal.vm")
#end
#parse ("azkaban/webapp/servlet/velocity/footer.vm")
diff --git a/src/java/azkaban/webapp/servlet/velocity/projectlogpage.vm b/src/java/azkaban/webapp/servlet/velocity/projectlogpage.vm
index 17d6f6b..3a36e85 100644
--- a/src/java/azkaban/webapp/servlet/velocity/projectlogpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/projectlogpage.vm
@@ -24,6 +24,7 @@
<script type="text/javascript" src="${context}/js/azkaban.date.utils.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.ajax.utils.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.projectlog.view.js"></script>
+ <script type="text/javascript" src="${context}/js/azkaban.projectmodals.view.js"></script>
<script type="text/javascript">
var contextURL = "${context}";
var currentTime = ${currentTime};
@@ -61,13 +62,8 @@
</div>
## Page header.
-
- <div class="az-page-header">
- <div class="container">
- <h1><a href="${context}/manager?project=${project.name}">Project <small>$project.name</small></a></h1>
- <p>$project.description</p>
- </div>
- </div>
+
+ #parse ("azkaban/webapp/servlet/velocity/projectpageheader.vm")
## Page content.
@@ -94,6 +90,7 @@
</div>
</div>
+ #parse ("azkaban/webapp/servlet/velocity/projectmodals.vm")
#end
#parse ("azkaban/webapp/servlet/velocity/footer.vm")
diff --git a/src/java/azkaban/webapp/servlet/velocity/projectmodals.vm b/src/java/azkaban/webapp/servlet/velocity/projectmodals.vm
new file mode 100644
index 0000000..1d22d58
--- /dev/null
+++ b/src/java/azkaban/webapp/servlet/velocity/projectmodals.vm
@@ -0,0 +1,71 @@
+#*
+ * Copyright 2012 LinkedIn Corp.
+ *
+ * Licensed 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.
+*#
+
+ ## Upload project modal
+
+ <div class="modal fade" id="upload-project-modal">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <form id="upload-project-form" enctype="multipart/form-data" method="post" action="$!context/manager">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
+ <h4 class="modal-title">Upload Project Files</h4>
+ </div>
+ <div class="modal-body">
+ <div class="alert alert-danger" id="upload-project-modal-error-msg">$error_msg</div>
+ <fieldset class="form-horizontal">
+ <div class="form-group">
+ <label for="path" class="col-sm-2 control-label">Job Archive</label>
+ <div class="col-sm-10">
+ <input type="file" class="form-control" id="file" name="file">
+ </div>
+ </div>
+ </fieldset>
+ </div>
+ <div class="modal-footer">
+ <input type="hidden" name="project" value="$project.name">
+ <input type="hidden" name="action" value="upload">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+ <button type="button" class="btn btn-primary" id="upload-project-btn">Upload</button>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+
+ ## Delete project modal.
+
+ <div class="modal fade" id="delete-project-modal">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
+ <h4 class="modal-title">Delete Project</h4>
+ </div>
+ <div class="modal-body">
+ <p><strong>Warning:</strong> This project will be deleted and may not be recoverable.</p>
+ </div>
+ <div class="modal-footer">
+ <form id="delete-form">
+ <input type="hidden" name="project" value="$project.name">
+ <input type="hidden" name="delete" value="true">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+ <button type="button" class="btn btn-danger" id="delete-btn">Delete Project</button>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
diff --git a/src/java/azkaban/webapp/servlet/velocity/projectpage.vm b/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
index 0b971be..e09811d 100644
--- a/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
@@ -27,6 +27,7 @@
<script type="text/javascript" src="${context}/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.ajax.utils.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.project.view.js"></script>
+ <script type="text/javascript" src="${context}/js/azkaban.projectmodals.view.js"></script>
<script type="text/javascript">
var contextURL = "${context}";
var currentTime = ${currentTime};
@@ -71,63 +72,47 @@
</div>
## Page header.
-
- <div class="az-page-header">
- <div class="container">
- <h1><a href="${context}/manager?project=${project.name}">Project <small>$project.name</small></a></h1>
- <p>$project.description</p>
- </div>
- </div>
+
+ #parse ("azkaban/webapp/servlet/velocity/projectpageheader.vm")
## Page content.
<div class="container">
<div class="row">
- <div class="col-lg-8">
+ <div class="col-lg-8" id="flow-tabs">
#set ($project_page = "flows")
#parse ("azkaban/webapp/servlet/velocity/projectnav.vm")
- <div class="panel panel-default" id="flow-tabs">
- <div class="panel-heading">
- <div class="pull-right" id="project-options">
- <button id="project-upload-btn" class="btn btn-xs btn-primary">
- <span class="glyphicon glyphicon-upload"></span> Upload
- </button>
- <button id="project-delete-btn" class="btn btn-xs btn-danger">
- <span class="glyphicon glyphicon-trash"></span> Delete Project
- </button>
- </div>
- Flows
- </div>
- <div class="panel-body">
-
+ <div id="flow-tabs">
#if ($flows)
#foreach ($flow in $flows)
- <div class="panel panel-info" flow="${flow.id}" project="${project.name}">
- <div class="panel-heading flow-expander" id="${flow.id}">
+ <div class="panel panel-info" flow="${flow.id}" project="${project.name}">
+ <div class="panel-heading flow-expander" id="${flow.id}">
#if (${exec})
- <div class="pull-right">
- <button type="button" class="btn btn-xs btn-primary execute-flow" flowId="${flow.id}">Execute Flow</button>
- <a href="${context}/manager?project=${project.name}&flow=${flow.id}#executions" class="btn btn-primary btn-xs">Executions</a>
- <a href="${context}/manager?project=${project.name}&flow=${flow.id}#summary" class="btn btn-primary btn-xs">Summary</a>
- </div>
+ <div class="pull-right">
+ <button type="button" class="btn btn-xs btn-primary execute-flow" flowId="${flow.id}">Execute Flow</button>
+ <a href="${context}/manager?project=${project.name}&flow=${flow.id}#executions" class="btn btn-primary btn-xs">Executions</a>
+ <a href="${context}/manager?project=${project.name}&flow=${flow.id}#summary" class="btn btn-primary btn-xs">Summary</a>
+ </div>
#end
- <a href="${context}/manager?project=${project.name}&flow=${flow.id}">${flow.id}</a>
- </div>
- <div id="${flow.id}-child" class="panel-collapse collapse">
- <table class="table">
- <tbody id="${flow.id}-tbody">
- </tbody>
- </table>
- </div>
- </div>
+ <a href="${context}/manager?project=${project.name}&flow=${flow.id}">${flow.id}</a>
+ </div>
+ <div id="${flow.id}-child" class="panel-collapse collapse">
+ <table class="table">
+ <tbody id="${flow.id}-tbody">
+ </tbody>
+ </table>
+ </div>
+ </div>
#end
#else
- <p>No flows uploaded to this project</p>
+ <div class="alert alert-info">
+ <h4>No Flows</h4>
+ <p>No flows have been uploaded to this project yet.</p>
+ </div>
#end
- </div>
- </div>
+ </div><!-- /#flow-tabs -->
</div><!-- /col-lg-8 -->
<div class="col-lg-4">
@@ -135,62 +120,7 @@
</div><!-- /col-lg-4 -->
</div><!-- /row -->
-## Upload project modal
-
- <div class="modal fade" id="upload-project-modal">
- <div class="modal-dialog">
- <div class="modal-content">
- <form id="upload-project-form" enctype="multipart/form-data" method="post" action="$!context/manager">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h4 class="modal-title">Upload Project Files</h4>
- </div>
- <div class="modal-body">
- <div class="alert alert-danger" id="upload-project-modal-error-msg">$error_msg</div>
- <fieldset class="form-horizontal">
- <div class="form-group">
- <label for="path" class="col-sm-2 control-label">Job Archive</label>
- <div class="col-sm-10">
- <input type="file" class="form-control" id="file" name="file">
- </div>
- </div>
- </fieldset>
- </div>
- <div class="modal-footer">
- <input type="hidden" name="project" value="$project.name">
- <input type="hidden" name="action" value="upload">
- <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
- <button type="button" class="btn btn-primary" id="upload-project-btn">Upload</button>
- </div>
- </form>
- </div>
- </div>
- </div>
-
- ## Delete project modal.
-
- <div class="modal fade" id="delete-project-modal">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h4 class="modal-title">Delete Project</h4>
- </div>
- <div class="modal-body">
- <p><strong>Warning:</strong> This project will be deleted and may not be recoverable.</p>
- </div>
- <div class="modal-footer">
- <form id="delete-form">
- <input type="hidden" name="project" value="$project.name">
- <input type="hidden" name="delete" value="true">
- <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
- <button type="button" class="btn btn-danger" id="delete-btn">Delete Project</button>
- </form>
- </div>
- </div>
- </div>
- </div>
-
+ #parse ("azkaban/webapp/servlet/velocity/projectmodals.vm")
#parse ("azkaban/webapp/servlet/velocity/invalidsessionmodal.vm")
#parse ("azkaban/webapp/servlet/velocity/flowexecutionpanel.vm")
#parse ("azkaban/webapp/servlet/velocity/messagedialog.vm")
diff --git a/src/java/azkaban/webapp/servlet/velocity/projectpageheader.vm b/src/java/azkaban/webapp/servlet/velocity/projectpageheader.vm
new file mode 100644
index 0000000..5fda594
--- /dev/null
+++ b/src/java/azkaban/webapp/servlet/velocity/projectpageheader.vm
@@ -0,0 +1,36 @@
+#*
+ * Copyright 2012 LinkedIn Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+*#
+
+ <div class="az-page-header">
+ <div class="container">
+ <div class="row">
+ <div class="col-lg-6">
+ <h1><a href="${context}/manager?project=${project.name}">Project <small>$project.name</small></a></h1>
+ <p>$project.description</p>
+ </div>
+ <div class="col-lg-6">
+ <div class="pull-right az-page-header-form" id="project-options">
+ <button id="project-delete-btn" class="btn btn-sm btn-danger">
+ <span class="glyphicon glyphicon-trash"></span> Delete Project
+ </button>
+ <button id="project-upload-btn" class="btn btn-sm btn-primary">
+ <span class="glyphicon glyphicon-upload"></span> Upload
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
src/web/js/azkaban.project.view.js 120(+0 -120)
diff --git a/src/web/js/azkaban.project.view.js b/src/web/js/azkaban.project.view.js
index a1b8f3d..6f04950 100644
--- a/src/web/js/azkaban.project.view.js
+++ b/src/web/js/azkaban.project.view.js
@@ -16,67 +16,6 @@
$.namespace('azkaban');
-var projectView;
-azkaban.ProjectView = Backbone.View.extend({
- events: {
- "click #project-upload-btn": "handleUploadProjectJob",
- "click #project-delete-btn": "handleDeleteProject"
- },
-
- initialize: function(settings) {
- },
-
- handleUploadProjectJob: function(evt) {
- console.log("click upload project");
- $('#upload-project-modal').modal();
- },
-
- handleDeleteProject: function(evt) {
- console.log("click delete project");
- $('#delete-project-modal').modal();
- },
-
- render: function() {
- }
-});
-
-var uploadProjectView;
-azkaban.UploadProjectView = Backbone.View.extend({
- events: {
- "click #upload-project-btn": "handleCreateProject"
- },
-
- initialize: function(settings) {
- console.log("Hide upload project modal error msg");
- $("#upload-project-modal-error-msg").hide();
- },
-
- handleCreateProject: function(evt) {
- console.log("Upload project button.");
- $("#upload-project-form").submit();
- },
-
- render: function() {
- }
-});
-
-var deleteProjectView;
-azkaban.DeleteProjectView = Backbone.View.extend({
- events: {
- "click #delete-btn": "handleDeleteProject"
- },
-
- initialize: function(settings) {
- },
-
- handleDeleteProject: function(evt) {
- $("#delete-form").submit();
- },
-
- render: function() {
- }
-});
-
var flowTableView;
azkaban.FlowTableView = Backbone.View.extend({
events : {
@@ -294,65 +233,6 @@ azkaban.FlowTableView = Backbone.View.extend({
}
});
-var projectSummary;
-azkaban.ProjectSummaryView = Backbone.View.extend({
- events: {
- "click #edit": "handleDescriptionEdit"
- },
-
- initialize: function(settings) {
- },
-
- handleDescriptionEdit: function(evt) {
- console.log("Edit description");
- var editText = $("#edit").text();
- var descriptionTD = $('#pdescription');
-
- if (editText != "Edit Description") {
- var requestURL = contextURL + "/manager";
- var newText = $("#descEdit").val();
-
- $.get(
- requestURL,
- {
- "project": projectName,
- "ajax":"changeDescription",
- "description":newText
- },
- function(data) {
- if (data.error) {
- alert(data.error);
- }
- },
- "json"
- );
-
- $(descriptionTD).remove("#descEdit");
- $(descriptionTD).text(newText);
- $("#edit").text("Edit Description");
- }
- else {
- var text = $(descriptionTD).text();
- var edit = document.createElement("textarea");
-
- $(edit).addClass("editTextArea");
- $(edit).attr("id", "descEdit");
- $(edit).val(text);
- $(descriptionTD).text("");
- $(descriptionTD).append(edit);
-
- $("#edit").text("Commit");
- }
- },
- render: function() {
- }
-});
-
$(function() {
- projectView = new azkaban.ProjectView({el:$('#project-options')});
- uploadView = new azkaban.UploadProjectView({el:$('#upload-project-modal')});
flowTableView = new azkaban.FlowTableView({el:$('#flow-tabs')});
- projectSummary = new azkaban.ProjectSummaryView({el:$('#project-summary')});
- deleteProjectView = new azkaban.DeleteProjectView({el: $('#delete-project-modal')});
- // Setting up the project tabs
});
src/web/js/azkaban.projectmodals.view.js 139(+139 -0)
diff --git a/src/web/js/azkaban.projectmodals.view.js b/src/web/js/azkaban.projectmodals.view.js
new file mode 100644
index 0000000..0362b8a
--- /dev/null
+++ b/src/web/js/azkaban.projectmodals.view.js
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2012 LinkedIn Corp.
+ *
+ * Licensed 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.
+ */
+
+$.namespace('azkaban');
+
+var projectView;
+azkaban.ProjectView = Backbone.View.extend({
+ events: {
+ "click #project-upload-btn": "handleUploadProjectJob",
+ "click #project-delete-btn": "handleDeleteProject"
+ },
+
+ initialize: function(settings) {
+ },
+
+ handleUploadProjectJob: function(evt) {
+ console.log("click upload project");
+ $('#upload-project-modal').modal();
+ },
+
+ handleDeleteProject: function(evt) {
+ console.log("click delete project");
+ $('#delete-project-modal').modal();
+ },
+
+ render: function() {
+ }
+});
+
+var uploadProjectView;
+azkaban.UploadProjectView = Backbone.View.extend({
+ events: {
+ "click #upload-project-btn": "handleCreateProject"
+ },
+
+ initialize: function(settings) {
+ console.log("Hide upload project modal error msg");
+ $("#upload-project-modal-error-msg").hide();
+ },
+
+ handleCreateProject: function(evt) {
+ console.log("Upload project button.");
+ $("#upload-project-form").submit();
+ },
+
+ render: function() {
+ }
+});
+
+var deleteProjectView;
+azkaban.DeleteProjectView = Backbone.View.extend({
+ events: {
+ "click #delete-btn": "handleDeleteProject"
+ },
+
+ initialize: function(settings) {
+ },
+
+ handleDeleteProject: function(evt) {
+ $("#delete-form").submit();
+ },
+
+ render: function() {
+ }
+});
+
+var projectSummary;
+azkaban.ProjectSummaryView = Backbone.View.extend({
+ events: {
+ "click #edit": "handleDescriptionEdit"
+ },
+
+ initialize: function(settings) {
+ },
+
+ handleDescriptionEdit: function(evt) {
+ console.log("Edit description");
+ var editText = $("#edit").text();
+ var descriptionTD = $('#pdescription');
+
+ if (editText != "Edit Description") {
+ var requestURL = contextURL + "/manager";
+ var newText = $("#descEdit").val();
+
+ $.get(
+ requestURL,
+ {
+ "project": projectName,
+ "ajax":"changeDescription",
+ "description":newText
+ },
+ function(data) {
+ if (data.error) {
+ alert(data.error);
+ }
+ },
+ "json"
+ );
+
+ $(descriptionTD).remove("#descEdit");
+ $(descriptionTD).text(newText);
+ $("#edit").text("Edit Description");
+ }
+ else {
+ var text = $(descriptionTD).text();
+ var edit = document.createElement("textarea");
+
+ $(edit).addClass("editTextArea");
+ $(edit).attr("id", "descEdit");
+ $(edit).val(text);
+ $(descriptionTD).text("");
+ $(descriptionTD).append(edit);
+
+ $("#edit").text("Commit");
+ }
+ },
+ render: function() {
+ }
+});
+
+$(function() {
+ projectView = new azkaban.ProjectView({el:$('#project-options')});
+ uploadView = new azkaban.UploadProjectView({el:$('#upload-project-modal')});
+ deleteProjectView = new azkaban.DeleteProjectView({el: $('#delete-project-modal')});
+ projectSummary = new azkaban.ProjectSummaryView({el:$('#project-summary')});
+});