diff --git a/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java b/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java index 82bd368b..8de21189 100644 --- a/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java +++ b/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java @@ -14,7 +14,6 @@ import de.srsoftware.umbrella.bookmarks.BookmarkApi; import de.srsoftware.umbrella.company.CompanyModule; import de.srsoftware.umbrella.contact.ContactModule; import de.srsoftware.umbrella.core.SettingsService; -import de.srsoftware.umbrella.core.Util; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import de.srsoftware.umbrella.documents.DocumentApi; import de.srsoftware.umbrella.files.FileModule; @@ -34,7 +33,6 @@ import de.srsoftware.umbrella.translations.Translations; import de.srsoftware.umbrella.user.UserModule; import de.srsoftware.umbrella.web.WebHandler; import de.srsoftware.umbrella.wiki.WikiModule; -import java.io.File; import java.io.IOException; import java.net.InetSocketAddress; import java.util.concurrent.Executors; diff --git a/core/src/main/java/de/srsoftware/umbrella/core/Util.java b/core/src/main/java/de/srsoftware/umbrella/core/Util.java index 5bc43929..bf46642f 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/Util.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/Util.java @@ -15,7 +15,6 @@ import static java.lang.System.Logger.Level.*; import static java.lang.System.Logger.Level.WARNING; import static java.nio.charset.StandardCharsets.UTF_8; -import com.xrbpowered.jparsedown.JParsedown; import de.srsoftware.tools.Mappable; import de.srsoftware.tools.Query; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; @@ -27,12 +26,13 @@ import java.net.URI; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.sql.ResultSet; +import java.sql.SQLException; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.HashMap; import java.util.Map; -import java.util.regex.Pattern; import org.json.JSONObject; public class Util { @@ -188,4 +188,19 @@ jspreadsheet(document.getElementById('spreadsheet'), { public static String dateTimeOf(long epochMilis){ return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilis), ZoneId.systemDefault()).format(TIME_FORMATTER); } + + public static String toJson(ResultSet rs) { + try { + Map map = new HashMap<>(); + var meta = rs.getMetaData(); + for (int col = 1; col <= meta.getColumnCount(); col++) { + var key = meta.getColumnName(col); + var val = rs.getObject(col); + map.put(key, val); + } + return new JSONObject(map).toString(); + } catch (SQLException e){ + return e.getMessage(); + } + } } diff --git a/frontend/src/routes/task/ParentSelector.svelte b/frontend/src/routes/task/ParentSelector.svelte index 65ba8235..def709ba 100644 --- a/frontend/src/routes/task/ParentSelector.svelte +++ b/frontend/src/routes/task/ParentSelector.svelte @@ -21,7 +21,10 @@
-

{t('select a new parent for {entity}',{entity:task.name})}

+

+ {t('select a new parent for {entity}',{entity:task.name})} + +

{t('project')}: {project.name}
\ No newline at end of file diff --git a/frontend/src/routes/task/View.svelte b/frontend/src/routes/task/View.svelte index 7af1831c..5a7f1602 100644 --- a/frontend/src/routes/task/View.svelte +++ b/frontend/src/routes/task/View.svelte @@ -193,7 +193,7 @@ function update_parent(newVal){ select_parent = false; - update({parent_task_id:newVal.id}); + if (newVal) update({parent_task_id:newVal.id}); } function updatePermission(user_id,permission){ diff --git a/markdown/src/main/java/de/srsoftware/umbrella/markdown/MarkdownApi.java b/markdown/src/main/java/de/srsoftware/umbrella/markdown/MarkdownApi.java index 0c417eb8..989d4780 100644 --- a/markdown/src/main/java/de/srsoftware/umbrella/markdown/MarkdownApi.java +++ b/markdown/src/main/java/de/srsoftware/umbrella/markdown/MarkdownApi.java @@ -14,11 +14,8 @@ import de.srsoftware.configuration.Configuration; import de.srsoftware.tools.Path; import de.srsoftware.umbrella.core.BaseHandler; import de.srsoftware.umbrella.core.ModuleRegistry; -import de.srsoftware.umbrella.core.Util; import de.srsoftware.umbrella.core.api.MarkdownService; -import de.srsoftware.umbrella.core.constants.Field; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; - import java.io.File; import java.io.IOException; import java.io.InputStream; diff --git a/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java b/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java index 22926974..2ef242c9 100644 --- a/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java +++ b/task/src/main/java/de/srsoftware/umbrella/task/SqliteDb.java @@ -18,10 +18,12 @@ import static de.srsoftware.umbrella.core.model.Status.*; import static de.srsoftware.umbrella.core.model.Translatable.t; import static de.srsoftware.umbrella.project.Constants.*; import static de.srsoftware.umbrella.task.Constants.*; +import static java.lang.System.Logger.Level.TRACE; import static java.text.MessageFormat.format; import de.srsoftware.tools.jdbc.Query; import de.srsoftware.umbrella.core.BaseDb; +import de.srsoftware.umbrella.core.Util; import de.srsoftware.umbrella.core.constants.Text; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import de.srsoftware.umbrella.core.model.*; @@ -242,6 +244,7 @@ CREATE TABLE IF NOT EXISTS {0} ( var tasks = new HashMap(); var rs = query.exec(db); while (rs.next()){ + LOG.log(TRACE,() -> Util.toJson(rs)); var task = Task.of(rs); tasks.put(task.id(),task); } diff --git a/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java b/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java index 33d00e51..1e49f5a7 100644 --- a/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java +++ b/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java @@ -21,7 +21,6 @@ import static de.srsoftware.umbrella.messagebus.MessageBus.messageBus; import static de.srsoftware.umbrella.messagebus.events.Event.EventType.CREATE; import static de.srsoftware.umbrella.project.Constants.PERMISSIONS; import static de.srsoftware.umbrella.task.Constants.*; -import static java.lang.System.Logger.Level.ERROR; import static java.lang.System.Logger.Level.WARNING; import static java.net.URLDecoder.decode; import static java.nio.charset.StandardCharsets.UTF_8; @@ -196,10 +195,9 @@ public class TaskModule extends BaseHandler implements TaskService { private boolean getParentCandidates(HttpExchange ex, long taskId, UmbrellaUser user) throws IOException { var task = taskDb.load(taskId); var project = projectService().load(task.projectId()); - var projectTasks = taskDb.listProjectTasks(project.id(),null, false); + var projectTasks = taskDb.listProjectTasks(project.id(),null, true); var mapped = projectTasks.values().stream().collect(Collectors.toMap(Task::id,Task::toMap)); var roots = new HashMap>(); - LOG.log(ERROR,"getParentCandidates not fully functional"); for (var map : mapped.values()){ if (!(map.get(ID) instanceof Long id)) continue; if (id == taskId) continue;