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 = " "; - - }else if(msg[i].status == "Failed"){ - - status_col = " "; - - }else if(msg[i].status == "Running"){ - - status_col = " "; - - }else{ - - status_col = " "; - - } + var status_col = this.getStatusCol(msg[i].id, msg[i].status); content += " "+ " "+ @@ -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 = { "
DoneFailedRunningUnknown
"+msg[i].id+"