Merge branch 'main' into module/stock
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
href = '#',
|
href = '#',
|
||||||
onclick = evt => { evt.preventDefault(); startEdit(); return false },
|
onclick = evt => { evt.preventDefault(); startEdit(); return false },
|
||||||
onSet = newVal => {return true;},
|
onSet = newVal => {return true;},
|
||||||
title = t('long_click_to_edit'),
|
title = t('click_to_edit'),
|
||||||
type = 'div',
|
type = 'div',
|
||||||
value = $bindable(null)
|
value = $bindable(null)
|
||||||
} = $props();
|
} = $props();
|
||||||
|
|||||||
@@ -104,29 +104,18 @@
|
|||||||
if (simple) startEdit();
|
if (simple) startEdit();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
|
||||||
textarea{
|
|
||||||
width: 100%;
|
|
||||||
min-height: 100px;
|
|
||||||
}
|
|
||||||
div{
|
|
||||||
min-width: 40px;
|
|
||||||
min-height: 20px;
|
|
||||||
}
|
|
||||||
div.editable:hover{
|
|
||||||
border: 1px dotted;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<div class="markdown {editing?'editing':''}">
|
<div class="markdown {editing?'editing':''}">
|
||||||
{#if editing}
|
{#if editing}
|
||||||
<div class="boundary">
|
<span class="hint">{@html t('markdown_supported')}</span>
|
||||||
<textarea bind:value={editValue.source} onkeyup={typed} autofocus={!simple}></textarea>
|
<textarea bind:value={editValue.source} onkeyup={typed} autofocus={!simple}></textarea>
|
||||||
<span class="buttons">
|
<div class="preview">{@html target(editValue.rendered)}</div>
|
||||||
<button class="cancel" onclick={e => editing = false}>{t('cancel')}</button>
|
{#if !simple}
|
||||||
<button class="save" onclick={doSave}>{t('save')}</button>
|
<div class="buttons">
|
||||||
</span>
|
<button class="cancel" onclick={e => editing = false}>{t('cancel')}</button>
|
||||||
|
<button class="save" onclick={doSave}>{t('save')}</button>
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
|
{:else}
|
||||||
|
<svelte:element this={type} {onclick} {oncontextmenu} class={{editable}} title={t('right_click_to_edit')} >{@html target(editValue.rendered)}</svelte:element>
|
||||||
{/if}
|
{/if}
|
||||||
<svelte:element this={type} {onclick} {oncontextmenu} class={{editable}} title={t('long_click_to_edit')} >{@html target(editValue.rendered)}</svelte:element>
|
|
||||||
</div>
|
</div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
<textarea bind:value={editValue} onkeyup={typed} autofocus></textarea>
|
<textarea bind:value={editValue} onkeyup={typed} autofocus></textarea>
|
||||||
{:else}
|
{:else}
|
||||||
{#if value}
|
{#if value}
|
||||||
<svelte:element this={type} {onmousedown} {onmouseup} {ontouchstart} {ontouchend} class={{editable}} title={t('long_click_to_edit')} >
|
<svelte:element this={type} {onmousedown} {onmouseup} {ontouchstart} {ontouchend} class={{editable}} title={t('right_click_to_edit')} >
|
||||||
{#each value.split("\n") as line}
|
{#each value.split("\n") as line}
|
||||||
{line}<br/>
|
{line}<br/>
|
||||||
{/each}
|
{/each}
|
||||||
|
|||||||
@@ -49,5 +49,4 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
<Notes module="time" entity_id={record.id} />
|
<Notes module="time" entity_id={record.id} />
|
||||||
{record.description.source}
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
{#if field}
|
{#if field}
|
||||||
<div class={field.name}>
|
<div class={field.name}>
|
||||||
{#if field.value.includes('\\n')}
|
{#if field.value.includes('\\n')}
|
||||||
<MultiLineEditor type="div" editable={true} value={field.value.replaceAll('\\n','\n')} {onSet} title={t(field.name)+' – '+t('long_click_to_edit')} />
|
<MultiLineEditor type="div" editable={true} value={field.value.replaceAll('\\n','\n')} {onSet} title={t(field.name)+' – '+t('right_click_to_edit')} />
|
||||||
{:else}
|
{:else}
|
||||||
<LineEditor type="div" editable={true} value={field.value} {onSet} title={t(field.name)+' – '+t('long_click_to_edit')} />
|
<LineEditor type="div" editable={true} value={field.value} {onSet} title={t(field.name)+' – '+t('click_to_edit')} />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
let tasks = $state({});
|
let tasks = $state({});
|
||||||
let users = {};
|
let users = {};
|
||||||
let columns = $derived(project.allowed_states?Object.keys(project.allowed_states).length+1:1);
|
let columns = $derived(project.allowed_states?Object.keys(project.allowed_states).length+1:1);
|
||||||
const controller = new AbortController();
|
|
||||||
|
|
||||||
$effect(() => updateUrl(filter_input));
|
$effect(() => updateUrl(filter_input));
|
||||||
|
|
||||||
@@ -175,8 +174,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function openTask(task_id){
|
function openTask(task_id){
|
||||||
controller.abort();
|
window.open(`/task/${task_id}/view`, '_blank').focus();
|
||||||
router.navigate(`/task/${task_id}/view`)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function save_bookmark(){
|
async function save_bookmark(){
|
||||||
|
|||||||
@@ -210,9 +210,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{#if task.description}
|
{#if task.description}
|
||||||
<div>{t('description')}</div>
|
<div>{t('description')}</div>
|
||||||
<div class="description">
|
<MarkdownEditor bind:value={task.description} editable={true} onSet={val => update({description:val})} />
|
||||||
<MarkdownEditor bind:value={task.description} editable={true} onSet={val => update({description:val})} />
|
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
{#if !showSettings && task.start_date}
|
{#if !showSettings && task.start_date}
|
||||||
<div>{t('start_date')}</div>
|
<div>{t('start_date')}</div>
|
||||||
@@ -277,6 +275,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
<div>{t('tags')}</div>
|
||||||
|
<div class="tags">
|
||||||
|
<TagList module="task" {id} user_list={Object.keys(task.members).map(id => +id)} />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{t('subtasks')}
|
{t('subtasks')}
|
||||||
@@ -288,10 +290,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>{t('tags')}</div>
|
|
||||||
<div class="tags">
|
|
||||||
<TagList module="task" {id} user_list={Object.keys(task.members).map(id => +id)} />
|
|
||||||
</div>
|
|
||||||
<h3>{t('notes')}</h3>
|
<h3>{t('notes')}</h3>
|
||||||
<div>
|
<div>
|
||||||
<Notes module="task" entity_id={id} />
|
<Notes module="task" entity_id={id} />
|
||||||
|
|||||||
@@ -244,7 +244,7 @@
|
|||||||
{time.duration.toFixed(3)} h
|
{time.duration.toFixed(3)} h
|
||||||
{/if}
|
{/if}
|
||||||
</td>
|
</td>
|
||||||
<td class="user">
|
<td class="user" onclick={e => {detail = time.id}}>
|
||||||
{users[time.user_id].name}
|
{users[time.user_id].name}
|
||||||
</td>
|
</td>
|
||||||
<td class="subject" onclick={e => {detail = time.id}}>
|
<td class="subject" onclick={e => {detail = time.id}}>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
"cancel": "abbrechen",
|
"cancel": "abbrechen",
|
||||||
"choose_type": "Typ wählen",
|
"choose_type": "Typ wählen",
|
||||||
|
"click_to_edit": "Anklicken zum Bearbeiten",
|
||||||
"client_id": "Client-ID",
|
"client_id": "Client-ID",
|
||||||
"client_secret": "Client-Geheimnis",
|
"client_secret": "Client-Geheimnis",
|
||||||
"close_settings": "Einstellungen schließen",
|
"close_settings": "Einstellungen schließen",
|
||||||
@@ -137,15 +138,16 @@
|
|||||||
"login_services": "Login-Services",
|
"login_services": "Login-Services",
|
||||||
"logout": "Abmelden",
|
"logout": "Abmelden",
|
||||||
"logout_user": "{user} abmelden",
|
"logout_user": "{user} abmelden",
|
||||||
"long_click_to_edit": "lang klicken zum Bearbeiten",
|
|
||||||
|
|
||||||
"markdown_code": "Markdown-Code",
|
"markdown_code": "Markdown-Code",
|
||||||
|
"markdown_supported": "Markdown & <a href=\"https://plantuml.com\">Plantuml</a> nutzbar!",
|
||||||
"MANAGE_LOGIN_SERVICES": "Login-Services verwalten",
|
"MANAGE_LOGIN_SERVICES": "Login-Services verwalten",
|
||||||
"member": "Mitarbeiter",
|
"member": "Mitarbeiter",
|
||||||
"members": "Mitarbeiter",
|
"members": "Mitarbeiter",
|
||||||
"message": "Nachricht",
|
"message": "Nachricht",
|
||||||
"messages": "Benachrichtigungen",
|
"messages": "Benachrichtigungen",
|
||||||
"miscellaneous_settings": "sonstige Einstellungen",
|
"miscellaneous_settings": "sonstige Einstellungen",
|
||||||
|
"mismatch": "ungleich",
|
||||||
"model": "Modell",
|
"model": "Modell",
|
||||||
"models": "Modelle",
|
"models": "Modelle",
|
||||||
"module": {
|
"module": {
|
||||||
@@ -166,7 +168,6 @@
|
|||||||
"user": "Benutzer",
|
"user": "Benutzer",
|
||||||
"wiki": "Wiki"
|
"wiki": "Wiki"
|
||||||
},
|
},
|
||||||
"mismatch": "ungleich",
|
|
||||||
"month": "Monat",
|
"month": "Monat",
|
||||||
"must_not_be_empty": "darf nicht leer sein",
|
"must_not_be_empty": "darf nicht leer sein",
|
||||||
|
|
||||||
@@ -215,6 +216,7 @@
|
|||||||
"region": "Bundesland",
|
"region": "Bundesland",
|
||||||
"repeat_new_password": "Wiederholung",
|
"repeat_new_password": "Wiederholung",
|
||||||
"results": "Ergebnisse",
|
"results": "Ergebnisse",
|
||||||
|
"right_click_to_edit": "Rechts-Klick zum Bearbeiten",
|
||||||
|
|
||||||
"save": "speichern",
|
"save": "speichern",
|
||||||
"saved": "gespeichert",
|
"saved": "gespeichert",
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
"cancel": "cancel",
|
"cancel": "cancel",
|
||||||
"choose_type": "choose type",
|
"choose_type": "choose type",
|
||||||
|
"click_to_edit": "click to edit",
|
||||||
"client_id": "client ID",
|
"client_id": "client ID",
|
||||||
"client_secret": "client secret",
|
"client_secret": "client secret",
|
||||||
"close_settings": "close settings",
|
"close_settings": "close settings",
|
||||||
@@ -38,7 +39,7 @@
|
|||||||
"contained_tax": "contained tax",
|
"contained_tax": "contained tax",
|
||||||
"content": "content",
|
"content": "content",
|
||||||
"context": "context",
|
"context": "context",
|
||||||
"count_of_occurrences": "{count} occurences",
|
"count_of_occurrences": "{count} occurrences",
|
||||||
"country": "country",
|
"country": "country",
|
||||||
"COURT": "local court",
|
"COURT": "local court",
|
||||||
"CUSTOMER-NUMBER": "customer number",
|
"CUSTOMER-NUMBER": "customer number",
|
||||||
@@ -137,15 +138,16 @@
|
|||||||
"login_services": "login service",
|
"login_services": "login service",
|
||||||
"logout": "logout",
|
"logout": "logout",
|
||||||
"logout_user": "logout {user}",
|
"logout_user": "logout {user}",
|
||||||
"long_click_to_edit": "click long to edit",
|
|
||||||
|
|
||||||
"markdown_code": "Markdown-Code",
|
"markdown_code": "Markdown-Code",
|
||||||
|
"markdown_supported": "Markdown & <a href=\"https://plantuml.com\">Plantuml</a> supported!",
|
||||||
"MANAGE_LOGIN_SERVICES": "manage login services",
|
"MANAGE_LOGIN_SERVICES": "manage login services",
|
||||||
"member": "member",
|
"member": "member",
|
||||||
"members": "members",
|
"members": "members",
|
||||||
"message": "message",
|
"message": "message",
|
||||||
"messages": "messages",
|
"messages": "messages",
|
||||||
"miscellaneous_settings": "miscellaneous settings",
|
"miscellaneous_settings": "miscellaneous settings",
|
||||||
|
"mismatch": "mismatch",
|
||||||
"model": "model",
|
"model": "model",
|
||||||
"models": "models",
|
"models": "models",
|
||||||
"module": {
|
"module": {
|
||||||
@@ -166,7 +168,6 @@
|
|||||||
"user": "Users",
|
"user": "Users",
|
||||||
"wiki": "wiki"
|
"wiki": "wiki"
|
||||||
},
|
},
|
||||||
"mismatch": "mismatch",
|
|
||||||
"month": "month",
|
"month": "month",
|
||||||
"must_not_be_empty": "must not be empty",
|
"must_not_be_empty": "must not be empty",
|
||||||
|
|
||||||
@@ -215,6 +216,7 @@
|
|||||||
"region": "region",
|
"region": "region",
|
||||||
"repeat_new_password": "repeat new password",
|
"repeat_new_password": "repeat new password",
|
||||||
"results": "results",
|
"results": "results",
|
||||||
|
"right_click_to_edit": "right click to edit",
|
||||||
|
|
||||||
"save": "save",
|
"save": "save",
|
||||||
"saved": "saved",
|
"saved": "saved",
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ textarea{
|
|||||||
|
|
||||||
.kanban .state_10 .box,
|
.kanban .state_10 .box,
|
||||||
.kanban .state_100 .box{
|
.kanban .state_100 .box{
|
||||||
background: linear-gradient(rgba(0,0,0,0.8));
|
background: linear-gradient(rgba(0,0,0,0.6));
|
||||||
}
|
}
|
||||||
|
|
||||||
.kanban .state_10 .box,
|
.kanban .state_10 .box,
|
||||||
|
|||||||
@@ -290,6 +290,19 @@ span.timetracking {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.markdown.editing{
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
column-gap: 10px;
|
||||||
|
}
|
||||||
|
.markdown .buttons,
|
||||||
|
.markdown .hint{
|
||||||
|
grid-column-end: span 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.editable:hover{
|
||||||
|
border: 1px dotted;
|
||||||
|
}
|
||||||
|
|
||||||
.timetracks .year, .timetracks .month{
|
.timetracks .year, .timetracks .month{
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
@@ -307,23 +320,6 @@ span.timetracking {
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.markdown.editing{
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown.editing > *{
|
|
||||||
width: 49%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown.editing > *:nth-child(2){
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown img{
|
|
||||||
max-width: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table{
|
table{
|
||||||
min-width: 30vw;
|
min-width: 30vw;
|
||||||
@@ -370,6 +366,7 @@ a.wikilink{
|
|||||||
.grid2{
|
.grid2{
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 230px auto;
|
grid-template-columns: 230px auto;
|
||||||
|
margin: 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.grid2 > :nth-child(2n-1){
|
.grid2 > :nth-child(2n-1){
|
||||||
@@ -399,6 +396,17 @@ a.wikilink{
|
|||||||
text-align: initial;
|
text-align: initial;
|
||||||
padding-top: 8px;
|
padding-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.markdown.editing{
|
||||||
|
display: block;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
column-gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown textarea{
|
||||||
|
width: calc(100% - 10px);
|
||||||
|
min-height: 50px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset.vcard{
|
fieldset.vcard{
|
||||||
|
|||||||
Reference in New Issue
Block a user