support for reimporting executions
This commit is contained in:
parent
81524de799
commit
b06f29312f
|
@ -64,14 +64,22 @@ class CCPExecutionHistory extends HTMLElement {
|
||||||
line-height: .6rem !important;
|
line-height: .6rem !important;
|
||||||
}
|
}
|
||||||
.ccp-toolbar-button svg {
|
.ccp-toolbar-button svg {
|
||||||
|
display: block;
|
||||||
fill: white;
|
fill: white;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
.ccp-toolbar-button-small svg {
|
||||||
|
width: 16px !important;
|
||||||
|
height: 16px !important;
|
||||||
|
}
|
||||||
|
.ccp-execution-list {
|
||||||
|
min-height: 3rem;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<template id="EXECUTIOM_LIST_TEMPLATE">
|
<template id="EXECUTIOM_LIST_TEMPLATE">
|
||||||
<ul name="ccp_execution_list" class="ccp-method-list list-group">
|
<ul name="ccp_execution_list" class="ccp-execution-list list-group border border-2">
|
||||||
<li class="ccp-method-item list-group-item list-group-item-dark">
|
<li class="ccp-method-item list-group-item list-group-item-dark">
|
||||||
<details name="level1">
|
<details name="level1">
|
||||||
<summary class="ccp-method-item-header noselect">
|
<summary class="ccp-method-item-header noselect">
|
||||||
|
@ -87,23 +95,25 @@ class CCPExecutionHistory extends HTMLElement {
|
||||||
<summary>
|
<summary>
|
||||||
<span name="version" class="badge badge-primary"></span>
|
<span name="version" class="badge badge-primary"></span>
|
||||||
<span name="status" class="ml-1 badge"></span>
|
<span name="status" class="ml-1 badge"></span>
|
||||||
<button data-index="0" name="delete" title="Delete" class="btn btn-danger ccp-toolbar-button ccp-toolbar-button-small float-right m-1">
|
<div class="d-flex float-right" style="gap: 3px 5px; max-width: 40%; min-width:60px; flex-wrap:wrap;">
|
||||||
<svg viewBox="0 0 24 24">
|
<button data-index="0" name="zip" title="Download as zip archive" class="btn btn-primary ccp-toolbar-button ccp-toolbar-button-small">
|
||||||
<path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"></path>
|
<svg viewBox="0 0 48 48"><path d="M7 40q-1.15 0-2.075-.925Q4 38.15 4 37V11q0-1.15.925-2.075Q5.85 8 7 8h14l3 3h17q1.15 0 2.075.925Q44 12.85 44 14v23q0 1.15-.925 2.075Q42.15 40 41 40Zm25-3h9V14h-9v4.6h4.6v4.6H32v4.6h4.6v4.6H32ZM7 37h20.4v-4.6H32v-4.6h-4.6v-4.6H32v-4.6h-4.6V14h-4.65l-3-3H7v26Zm0-23v-3 26-23Z"/></svg>
|
||||||
</svg>
|
</button>
|
||||||
</button>
|
<button data-index="0" name="provo" title="Export to Prov-o document" class="btn btn-primary ccp-toolbar-button ccp-toolbar-button-small">
|
||||||
<button data-index="0" name="reexecute2" title="Level 2 re-execution" class="btn btn-info ccp-toolbar-button ccp-toolbar-button-small float-right m-1">
|
<svg viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M13 3H6v18h4v-6h3c3.31 0 6-2.69 6-6s-2.69-6-6-6zm.2 8H10V7h3.2c1.1 0 2 .9 2 2s-.9 2-2 2z"/></svg>
|
||||||
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24"><g><rect fill="none" height="24" width="24"/></g><g><path d="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M12,18.5c-3.31,0-6-2.69-6-6h2c0,2.21,1.79,4,4,4 s4-1.79,4-4c0-2.24-1.85-4.09-4.16-3.99l1.57,1.57L12,11.5l-4-4l4-4l1.41,1.41l-1.6,1.6C15.28,6.4,18,9.18,18,12.5 C18,15.81,15.31,18.5,12,18.5z"/></g></svg>
|
</button>
|
||||||
</button>
|
<button data-index="0" name="reexecute1" title="Level 1 re-execution" class="btn btn-info ccp-toolbar-button ccp-toolbar-button-small">
|
||||||
<button data-index="0" name="reexecute1" title="Level 1 re-execution" class="btn btn-info ccp-toolbar-button ccp-toolbar-button-small float-right m-1">
|
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24"><g><rect fill="none" height="24" width="24"/><rect fill="none" height="24" width="24"/><rect fill="none" height="24" width="24"/></g><g><g/><path d="M12,5V1L7,6l5,5V7c3.31,0,6,2.69,6,6s-2.69,6-6,6s-6-2.69-6-6H4c0,4.42,3.58,8,8,8s8-3.58,8-8S16.42,5,12,5z"/></g></svg>
|
||||||
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24"><g><rect fill="none" height="24" width="24"/><rect fill="none" height="24" width="24"/><rect fill="none" height="24" width="24"/></g><g><g/><path d="M12,5V1L7,6l5,5V7c3.31,0,6,2.69,6,6s-2.69,6-6,6s-6-2.69-6-6H4c0,4.42,3.58,8,8,8s8-3.58,8-8S16.42,5,12,5z"/></g></svg>
|
</button>
|
||||||
</button>
|
<button data-index="0" name="reexecute2" title="Level 2 re-execution" class="btn btn-info ccp-toolbar-button ccp-toolbar-button-small">
|
||||||
<button data-index="0" name="provo" title="Export to Prov-o document" class="btn btn-primary ccp-toolbar-button ccp-toolbar-button-small float-right m-1">
|
<svg enable-background="new 0 0 24 24" viewBox="0 0 24 24"><g><rect fill="none" height="24" width="24"/></g><g><path d="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M12,18.5c-3.31,0-6-2.69-6-6h2c0,2.21,1.79,4,4,4 s4-1.79,4-4c0-2.24-1.85-4.09-4.16-3.99l1.57,1.57L12,11.5l-4-4l4-4l1.41,1.41l-1.6,1.6C15.28,6.4,18,9.18,18,12.5 C18,15.81,15.31,18.5,12,18.5z"/></g></svg>
|
||||||
<svg viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M13 3H6v18h4v-6h3c3.31 0 6-2.69 6-6s-2.69-6-6-6zm.2 8H10V7h3.2c1.1 0 2 .9 2 2s-.9 2-2 2z"/></svg>
|
</button>
|
||||||
</button>
|
<button data-index="0" name="delete" title="Delete" class="btn btn-danger ccp-toolbar-button ccp-toolbar-button-small">
|
||||||
<button data-index="0" name="zip" title="Download as zip archive" class="btn btn-primary ccp-toolbar-button ccp-toolbar-button-small float-right m-1">
|
<svg viewBox="0 0 24 24">
|
||||||
<svg viewBox="0 0 48 48"><path d="M7 40q-1.15 0-2.075-.925Q4 38.15 4 37V11q0-1.15.925-2.075Q5.85 8 7 8h14l3 3h17q1.15 0 2.075.925Q44 12.85 44 14v23q0 1.15-.925 2.075Q42.15 40 41 40Zm25-3h9V14h-9v4.6h4.6v4.6H32v4.6h4.6v4.6H32ZM7 37h20.4v-4.6H32v-4.6h-4.6v-4.6H32v-4.6h-4.6V14h-4.65l-3-3H7v26Zm0-23v-3 26-23Z"/></svg>
|
<path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"></path>
|
||||||
</button>
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<p name="message" class="font-weight-light font-italic" style="margin-top:revert">
|
<p name="message" class="font-weight-light font-italic" style="margin-top:revert">
|
||||||
<span name="updated"></span>:
|
<span name="updated"></span>:
|
||||||
<span name="message" class="ml-1"></span>
|
<span name="message" class="ml-1"></span>
|
||||||
|
@ -138,7 +148,7 @@ class CCPExecutionHistory extends HTMLElement {
|
||||||
<input type="text" name="search" class="form-control" placeholder="Search"/>
|
<input type="text" name="search" class="form-control" placeholder="Search"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<ul name="ccp_execution_list" style="display:none"></ul>
|
<ul name="ccp_execution_list"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -267,7 +277,7 @@ class CCPExecutionHistory extends HTMLElement {
|
||||||
document.body.appendChild(tmplnk)
|
document.body.appendChild(tmplnk)
|
||||||
tmplnk.click()
|
tmplnk.click()
|
||||||
document.body.removeChild(tmplnk)
|
document.body.removeChild(tmplnk)
|
||||||
}).catch(err=>{ console.error(err)})
|
}).catch(err=>{ alert(err)})
|
||||||
}
|
}
|
||||||
|
|
||||||
reexecute(id,level){
|
reexecute(id,level){
|
||||||
|
@ -280,13 +290,50 @@ class CCPExecutionHistory extends HTMLElement {
|
||||||
}).then(data=>{
|
}).then(data=>{
|
||||||
console.log(data)
|
console.log(data)
|
||||||
this.refreshExecution(data.jobID)
|
this.refreshExecution(data.jobID)
|
||||||
}).catch(err=>{ console.error(err)})
|
}).catch(err=>{ alert(err)})
|
||||||
|
}
|
||||||
|
|
||||||
|
importExecutions(files){
|
||||||
|
if(files && files.length) {
|
||||||
|
let formdata = new FormData();
|
||||||
|
files.reduce((formdata, f)=>{
|
||||||
|
formdata.append("files[]", f)
|
||||||
|
return formdata
|
||||||
|
}, formdata)
|
||||||
|
this.#boot.secureFetch(`${this.#serviceurl}/executions`, { body: formdata, method : "POST"})
|
||||||
|
.then(reply=>{
|
||||||
|
if (reply.status !== 200) {
|
||||||
|
throw "Unable to import"
|
||||||
|
}else return reply.text()
|
||||||
|
}).then(data=>{
|
||||||
|
this.refreshExecutions()
|
||||||
|
}).catch(err=>{ alert(err) })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#execution_list_bss = {
|
#execution_list_bss = {
|
||||||
template : "#EXECUTIOM_LIST_TEMPLATE",
|
template : "#EXECUTIOM_LIST_TEMPLATE",
|
||||||
target : "ul[name=ccp_execution_list]",
|
target : "ul[name=ccp_execution_list]",
|
||||||
in : ()=>this,
|
in : ()=>this,
|
||||||
|
on_dragover : (ev)=>{
|
||||||
|
ev.preventDefault()
|
||||||
|
},
|
||||||
|
on_dragenter : (ev)=>{
|
||||||
|
ev.target.classList.toggle("border-info")
|
||||||
|
},
|
||||||
|
on_dragleave : (ev)=>{
|
||||||
|
ev.target.classList.toggle("border-info")
|
||||||
|
},
|
||||||
|
on_drop : (ev)=>{
|
||||||
|
if(ev.dataTransfer && ev.dataTransfer.files && ev.dataTransfer.files.length){
|
||||||
|
const files = Array.prototype.slice.call(ev.dataTransfer.files)
|
||||||
|
const zips = files.filter(f=>f.type === "application/zip")
|
||||||
|
if(confirm("Confirm import of execution files?")){
|
||||||
|
this.importExecutions(files)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ev.target.classList.toggle("border-info")
|
||||||
|
},
|
||||||
recurse:[
|
recurse:[
|
||||||
{
|
{
|
||||||
target : "li.ccp-method-item",
|
target : "li.ccp-method-item",
|
||||||
|
|
Loading…
Reference in New Issue