Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8392edf408 | |||
| 9c80e0d77c | |||
| 0429e14715 | |||
| ff618f75fa | |||
| dbfd50bfa9 | |||
| ff65cfd958 | |||
| 877547df0d | |||
| 0db8ed4867 | |||
| 55ece851be | |||
| ed26f6e46f | |||
| eb4a983d11 |
@@ -241,7 +241,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h2>{t('Stock')}</h2>
|
<h2>{t('Stock')}</h2>
|
||||||
<div class="grid3">
|
<div class="stock grid3">
|
||||||
<div class="locations">
|
<div class="locations">
|
||||||
{#if top_level}
|
{#if top_level}
|
||||||
{#each top_level as realm,idx}
|
{#each top_level as realm,idx}
|
||||||
@@ -278,11 +278,11 @@
|
|||||||
</div>
|
</div>
|
||||||
{#if item && data && data.users}
|
{#if item && data && data.users}
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
<span>{t('tags')}</span>
|
<h4>{t('tags')}</h4>
|
||||||
<Tags module="stock" id={item.id} user_list={data.users} />
|
<Tags module="stock" id={item.id} user_list={data.users} />
|
||||||
</div>
|
</div>
|
||||||
<div class="notes">
|
<div class="notes">
|
||||||
<span>{t('notes')}</span>
|
<h4>{t('notes')}</h4>
|
||||||
<Notes module="stock" entity_id={item.id} />
|
<Notes module="stock" entity_id={item.id} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function onCommit(wrapped){
|
async function onCommit(wrapped){
|
||||||
addTag(wrapped.display);
|
addTag(wrapped.display.trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSelect(dummy){}
|
function onSelect(dummy){}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import { useTinyRouter } from 'svelte-tiny-router';
|
import { useTinyRouter } from 'svelte-tiny-router';
|
||||||
import { api, eventStream } from '../../urls.svelte';
|
import { api, eventStream, get } from '../../urls.svelte';
|
||||||
import { error, yikes } from '../../warn.svelte';
|
import { error, yikes } from '../../warn.svelte';
|
||||||
import { t } from '../../translations.svelte';
|
import { t } from '../../translations.svelte';
|
||||||
import { user } from '../../user.svelte';
|
import { user } from '../../user.svelte';
|
||||||
@@ -48,8 +48,13 @@
|
|||||||
});
|
});
|
||||||
if (res.ok){
|
if (res.ok){
|
||||||
let json = await res.json();
|
let json = await res.json();
|
||||||
router.navigate(`/wiki/${page.id}/view`);
|
let target = `/wiki/${page.id}/view`;
|
||||||
|
if (window.location.pathname == target) {
|
||||||
|
loadPage();
|
||||||
|
} else {
|
||||||
|
router.navigate(target);
|
||||||
yikes();
|
yikes();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
error(res);
|
error(res);
|
||||||
}
|
}
|
||||||
@@ -100,7 +105,7 @@
|
|||||||
let path = `wiki/page/${key}`;
|
let path = `wiki/page/${key}`;
|
||||||
if (version) path += `/version/${version}`;
|
if (version) path += `/version/${version}`;
|
||||||
const url = api(path);
|
const url = api(path);
|
||||||
const res = await fetch(url,{credentials:'include'});
|
const res = await get(url);
|
||||||
loadJson(res);
|
loadJson(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,6 +150,11 @@
|
|||||||
$effect(loadPage);
|
$effect(loadPage);
|
||||||
onMount(connectToBus);
|
onMount(connectToBus);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<svelte:head>
|
||||||
|
<title>Umbrella – {t('wiki')}: {page?.title}</title>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
{#if page && page.versions}
|
{#if page && page.versions}
|
||||||
<div class="wiki page">
|
<div class="wiki page">
|
||||||
<div class="versions">
|
<div class="versions">
|
||||||
@@ -188,7 +198,10 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
<MarkdownEditor {editable} value={page.content} onSet={s => patch({content:s})} store_id="wiki/{page.id}/description" />
|
<MarkdownEditor {editable} value={page.content} onSet={s => patch({content:s})} store_id="wiki/{page.id}/description" />
|
||||||
|
<div class="tags">
|
||||||
|
<h3>{t('tags')}</h3>
|
||||||
<TagList module="wiki" id={page.id} user_list={Object.keys(page.members).map(id => +id)} />
|
<TagList module="wiki" id={page.id} user_list={Object.keys(page.members).map(id => +id)} />
|
||||||
|
</div>
|
||||||
<div class="notes">
|
<div class="notes">
|
||||||
<h3>{t('notes')}</h3>
|
<h3>{t('notes')}</h3>
|
||||||
<Notes module="wiki" entity_id={page.id} />
|
<Notes module="wiki" entity_id={page.id} />
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import de.srsoftware.umbrella.core.BaseDb;
|
|||||||
import de.srsoftware.umbrella.messagebus.events.Event;
|
import de.srsoftware.umbrella.messagebus.events.Event;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
|
||||||
public class SqliteDb extends BaseDb implements JournalDb{
|
public class SqliteDb extends BaseDb implements JournalDb{
|
||||||
public SqliteDb(Connection connection) {
|
public SqliteDb(Connection connection) {
|
||||||
@@ -33,13 +35,14 @@ public class SqliteDb extends BaseDb implements JournalDb{
|
|||||||
var sql = """
|
var sql = """
|
||||||
CREATE TABLE IF NOT EXISTS {0} (
|
CREATE TABLE IF NOT EXISTS {0} (
|
||||||
{1} INTEGER PRIMARY KEY,
|
{1} INTEGER PRIMARY KEY,
|
||||||
{2} INTEGER,
|
{2} LONG NOT NULL,
|
||||||
{3} VARCHAR(255) NOT NULL,
|
{3} INTEGER,
|
||||||
{4} VARCHAR(16) NOT NULL,
|
{4} VARCHAR(255) NOT NULL,
|
||||||
{5} TEXT
|
{5} VARCHAR(16) NOT NULL,
|
||||||
|
{6} TEXT
|
||||||
);
|
);
|
||||||
""";
|
""";
|
||||||
sql = format(sql,TABLE_JOURNAL,ID,USER_ID,MODULE,ACTION,DESCRIPTION);
|
sql = format(sql,TABLE_JOURNAL,ID,TIMESTAMP,USER_ID,MODULE,ACTION,DESCRIPTION);
|
||||||
try {
|
try {
|
||||||
db.prepareStatement(sql).execute();
|
db.prepareStatement(sql).execute();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
@@ -50,8 +53,9 @@ public class SqliteDb extends BaseDb implements JournalDb{
|
|||||||
@Override
|
@Override
|
||||||
public void logEvent(Event<?> event) {
|
public void logEvent(Event<?> event) {
|
||||||
try {
|
try {
|
||||||
insertInto(TABLE_JOURNAL,USER_ID,MODULE,ACTION,DESCRIPTION)
|
var timestamp = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
|
||||||
.values(event.initiator().id(), event.module(), event.eventType(), event.describe())
|
insertInto(TABLE_JOURNAL,TIMESTAMP,USER_ID,MODULE,ACTION,DESCRIPTION)
|
||||||
|
.values(timestamp,event.initiator().id(), event.module(), event.eventType(), event.describe())
|
||||||
.execute(db).close();
|
.execute(db).close();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw databaseException(ERROR_WRITE_EVENT,event.eventType(),event.initiator().name());
|
throw databaseException(ERROR_WRITE_EVENT,event.eventType(),event.initiator().name());
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ public class TagModule extends BaseHandler implements TagService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save(String module, long entityId, Collection<Long> userIds, Collection<String> tags) {
|
public void save(String module, long entityId, Collection<Long> userIds, Collection<String> tags) {
|
||||||
tagDb.save(userIds,module,entityId,tags);
|
tagDb.save(userIds,module,entityId,tags.stream().map(String::trim).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -524,6 +524,10 @@ a.wikilink{
|
|||||||
grid-template-columns: [left] 1fr [first] 1fr [second] 1fr [right]
|
grid-template-columns: [left] 1fr [first] 1fr [second] 1fr [right]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.stock.grid3{
|
||||||
|
grid-template-columns: [left] 1fr [first] 1fr [second] 2fr [right]
|
||||||
|
}
|
||||||
|
|
||||||
.grid3 .locations {
|
.grid3 .locations {
|
||||||
grid-row-end: span 3;
|
grid-row-end: span 3;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user