diff --git a/index.js b/index.js
index ce0149f..a23f4ea 100644
--- a/index.js
+++ b/index.js
@@ -29,6 +29,7 @@ let bodyParser = require('body-parser');
let morgan = require('morgan');
let TaskManager = require('./libs/taskManager');
let Task = require('./libs/Task');
+let odmOptionsParser = require('./libs/odmOptionsParser');
app.use(morgan('tiny'));
app.use(bodyParser.urlencoded({extended: true}));
@@ -137,6 +138,13 @@ app.post('/task/restart', uuidCheck, (req, res) => {
taskManager.restart(req.body.uuid, successHandler(res));
});
+app.get('/getOptions', (req, res) => {
+ odmOptionsParser.getOptions((err, options) => {
+ if (err) res.json({error: err.message});
+ else res.json(options);
+ });
+});
+
let gracefulShutdown = done => {
async.series([
cb => { taskManager.dumpTaskList(cb) },
@@ -158,7 +166,7 @@ process.on ('SIGINT', gracefulShutdown);
// Startup
let taskManager;
let server;
-/*
+
async.series([
cb => { taskManager = new TaskManager(cb); },
cb => { server = app.listen(3000, err => {
@@ -168,6 +176,4 @@ async.series([
}
], err => {
if (err) console.log("Error during startup: " + err.message);
-});*/
-let odmOptionsParser = require('./libs/odmOptionsParser');
-odmOptionsParser.getOptions(function(){});
+});
diff --git a/libs/odmOptionsParser.js b/libs/odmOptionsParser.js
index 8329db9..8066cfa 100644
--- a/libs/odmOptionsParser.js
+++ b/libs/odmOptionsParser.js
@@ -18,57 +18,69 @@ along with this program. If not, see .
"use strict";
let odmRunner = require('./odmRunner');
+let options = null;
+
module.exports = {
getOptions: function(done){
+ if (options){
+ done(null, options);
+ return;
+ }
+
odmRunner.getJsonOptions((err, json) => {
if (err) done(err);
else{
+ options = {};
for (let option in json){
- if (option === "-h") continue;
+ if (["-h", "--project-path", "--zip-results"].indexOf(option) !== -1) continue;
+
let values = json[option];
+ option = option.replace(/^--/, "");
let type = "";
- let defaultValue = "";
+ let value = "";
let help = values.help || "";
- let range = values.metavar.replace(/[<>]/g, "").trim();
+ let domain = values.metavar !== undefined ?
+ values.metavar.replace(/^[<>]/g, "")
+ .replace(/[<>]$/g, "")
+ .trim() :
+ "";
- switch(values.type.trim()){
+ switch((values.type || "").trim()){
case "":
type = "int";
- defaultValue = values['default'] !== undefined ?
+ value = values['default'] !== undefined ?
parseInt(values['default']) :
0;
break;
case "":
type = "float";
- defaultValue = values['default'] !== undefined ?
+ value = values['default'] !== undefined ?
parseFloat(values['default']) :
0.0;
break;
default:
type = "string";
- defaultValue = values['default'].trim();
+ value = values['default'] !== undefined ?
+ values['default'].trim() :
+ "";
}
if (values['default'] === "True"){
type = "bool";
- defaultValue = true;
+ value = true;
}else if (values['default'] === "False"){
type = "bool";
- defaultValue = false;
+ value = false;
}
+ help = help.replace(/\%\(default\)s/g, value);
-
- let result = {
- type, defaultValue, range, help
+ options[option] = {
+ type, value, domain, help
};
-
- console.log(values);
- console.log(result);
- console.log('-----');
}
- done();
+ done(null, options);
}
});
}
diff --git a/public/css/main.css b/public/css/main.css
index 8b5d502..64b802a 100644
--- a/public/css/main.css
+++ b/public/css/main.css
@@ -55,4 +55,8 @@
height: 200px;
font-family: monospace;
font-size: 90%;
+}
+
+.selectric-items li{
+ background: #fff;
}
\ No newline at end of file
diff --git a/public/css/selectric.css b/public/css/selectric.css
new file mode 100644
index 0000000..8508f16
--- /dev/null
+++ b/public/css/selectric.css
@@ -0,0 +1,198 @@
+/*======================================
+ Selectric v1.10.1
+======================================*/
+
+.selectric-wrapper {
+ position: relative;
+ cursor: pointer;
+}
+
+.selectric-responsive {
+ width: 100%;
+}
+
+.selectric {
+ border: 1px solid #DDD;
+ background: #F8F8F8;
+ position: relative;
+}
+.selectric .label {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin: 0 38px 0 10px;
+ font-size: 12px;
+ line-height: 38px;
+ color: #444;
+ height: 38px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.selectric .button {
+ display: block;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 38px;
+ height: 38px;
+ color: #BBB;
+ text-align: center;
+ font: 0/0 a;
+ *font: 20px/38px Lucida Sans Unicode, Arial Unicode MS, Arial;
+}
+.selectric .button:after {
+ content: " ";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto;
+ width: 0;
+ height: 0;
+ border: 4px solid transparent;
+ border-top-color: #BBB;
+ border-bottom: none;
+}
+
+.selectric-focus .selectric {
+ border-color: #AAA;
+}
+
+.selectric-hover .selectric {
+ border-color: #C4C4C4;
+}
+.selectric-hover .selectric .button {
+ color: #A2A2A2;
+}
+.selectric-hover .selectric .button:after {
+ border-top-color: #A2A2A2;
+}
+
+.selectric-open {
+ z-index: 9999;
+}
+.selectric-open .selectric {
+ border-color: #C4C4C4;
+}
+.selectric-open .selectric-items {
+ display: block;
+}
+
+.selectric-disabled {
+ filter: alpha(opacity=50);
+ opacity: 0.5;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.selectric-hide-select {
+ position: relative;
+ overflow: hidden;
+ width: 0;
+ height: 0;
+}
+.selectric-hide-select select {
+ position: absolute;
+ left: -100%;
+ display: none;
+}
+
+.selectric-input {
+ position: absolute !important;
+ top: 0 !important;
+ left: 0 !important;
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ width: 1px !important;
+ height: 1px !important;
+ outline: none !important;
+ border: none !important;
+ *font: 0/0 a !important;
+ background: none !important;
+}
+
+.selectric-temp-show {
+ position: absolute !important;
+ visibility: hidden !important;
+ display: block !important;
+}
+
+/* Items box */
+.selectric-items {
+ display: none;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ background: #F8F8F8;
+ border: 1px solid #C4C4C4;
+ z-index: -1;
+ box-shadow: 0 0 10px -6px;
+}
+.selectric-items .selectric-scroll {
+ height: 100%;
+ overflow: auto;
+}
+.selectric-above .selectric-items {
+ top: auto;
+ bottom: 100%;
+}
+.selectric-items ul, .selectric-items li {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ font-size: 12px;
+ line-height: 20px;
+ min-height: 20px;
+}
+.selectric-items li {
+ display: block;
+ padding: 10px;
+ color: #666;
+ cursor: pointer;
+}
+.selectric-items li.selected {
+ background: #E0E0E0;
+ color: #444;
+}
+.selectric-items li:hover {
+ background: #D5D5D5;
+ color: #444;
+}
+.selectric-items .disabled {
+ filter: alpha(opacity=50);
+ opacity: 0.5;
+ cursor: default !important;
+ background: none !important;
+ color: #666 !important;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.selectric-items .selectric-group .selectric-group-label {
+ font-weight: bold;
+ padding-left: 10px;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background: none;
+ color: #444;
+}
+.selectric-items .selectric-group.disabled li {
+ filter: alpha(opacity=100);
+ opacity: 1;
+}
+.selectric-items .selectric-group li {
+ padding-left: 25px;
+}
diff --git a/public/index.html b/public/index.html
index 6b970e5..55e59c8 100644
--- a/public/index.html
+++ b/public/index.html
@@ -15,6 +15,7 @@
}
+
@@ -47,14 +48,18 @@
-
-
+
Current Tasks ()
No running tasks.
@@ -113,6 +118,8 @@
+
+