implemented removal of required task
This commit is contained in:
@@ -164,7 +164,10 @@ public class Task implements Mappable {
|
||||
case NAME: name = json.getString(key); break;
|
||||
case NO_INDEX: noIndex = json.getBoolean(NO_INDEX); break;
|
||||
case PARENT_TASK_ID: parentTaskId = json.getLong(PARENT_TASK_ID); break;
|
||||
case REQUIRED_TASKS_IDS: requiredTasksIds.addAll(json.getJSONArray(REQUIRED_TASKS_IDS).toList().stream().map(entry -> Long.parseLong(entry.toString())).toList()); break;
|
||||
case REQUIRED_TASKS_IDS:
|
||||
requiredTasksIds.clear();
|
||||
requiredTasksIds.addAll(json.getJSONArray(REQUIRED_TASKS_IDS).toList().stream().map(entry -> Long.parseLong(entry.toString())).toList());
|
||||
break;
|
||||
case SHOW_CLOSED: showClosed = json.getBoolean(SHOW_CLOSED); break;
|
||||
case START_DATE: start = json.isNull(START_DATE) || json.getString(START_DATE).isBlank() ? null : LocalDate.parse(json.getString(START_DATE)); break;
|
||||
case STATUS: status = json.getInt(key); break;
|
||||
|
||||
@@ -22,20 +22,14 @@
|
||||
error = null;
|
||||
let newTask = await resp.json();
|
||||
if (newTask.project_id != task.project_id){
|
||||
alert('prject mismatch!');
|
||||
alert('project mismatch!');
|
||||
return;
|
||||
}
|
||||
task.required_tasks_ids.push(new_task_id);
|
||||
requiredTasks[new_task_id] = newTask;
|
||||
url = api(`task/${task.id}`);
|
||||
resp = await fetch(url,{
|
||||
credentials : 'include',
|
||||
method : 'PATCH',
|
||||
body : JSON.stringify({required_tasks_ids:task.required_tasks_ids})
|
||||
});
|
||||
await patch();
|
||||
delete candidates[new_task_id];
|
||||
}
|
||||
if (!resp.ok) {
|
||||
} else {
|
||||
error = await resp.text();
|
||||
}
|
||||
}
|
||||
@@ -90,6 +84,24 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
async function patch(){
|
||||
const url = api(`task/${task.id}`);
|
||||
const resp = await fetch(url,{
|
||||
credentials : 'include',
|
||||
method : 'PATCH',
|
||||
body : JSON.stringify({required_tasks_ids:task.required_tasks_ids})
|
||||
});
|
||||
if (!resp.ok){
|
||||
error = await resp.text();
|
||||
}
|
||||
}
|
||||
|
||||
async function unlink(required_task){
|
||||
task.required_tasks_ids = task.required_tasks_ids.filter(item => item != required_task.id);
|
||||
patch();
|
||||
delete requiredTasks[required_task.id];
|
||||
}
|
||||
|
||||
onMount(loadTasks);
|
||||
</script>
|
||||
|
||||
@@ -97,7 +109,7 @@
|
||||
<ul class="required task list">
|
||||
{#each Object.values(requiredTasks) as task}
|
||||
<li class="task" >
|
||||
<a href="/task/{task.id}/view" onclick={openTask} >{task.name}</a>
|
||||
<a href="/task/{task.id}/view" onclick={openTask} >{task.name}</a> <button onclick={() => unlink(task)} class="symbol"></button>
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
|
||||
@@ -316,9 +316,19 @@ CREATE TABLE IF NOT EXISTS {0} (
|
||||
task.clean(MEMBERS);
|
||||
}
|
||||
if (task.isDirty(REQUIRED_TASKS_IDS)) {
|
||||
var query = replaceInto(TABLE_TASK_DEPENDENCIES,TASK_ID,REQUIRED_TASK_ID);
|
||||
for (var reqId : task.requiredTasksIds()) query.values(task.id(),reqId);
|
||||
query.execute(db).close();
|
||||
var dropQuery = Query.delete().from(TABLE_TASK_DEPENDENCIES).where(TASK_ID,equal(task.id()));
|
||||
if (!task.requiredTasksIds().isEmpty()){
|
||||
dropQuery.where(REQUIRED_TASK_ID,notIn(task.requiredTasksIds().toArray()));
|
||||
db.setAutoCommit(false);
|
||||
}
|
||||
dropQuery.execute(db);
|
||||
if (!task.requiredTasksIds().isEmpty()) {
|
||||
var addQuery = replaceInto(TABLE_TASK_DEPENDENCIES, TASK_ID, REQUIRED_TASK_ID);
|
||||
for (var reqId : task.requiredTasksIds()) addQuery.values(task.id(), reqId);
|
||||
addQuery.execute(db).close();
|
||||
db.setAutoCommit(true);
|
||||
}
|
||||
|
||||
task.clean(REQUIRED_TASKS_IDS);
|
||||
}
|
||||
if (task.isDirty()) {
|
||||
|
||||
Reference in New Issue
Block a user