fine-tuning kanban
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -152,14 +152,15 @@ public class Task implements Mappable {
|
||||
case DESCRIPTION: description = json.getString(key); break;
|
||||
case DUE_DATE: dueDate = json.isNull(DUE_DATE) || json.getString(DUE_DATE).isBlank() ? null : LocalDate.parse(json.getString(DUE_DATE)); break;
|
||||
case ESTIMATED_TIME: estimatedTime = json.isNull(ESTIMATED_TIME) ? null : json.getDouble(ESTIMATED_TIME); break;
|
||||
case MEMBERS: continue;
|
||||
case NAME: name = json.getString(key); break;
|
||||
case NO_INDEX: noIndex = json.getBoolean(NO_INDEX); 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.get(key) instanceof Number number ? Status.of(number.intValue()) : Status.valueOf(json.getString(key)); break;
|
||||
default: {
|
||||
key = null;
|
||||
LOG.log(WARNING,"Tried to patch field ''{0}'' of task, which is not implemented!",key);
|
||||
key = null;
|
||||
}
|
||||
}
|
||||
if (key != null) dirtyFields.add(key);
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
import { api } from '../../urls.svelte.js';
|
||||
import { t } from '../../translations.svelte.js';
|
||||
|
||||
import Card from './KanbanCard.svelte';
|
||||
|
||||
let { id } = $props();
|
||||
|
||||
let error = $state(null);
|
||||
@@ -146,7 +148,7 @@
|
||||
<span class="error">{error}</span>
|
||||
{/if}
|
||||
|
||||
<div class="grid" style="display: grid; grid-template-columns: {`repeat(${columns}, auto)`}">
|
||||
<div class="kanban" style="display: grid; grid-template-columns: {`repeat(${columns}, auto)`}">
|
||||
<div class="head">{t('user')}</div>
|
||||
{#if states}
|
||||
{#each Object.entries(states) as [sid,state]}
|
||||
@@ -159,7 +161,7 @@
|
||||
<div class={[state, highlight.user == user && highlight.state == state ? 'highlight':'']} ondragover={ev => hover(ev,user,state)} ondrop={ev => drop(user,state)} >
|
||||
{#if stateList[state]}
|
||||
{#each Object.values(stateList[state]).sort((a,b) => a.name.localeCompare(b.name)) as task}
|
||||
<div draggable="true" class="box" onclick={() => router.navigate(`/task/${task.id}/view`)} ondragstart={ev => dragged=task} >{task.name}</div>
|
||||
<Card onclick={() => router.navigate(`/task/${task.id}/view`)} ondragstart={ev => dragged=task} {task} />
|
||||
{/each}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
7
frontend/src/routes/project/KanbanCard.svelte
Normal file
7
frontend/src/routes/project/KanbanCard.svelte
Normal file
@@ -0,0 +1,7 @@
|
||||
<script>
|
||||
let { ondragstart, task } = $props();
|
||||
</script>
|
||||
|
||||
<div draggable="true" class="box" {ondragstart} >
|
||||
{task.name}
|
||||
</div>
|
||||
@@ -141,4 +141,27 @@ textarea{
|
||||
color: white;
|
||||
background: #333;
|
||||
font-weight: black;
|
||||
}
|
||||
}
|
||||
|
||||
.kanban .box,
|
||||
.kanban .head,
|
||||
.kanban .user{
|
||||
border-radius: 5px;
|
||||
margin: 2px;
|
||||
min-height: 50px;
|
||||
color: black;
|
||||
padding: 2px;
|
||||
}
|
||||
.kanban .box{
|
||||
background: orange;
|
||||
}
|
||||
.kanban .head,
|
||||
.kanban .user{
|
||||
background: black;
|
||||
border: 1px solid orange;
|
||||
color: orange;
|
||||
text-align: center;
|
||||
}
|
||||
.kanban .highlight{
|
||||
background: #4b3000;
|
||||
}
|
||||
Reference in New Issue
Block a user