diff --git a/WebContent/WEB-INF/views/geoweaver.html b/WebContent/WEB-INF/views/geoweaver.html
index 1e874721e..beb80f327 100644
--- a/WebContent/WEB-INF/views/geoweaver.html
+++ b/WebContent/WEB-INF/views/geoweaver.html
@@ -31,6 +31,8 @@
+
+
@@ -39,6 +41,8 @@
+
+
diff --git a/WebContent/css/imageviewer.css b/WebContent/css/imageviewer.css
new file mode 100644
index 000000000..1ec21d6f3
--- /dev/null
+++ b/WebContent/css/imageviewer.css
@@ -0,0 +1,226 @@
+/*
+ ImageViewer v 1.1.0
+ Author: Sudhanshu Yadav
+ Copyright (c) 2015 to Sudhanshu Yadav - ignitersworld.com , released under the MIT license.
+ Demo on: http://ignitersworld.com/lab/imageViewer.html
+*/
+
+/***** image viewer css *****/
+#iv-container {
+ position: fixed;
+ background: #0d0d0d;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ display: none;
+ z-index: 1000;
+}
+
+.iv-container {
+ overflow: hidden;
+}
+
+.iv-close {
+ width: 32px;
+ height: 32px;
+ position: absolute;
+ right: 20px;
+ top: 20px;
+ cursor: pointer;
+ text-align: center;
+ overflow: hidden;
+ text-shadow: 0px 0px 3px #6d6d6d;
+ -webkit-transition: all ease 200ms;
+ -moz-transition: all ease 200ms;
+ -o-transition: all ease 200ms;
+ transition: all ease 200ms;
+}
+.iv-close:after,
+.iv-close:before {
+ content: "";
+ height: 4px;
+ width: 32px;
+ background: #FFF;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ margin-top: -2px;
+}
+.iv-close:before {
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+ transform: rotate(45deg);
+}
+.iv-close:after {
+ -webkit-transform: rotate(-45deg);
+ -moz-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ -o-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+}
+.iv-close:hover {
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+/***** snap view css *****/
+.iv-snap-view {
+ width: 150px;
+ height: 150px;
+ position: absolute;
+ top: 20px;
+ left: 20px;
+ border: 1px solid #666;
+ background: black;
+ z-index: 100;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-transition: all ease 400ms;
+ -moz-transition: all ease 400ms;
+ -o-transition: all ease 400ms;
+ transition: all ease 400ms;
+ opacity: 0;
+}
+
+.iv-snap-image-wrap {
+ display: inline-block;
+ position: absolute;
+ max-width: 150px;
+ max-height: 150px;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ -moz-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ -o-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ overflow: hidden;
+}
+
+.iv-snap-image {
+ position: relative;
+}
+
+.iv-snap-handle {
+ position: absolute;
+ border: 1px solid #ccc;
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ -webkit-box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
+ box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
+}
+
+/*** zoom slider ***/
+.iv-zoom-slider {
+ width: 100%;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border: 1px solid #666;
+ border-top: 0;
+ background: rgba(204, 204, 204, 0.1);
+ height: 15px;
+ position: absolute;
+ top: 150px;
+ left: -1px;
+}
+
+.iv-zoom-handle {
+ width: 20px;
+ height: 15px;
+ background: #ccc;
+ position: absolute;
+}
+
+/**** snap view css end *****/
+.iv-image-view {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+}
+
+.iv-image-wrap {
+ display: inline-block;
+}
+
+.iv-image-wrap:active {
+ cursor: move;
+}
+
+.iv-large-image {
+ max-width: 100%;
+ max-height: 100%;
+ position: absolute;
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+}
+
+/****** CSS loader by http://projects.lukehaas.me/css-loaders/ *****/
+.iv-loader {
+ top: 50%;
+ left: 50%;
+ border-radius: 50%;
+ width: 32px;
+ height: 32px;
+ z-index: 100;
+ margin-top: -16px;
+ margin-left: -16px;
+ font-size: 5px;
+ position: absolute;
+ text-indent: -9999em;
+ border-top: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-right: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-left: 1.1em solid #ffffff;
+ -webkit-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-animation: load8 1.1s infinite linear;
+ animation: load8 1.1s infinite linear;
+}
+.iv-loader:after {
+ width: 10em;
+ height: 10em;
+ border-radius: 50%;
+}
+@-webkit-keyframes load8 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@keyframes load8 {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+
+@media screen and (max-width: 767px) {
+ .iv-snap-view {
+ z-index: -1;
+ visibility: hidden;
+ }
+}
\ No newline at end of file
diff --git a/WebContent/css/iv-viewer.css b/WebContent/css/iv-viewer.css
new file mode 100644
index 000000000..b2b19efa2
--- /dev/null
+++ b/WebContent/css/iv-viewer.css
@@ -0,0 +1,184 @@
+.iv {
+ /***** snap view css *****/
+ /*** zoom slider ***/
+ /**** snap view css end *****/
+}
+.iv-container {
+ overflow: hidden;
+ position: relative;
+}
+.iv-fullscreen {
+ position: fixed;
+ background: #0d0d0d;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ display: none;
+ z-index: 1000;
+}
+.iv-fullscreen-container {
+ position: relative;
+ height: 100%;
+ width: 100%;
+}
+.iv-container {
+ overflow: hidden;
+ position: relative;
+}
+.iv-image-mode {
+ display: inline-block;
+}
+.iv-fullscreen-close {
+ position: absolute;
+ width: 24px;
+ height: 24px;
+ right: 10px;
+ top: 10px;
+ padding: 10px;
+ cursor: pointer;
+ text-align: center;
+ overflow: hidden;
+ text-shadow: 0px 0px 3px #6d6d6d;
+ transition: all ease 200ms;
+}
+.iv-fullscreen-close:after, .iv-fullscreen-close:before {
+ content: "";
+ height: 4px;
+ width: 24px;
+ background: #FFF;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+.iv-fullscreen-close:before {
+ transform: translate(-50%, -50%) rotate(45deg);
+}
+.iv-fullscreen-close:after {
+ transform: translate(-50%, -50%) rotate(-45deg);
+}
+.iv-fullscreen-close:hover {
+ transform: rotate(90deg);
+ transform-origin: 50% 50%;
+}
+.iv-snap-view {
+ width: 150px;
+ height: 150px;
+ position: absolute;
+ top: 20px;
+ left: 20px;
+ border: 1px solid #aaa;
+ background: black;
+ z-index: 100;
+ box-sizing: content-box;
+ transition: opacity ease 400ms;
+ opacity: 0;
+}
+.iv-snap-image-wrap {
+ display: inline-block;
+ position: absolute;
+ max-width: 150px;
+ max-height: 150px;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ overflow: hidden;
+}
+.iv-snap-image {
+ position: relative;
+ -ms-touch-action: none;
+ touch-action: none;
+}
+.iv-snap-handle {
+ box-sizing: border-box;
+ position: absolute;
+ border: 1px solid white;
+ transform: translate3d(0, 0, 0);
+ box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
+ cursor: pointer;
+ cursor: grab;
+}
+.iv-snap-handle:active {
+ cursor: grabbing;
+}
+.iv-zoom-slider {
+ width: 100%;
+ box-sizing: content-box;
+ border: 1px solid #aaa;
+ border-top: 0;
+ background: rgba(0, 0, 0, 0.3);
+ height: 15px;
+ position: absolute;
+ top: 150px;
+ left: -1px;
+}
+.iv-zoom-handle {
+ width: 20px;
+ height: 15px;
+ background: white;
+ position: absolute;
+ cursor: pointer;
+ cursor: grab;
+}
+.iv-zoom-handle:active {
+ cursor: grabbing;
+}
+.iv-image-view {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ top: 0;
+ left: 0;
+}
+.iv-image-wrap {
+ display: inline-block;
+}
+.iv-image-wrap:active {
+ cursor: move;
+}
+.iv-image {
+ max-width: 100%;
+ max-height: 100%;
+ position: absolute;
+ -ms-touch-action: none;
+ touch-action: none;
+ transform: translate3d(0, 0, 0);
+}
+.iv-loader {
+ top: 50%;
+ left: 50%;
+ border-radius: 50%;
+ width: 32px;
+ height: 32px;
+ z-index: 100;
+ margin-top: -16px;
+ margin-left: -16px;
+ font-size: 5px;
+ position: absolute;
+ text-indent: -9999em;
+ border: 1.1em solid rgba(255, 255, 255, 0.2);
+ border-left: 1.1em solid #ffffff;
+ transform: translateZ(0);
+ animation: loading-icon 1.1s infinite linear;
+}
+.iv-loader:after {
+ width: 10em;
+ height: 10em;
+ border-radius: 50%;
+}
+@keyframes loading-icon {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@media screen and (max-width: 767px) {
+ .iv-snap-view {
+ z-index: -1;
+ visibility: hidden;
+ }
+}
\ No newline at end of file
diff --git a/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.js b/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.js
index 40ec8d2b5..58024ed69 100644
--- a/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.js
+++ b/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.js
@@ -18,7 +18,7 @@ edu = {
sponsor: "ESIPLab incubator project",
- version: "0.7.6",
+ version: "0.7.7",
author: "Ziheng Sun",
diff --git a/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.monitor.js b/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.monitor.js
index dff43eed3..3d434d12c 100644
--- a/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.monitor.js
+++ b/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.monitor.js
@@ -158,17 +158,22 @@ edu.gmu.csiss.geoweaver.monitor = {
openWorkspaceIndicator: function(){
- $("#current_workflow_name").html("Current workflow : " + edu.gmu.csiss.geoweaver.workflow.loaded_workflow);
-
- $("#current_workflow_name").removeClass("invisible");
-
- $("#current_workflow_name").addClass("visible");
-
- $("#running_spinner").removeClass("invisible");
-
- $("#running_spinner").addClass("visible");
+ if(edu.gmu.csiss.geoweaver.workflow.loaded_workflow != null){
+
+ $("#current_workflow_name").html("Current workflow : " + edu.gmu.csiss.geoweaver.workflow.loaded_workflow);
+
+ $("#current_workflow_name").removeClass("invisible");
+
+ $("#current_workflow_name").addClass("visible");
+
+ $("#running_spinner").removeClass("invisible");
+
+ $("#running_spinner").addClass("visible");
+
+ console.log("workspace indicator is opened");
+
+ }
- console.log("workspace indicator is opened");
},
closeWorkspaceIndicator: function(){
diff --git a/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.process.js b/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.process.js
index 1b5e52c25..8bed00c0d 100644
--- a/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.process.js
+++ b/WebContent/geoweaver/js/edu.gmu.csiss.geoweaver.process.js
@@ -14,6 +14,8 @@ edu.gmu.csiss.geoweaver.process = {
current_pid: null,
+ envlist: {},
+
builtin_processes: [
{"operation":"ShowResultMap", "params":[{"name":"resultfile", "min_occurs": 1, "max_occurs": 1}]}, //multiple occurs are something for later
@@ -225,7 +227,17 @@ edu.gmu.csiss.geoweaver.process = {
edu.gmu.csiss.geoweaver.process.editor = CodeMirror.fromTextArea(document.getElementById("codeeditor"), {
lineNumbers: true,
- lineWrapping: true
+
+ lineWrapping: true,
+
+ extraKeys: {
+
+ "Ctrl-S": function(instance) {
+
+ edu.gmu.csiss.geoweaver.process.update(edu.gmu.csiss.geoweaver.process.current_pid);
+
+ }
+ }
});
@@ -366,7 +378,7 @@ edu.gmu.csiss.geoweaver.process = {
title: "Add new process",
-// closable: false,
+ closable: false,
message: content,
@@ -478,21 +490,22 @@ edu.gmu.csiss.geoweaver.process = {
" "+
" "+
"
";
-
for(var i=0;iPending ";
-
- if(msg[i].end_time!=null && msg[i].end_time != msg[i].begin_time){
-
- status_col = " Done | ";
-
- }else if(msg[i].end_time == msg[i].begin_time && msg[i].output != null){
-
- status_col = " Failed | ";
-
- }
+// var status_col = " Pending | ";
+//
+// if(msg[i].end_time!=null && msg[i].end_time != msg[i].begin_time){
+//
+// status_col = " Done | ";
+//
+// }else if(msg[i].end_time == msg[i].begin_time && msg[i].output != null){
+//
+// status_col = " Failed | ";
+//
+// }
+
+ var status_col = edu.gmu.csiss.geoweaver.process.getStatusCol(msg[i].id, msg[i].status);
content += " "+
" "+msg[i].name+" | "+
@@ -509,6 +522,8 @@ edu.gmu.csiss.geoweaver.process = {
title: "History",
+ closable: false,
+
message: content,
buttons: [{
@@ -533,6 +548,32 @@ edu.gmu.csiss.geoweaver.process = {
},
+ getStatusCol: function(hid, status){
+
+ var status_col = " Pending | ";
+
+ if(status == "Done"){
+
+ status_col = " Done | ";
+
+ }else if(status == "Failed"){
+
+ status_col = " Failed | ";
+
+ }else if(status == "Running"){
+
+ status_col = " Running | ";
+
+ }else{
+
+ status_col = " Unknown | ";
+
+ }
+
+ return status_col;
+
+ },
+
getTable: function(msg){
// var content = " "+
@@ -591,25 +632,7 @@ edu.gmu.csiss.geoweaver.process = {
for(var i=0;iPending ";
-
- if(msg[i].status == "Done"){
-
- status_col = " Done | ";
-
- }else if(msg[i].status == "Failed"){
-
- status_col = " Failed | ";
-
- }else if(msg[i].status == "Running"){
-
- status_col = " Running | ";
-
- }else{
-
- status_col = " Unknown | ";
-
- }
+ var status_col = this.getStatusCol(msg[i].id, msg[i].status);
content += " "+
" "+msg[i].id+" | "+
@@ -707,11 +730,15 @@ edu.gmu.csiss.geoweaver.process = {
console.log("stop process is called");
if(msg.ret=="stopped"){
-
+
$("#stopbtn_" + history_id).html("Stopped");
-
+
$("#stopbtn_" + history_id).prop("onclick", null).off("click");
-
+
+// Pending
+
+ $("#status_" + history_id).html("Stopped");
+
}else{
alert("Fail to stop.");
@@ -915,7 +942,7 @@ edu.gmu.csiss.geoweaver.process = {
title: "Edit process",
-// closable: false,
+ closable: false,
size: BootstrapDialog.SIZE_WIDE,
@@ -1344,6 +1371,8 @@ edu.gmu.csiss.geoweaver.process = {
"