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 NAME: name = json.getString(key); break;
|
||||||
case NO_INDEX: noIndex = json.getBoolean(NO_INDEX); break;
|
case NO_INDEX: noIndex = json.getBoolean(NO_INDEX); break;
|
||||||
case PARENT_TASK_ID: parentTaskId = json.getLong(PARENT_TASK_ID); 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 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 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;
|
case STATUS: status = json.getInt(key); break;
|
||||||
|
|||||||
@@ -22,20 +22,14 @@
|
|||||||
error = null;
|
error = null;
|
||||||
let newTask = await resp.json();
|
let newTask = await resp.json();
|
||||||
if (newTask.project_id != task.project_id){
|
if (newTask.project_id != task.project_id){
|
||||||
alert('prject mismatch!');
|
alert('project mismatch!');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
task.required_tasks_ids.push(new_task_id);
|
task.required_tasks_ids.push(new_task_id);
|
||||||
requiredTasks[new_task_id] = newTask;
|
requiredTasks[new_task_id] = newTask;
|
||||||
url = api(`task/${task.id}`);
|
await patch();
|
||||||
resp = await fetch(url,{
|
|
||||||
credentials : 'include',
|
|
||||||
method : 'PATCH',
|
|
||||||
body : JSON.stringify({required_tasks_ids:task.required_tasks_ids})
|
|
||||||
});
|
|
||||||
delete candidates[new_task_id];
|
delete candidates[new_task_id];
|
||||||
}
|
} else {
|
||||||
if (!resp.ok) {
|
|
||||||
error = await resp.text();
|
error = await resp.text();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,6 +84,24 @@
|
|||||||
return false;
|
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);
|
onMount(loadTasks);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -97,7 +109,7 @@
|
|||||||
<ul class="required task list">
|
<ul class="required task list">
|
||||||
{#each Object.values(requiredTasks) as task}
|
{#each Object.values(requiredTasks) as task}
|
||||||
<li class="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>
|
</li>
|
||||||
{/each}
|
{/each}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -316,9 +316,19 @@ CREATE TABLE IF NOT EXISTS {0} (
|
|||||||
task.clean(MEMBERS);
|
task.clean(MEMBERS);
|
||||||
}
|
}
|
||||||
if (task.isDirty(REQUIRED_TASKS_IDS)) {
|
if (task.isDirty(REQUIRED_TASKS_IDS)) {
|
||||||
var query = replaceInto(TABLE_TASK_DEPENDENCIES,TASK_ID,REQUIRED_TASK_ID);
|
var dropQuery = Query.delete().from(TABLE_TASK_DEPENDENCIES).where(TASK_ID,equal(task.id()));
|
||||||
for (var reqId : task.requiredTasksIds()) query.values(task.id(),reqId);
|
if (!task.requiredTasksIds().isEmpty()){
|
||||||
query.execute(db).close();
|
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);
|
task.clean(REQUIRED_TASKS_IDS);
|
||||||
}
|
}
|
||||||
if (task.isDirty()) {
|
if (task.isDirty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user