From f8f501f1b288be28de6a75bec7ede438cc6aa9ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Henke?= Date: Tue, 9 Jan 2024 10:17:00 +0100 Subject: [PATCH] added dynamic css --- build.gradle | 4 +-- .../modules/style/DynamicStyleController.java | 29 +++++++++++++++ .../modules/style/DynamicStyleRepository.java | 36 +++++++++++++++++++ .../modules/style/DynamicStyleService.java | 20 +++++++++++ src/main/resources/templates/done/list.html | 19 ++++------ src/main/resources/templates/layout/main.html | 1 + 6 files changed, 94 insertions(+), 15 deletions(-) create mode 100644 src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleController.java create mode 100644 src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleRepository.java create mode 100644 src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleService.java diff --git a/build.gradle b/build.gradle index a21bd7e..435e501 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { apply plugin: 'io.spring.dependency-management' group = 'de.jottyfan' -version = '1.4.6' +version = '1.4.7' description = """timetrack""" @@ -23,7 +23,7 @@ repositories { } dependencies { - implementation 'de.jottyfan:timetrackjooq:20240105' + implementation 'de.jottyfan:timetrackjooq:20240109' implementation 'org.apache.logging.log4j:log4j-api:latest.release' implementation 'org.apache.logging.log4j:log4j-core:latest.release' diff --git a/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleController.java b/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleController.java new file mode 100644 index 0000000..ba01f72 --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleController.java @@ -0,0 +1,29 @@ +package de.jottyfan.timetrack.modules.style; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import de.jottyfan.timetrack.component.OAuth2Provider; +import jakarta.servlet.http.HttpServletRequest; + +/** + * + * @author jotty + * + */ +@RestController +public class DynamicStyleController { + + @Autowired + private DynamicStyleService service; + + @Autowired + private OAuth2Provider provider; + + @GetMapping(value = "/public/dynamicstyle.css", produces = "text/css") + public @ResponseBody String getDynamicCss(HttpServletRequest request) { + return service.getDynamicCssOf(provider.getName()); + } +} diff --git a/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleRepository.java b/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleRepository.java new file mode 100644 index 0000000..efcfa33 --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleRepository.java @@ -0,0 +1,36 @@ +package de.jottyfan.timetrack.modules.style; + +import static de.jottyfan.timetrack.db.profile.Tables.T_PROFILE; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jooq.DSLContext; +import org.jooq.Record1; +import org.jooq.SelectConditionStep; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +/** + * + * @author jotty + * + */ +@Repository +public class DynamicStyleRepository { + private static final Logger LOGGER = LogManager.getLogger(DynamicStyleRepository.class); + + @Autowired + private DSLContext jooq; + + public String getDynamicStyle(String name) { + SelectConditionStep> sql = jooq + // @formatter:off + .select(T_PROFILE.DYNAMIC_CSS) + .from(T_PROFILE) + .where(T_PROFILE.USERNAME.eq(name)); + // @formatter:on + LOGGER.trace(sql); + String result = sql.fetchOne(T_PROFILE.DYNAMIC_CSS); + return result == null ? "" : result; + } +} diff --git a/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleService.java b/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleService.java new file mode 100644 index 0000000..2d0e8fe --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/modules/style/DynamicStyleService.java @@ -0,0 +1,20 @@ +package de.jottyfan.timetrack.modules.style; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * + * @author jotty + * + */ +@Service +public class DynamicStyleService { + + @Autowired + private DynamicStyleRepository repository; + + public String getDynamicCssOf(String name) { + return name == null ? "" : repository.getDynamicStyle(name); + } +} diff --git a/src/main/resources/templates/done/list.html b/src/main/resources/templates/done/list.html index 2398b45..39104b6 100644 --- a/src/main/resources/templates/done/list.html +++ b/src/main/resources/templates/done/list.html @@ -118,15 +118,10 @@ - - - - - - - - - + + + + @@ -288,11 +283,9 @@