@@ -9,7 +9,7 @@ class RequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): | |||
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) | |||
# RequestHandler, self).do_GET() | |||
httpd = BaseHTTPServer.HTTPServer(('0.0.0.0', 4443), RequestHandler) | |||
httpd = BaseHTTPServer.HTTPServer(('0.0.0.0', 4445), RequestHandler) | |||
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='/pstore/home/adaszews/workspace/arvados-workbench-advanced/backend/server.pem', server_side=True) | |||
httpd.serve_forever() | |||
@@ -73,9 +73,9 @@ class WBBrowseDialogCollectionContent extends Component { | |||
const numPages = Math.ceil(listing.length / itemsPerPage); | |||
const rows = listing.slice(page * itemsPerPage, | |||
(page + 1) * itemsPerPage).map(it => [ | |||
((it[0] === 'd' && selectWhat === 'directory') || | |||
(it[0] === 'f' && selectWhat === 'file')) ? | |||
makeSelectionCell(collectionUuid + collectionPath + '/' + it[1]) : | |||
((it[0] === 'd' && [].concat(selectWhat).indexOf('directory') !== -1) || | |||
(it[0] === 'f' && [].concat(selectWhat).indexOf('file') !== -1)) ? | |||
makeSelectionCell(collectionUuid + collectionPath + '/' + it[1] + (it[0] === 'd' ? '/' : '')) : | |||
null, | |||
it[0] === 'd' ? ( | |||
<a href="#" onclick={ e => { | |||
@@ -21,7 +21,7 @@ class WBBrowseDialogCollectionList extends Component { | |||
prepareRows(items) { | |||
const { navigate, selectWhat, makeSelectionCell } = this.props; | |||
return items.map(it => [ | |||
(selectWhat === 'directory' ? makeSelectionCell(it.uuid) : null), | |||
([].concat(selectWhat).indexOf('directory') !== -1 ? makeSelectionCell(it.uuid + '/') : null), | |||
( | |||
<a href="#" onclick={ e => { e.preventDefault(); | |||
navigate('/browse-dialog/content/' + it.uuid + '////'); } }>{ it.name }</a> | |||
@@ -21,7 +21,7 @@ class WBBrowseDialogProjectList extends Component { | |||
prepareRows(items) { | |||
const { navigate, selectWhat, makeSelectionCell } = this.props; | |||
return items.map(it => (selectWhat === 'owner' ? [ makeSelectionCell(it.uuid, 'project') ] : []).concat([ | |||
return items.map(it => ([].concat(selectWhat).indexOf('owner') !== -1 ? [ makeSelectionCell(it.uuid, 'project') ] : []).concat([ | |||
( | |||
<a href="#" onclick={ e => { | |||
e.preventDefault(); | |||
@@ -86,8 +86,8 @@ class WBBrowseDialogProjectList extends Component { | |||
render({ app, navigate, page, selectWhat }, { numPages, rows }) { | |||
return ( | |||
<div> | |||
<WBTable columns={ (selectWhat === 'owner' ? [''] : []).concat(['Name', 'UUID']) } | |||
headerClasses={ selectWhat === 'owner' ? ['col-sm-1', 'col-sm-4', 'col-sm-4'] : [] } | |||
<WBTable columns={ ([].concat(selectWhat).indexOf('owner') !== -1 ? [''] : []).concat(['Name', 'UUID']) } | |||
headerClasses={ [].concat(selectWhat).indexOf('owner') !== -1 ? ['col-sm-1', 'col-sm-4', 'col-sm-4'] : [] } | |||
rows={ rows } /> | |||
<WBPagination numPages={ numPages } activePage={ page } | |||
@@ -25,10 +25,10 @@ function encodeURIComponentIncludingDots(s) { | |||
function inputSpecInfo(inputSpec) { | |||
const isFile = (inputSpec.type === 'File' || inputSpec.type === 'File[]' || | |||
(inputSpec.type.type === 'array' && inputSpec.type.items === 'File')); | |||
(inputSpec.type.type === 'array' && [].concat(inputSpec.type.items).indexOf('File') !== -1)); | |||
const isDirectory = (inputSpec.type === 'Directory' || inputSpec.type === 'Directory[]' || | |||
(inputSpec.type.type === 'array' && inputSpec.type.items === 'Directory')); | |||
(inputSpec.type.type === 'array' && [].concat(inputSpec.type.items).indexOf('Directory') !== -1)); | |||
const isArray = (inputSpec.type === 'File[]' || inputSpec.type === 'Directory[]' || | |||
inputSpec.type.type === 'array'); | |||
@@ -36,11 +36,11 @@ function inputSpecInfo(inputSpec) { | |||
return { isFile, isDirectory, isArray }; | |||
} | |||
function uuidsToCwl(obj, isFile) { | |||
function uuidsToCwl(obj) { | |||
if (obj instanceof Array) { | |||
const res = {}; | |||
const res = []; | |||
for (let k in obj) { | |||
res[k] = uuidsToCwl(obj[k], isFile); | |||
res[k] = uuidsToCwl(obj[k]); | |||
} | |||
return res; | |||
} | |||
@@ -49,9 +49,11 @@ function uuidsToCwl(obj, isFile) { | |||
(/^[0-9a-z]{5}-[0-9a-z]{5}-[0-9a-z]{15}/.exec(obj) || | |||
/^[0-9a-f]{32}\+[0-9]+/.exec(obj))) { | |||
const isDirectory = obj.endsWith('/'); | |||
return { | |||
'class': (isFile ? 'File' : 'Directory'), | |||
'location': 'keep:' + obj | |||
'class': (isDirectory ? 'Directory' : 'File'), | |||
'location': 'keep:' + (isDirectory ? obj.substr(0, obj.length - 1) : obj) | |||
}; | |||
} | |||
@@ -66,8 +68,11 @@ function parseKeepRef(value) { | |||
class WBPathDisplay extends Component { | |||
fetchData() { | |||
const { app, path } = this.props; | |||
const { app } = this.props; | |||
const { arvHost, arvToken } = app.state; | |||
let { path } = this.props; | |||
if (path.endsWith('/')) | |||
path = path.substr(0, path.length - 1); | |||
let m; | |||
if (m = /^[0-9a-f]{32}\+[0-9]+/.exec(path)); | |||
else if (m = /^[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{15}/.exec(path)); | |||
@@ -157,7 +162,9 @@ class WBLaunchWorkflowPage extends Component { | |||
<button class="btn btn-outline-primary" | |||
onclick={ e => { | |||
e.preventDefault(); | |||
this.browseDialogRef.current.show(isFile ? 'file' : 'directory', isArray, | |||
this.browseDialogRef.current.show( | |||
[].concat(isFile ? 'file' : []).concat(isDirectory ? 'directory' : []), | |||
isArray, | |||
v => { | |||
this.state.inputs[inputSpec.id] = JSON.stringify(v); | |||
this.setState({}); | |||
@@ -212,8 +219,7 @@ class WBLaunchWorkflowPage extends Component { | |||
for (let k in this.state.inputs) { | |||
try { | |||
let val = jsyaml.safeLoad(this.state.inputs[k]); | |||
const { isFile } = inputSpecInfo(main.inputs.find(a => (a.id === k))); | |||
val = uuidsToCwl(val, isFile); | |||
val = uuidsToCwl(val); | |||
k = k.split('/').slice(1).join('/'); | |||
inputs[k] = (val === undefined ? null : val); | |||
} catch (exc) { | |||