Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 747f829ded | |||
| 9417c60346 | |||
| f8db846369 | |||
| dee494f7ca | |||
| a261d8eb9b | |||
| dbd84f193e | |||
| fa395b5a33 | |||
| 71309011a0 | |||
| 4ded399972 | |||
| 8392edf408 | |||
| 9c80e0d77c |
@@ -295,7 +295,7 @@ public class SqliteDb extends BaseDb implements AccountDb {
|
||||
}
|
||||
} else if (transaction.isDirty()) {
|
||||
try {
|
||||
if (transaction.amount() == 0) {
|
||||
if (transaction.amount() == 0 || transaction.source().isEmpty() || transaction.destination().isEmpty()) {
|
||||
delete().from(TABLE_TRANSACTIONS).where(Field.ID, equal(transaction.id())).where(ACCOUNT, equal(transaction.accountId())).execute(db);
|
||||
} else {
|
||||
replaceInto(TABLE_TRANSACTIONS, Field.ID, Field.ACCOUNT, Field.TIMESTAMP, Field.SOURCE, Field.DESTINATION, Field.AMOUNT, Field.DESCRIPTION)
|
||||
|
||||
@@ -6,6 +6,9 @@ import de.srsoftware.umbrella.core.constants.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static de.srsoftware.tools.Optionals.isSet;
|
||||
import static de.srsoftware.tools.Optionals.nullIfEmpty;
|
||||
|
||||
public class IdOrString implements Mappable {
|
||||
private final Long id;
|
||||
private final String value;
|
||||
@@ -52,6 +55,10 @@ public class IdOrString implements Mappable {
|
||||
return map;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return id == null && !isSet(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return value;
|
||||
@@ -60,4 +67,4 @@ public class IdOrString implements Mappable {
|
||||
public String value(){
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,5 +155,8 @@
|
||||
{/if}
|
||||
{:else}
|
||||
<Display classes={{editable}} markdown={value} {onclick} {oncontextmenu} title={t('right_click_to_edit')} wrapper={type} />
|
||||
{#if !value.display}
|
||||
<button onclick={oncontextmenu}>{t('add_object',{object:t('content')})}</button>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
@@ -200,9 +200,10 @@
|
||||
<LineEditor bind:value={project.name} editable={true} onSet={val => update({name:val})} />
|
||||
</div>
|
||||
<div>
|
||||
<button onclick={kanban}>{t('show_kanban')}</button>
|
||||
{t('options')}
|
||||
</div>
|
||||
<div>
|
||||
<button onclick={kanban}><span class="symbol"></span> {t('show_kanban')}</button>
|
||||
<button onclick={toggleSettings}><span class="symbol"></span> {t('settings')}</button>
|
||||
</div>
|
||||
<div>{t('state')}</div>
|
||||
|
||||
@@ -13,6 +13,8 @@ import de.srsoftware.umbrella.core.BaseDb;
|
||||
import de.srsoftware.umbrella.messagebus.events.Event;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
|
||||
public class SqliteDb extends BaseDb implements JournalDb{
|
||||
public SqliteDb(Connection connection) {
|
||||
@@ -33,13 +35,14 @@ public class SqliteDb extends BaseDb implements JournalDb{
|
||||
var sql = """
|
||||
CREATE TABLE IF NOT EXISTS {0} (
|
||||
{1} INTEGER PRIMARY KEY,
|
||||
{2} INTEGER,
|
||||
{3} VARCHAR(255) NOT NULL,
|
||||
{4} VARCHAR(16) NOT NULL,
|
||||
{5} TEXT
|
||||
{2} LONG NOT NULL,
|
||||
{3} INTEGER,
|
||||
{4} VARCHAR(255) NOT NULL,
|
||||
{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 {
|
||||
db.prepareStatement(sql).execute();
|
||||
} catch (SQLException e) {
|
||||
@@ -50,8 +53,9 @@ public class SqliteDb extends BaseDb implements JournalDb{
|
||||
@Override
|
||||
public void logEvent(Event<?> event) {
|
||||
try {
|
||||
insertInto(TABLE_JOURNAL,USER_ID,MODULE,ACTION,DESCRIPTION)
|
||||
.values(event.initiator().id(), event.module(), event.eventType(), event.describe())
|
||||
var timestamp = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
|
||||
insertInto(TABLE_JOURNAL,TIMESTAMP,USER_ID,MODULE,ACTION,DESCRIPTION)
|
||||
.values(timestamp,event.initiator().id(), event.module(), event.eventType(), event.describe())
|
||||
.execute(db).close();
|
||||
} catch (SQLException e) {
|
||||
throw databaseException(ERROR_WRITE_EVENT,event.eventType(),event.initiator().name());
|
||||
|
||||
@@ -192,6 +192,8 @@
|
||||
"items": "Artikel",
|
||||
|
||||
"join_objects" : "{objects} zusammenführen",
|
||||
|
||||
"kanban": "Kanban",
|
||||
"key": "Suchbegriff",
|
||||
|
||||
"language": "Sprache",
|
||||
@@ -307,6 +309,7 @@
|
||||
"project ({id})": "Projekt ({id})",
|
||||
"Project '{project}' was edited": "Projekt '{project}' wurde bearbeitet",
|
||||
"projects": "Projekte",
|
||||
"Projects": "Projekte",
|
||||
"properties": "Eigenschaften",
|
||||
"property": "Eigenschaft",
|
||||
"purpose": "Zweck",
|
||||
|
||||
@@ -192,6 +192,8 @@
|
||||
"items": "items",
|
||||
|
||||
"join_objects" : "join {objects}",
|
||||
|
||||
"kanban": "Kanban",
|
||||
"key": "search term",
|
||||
|
||||
"language": "language",
|
||||
@@ -307,6 +309,7 @@
|
||||
"project ({id})": "project ({id})",
|
||||
"Project '{project}' was edited": "Project '{project}' was edited",
|
||||
"projects": "projects",
|
||||
"Projects": "projects",
|
||||
"properties": "properties",
|
||||
"property": "property",
|
||||
"purpose": "purpose",
|
||||
|
||||
Reference in New Issue
Block a user