# HG changeset patch # User Mike Becker # Date 1629293449 -7200 # Node ID f0ede8046b59bf9040f3fe526d286a968a78130b # Parent c8e1b5282f69a840cf3b5b19fd3a7cd6d31cb681 #162 adds active flag to component diff -r c8e1b5282f69 -r f0ede8046b59 setup/postgres/psql_create_tables.sql --- a/setup/postgres/psql_create_tables.sql Wed Aug 18 15:04:59 2021 +0200 +++ b/setup/postgres/psql_create_tables.sql Wed Aug 18 15:30:49 2021 +0200 @@ -52,7 +52,8 @@ color char(6) not null default '000000', ordinal integer not null default 0, description text, - lead integer references lpit_user (userid) + lead integer references lpit_user (userid), + active boolean not null default true ); create unique index lpit_component_node_unique on lpit_component (project, node); diff -r c8e1b5282f69 -r f0ede8046b59 src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt --- a/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt Wed Aug 18 15:30:49 2021 +0200 @@ -304,4 +304,12 @@ } } +fun boolValidator(input: String?): ValidationResult { + return if (input.isNullOrBlank()) { + ValidatedValue(false) + } else { + ValidatedValue(!(input.equals("false", true) || input == "0")) + } +} + // diff -r c8e1b5282f69 -r f0ede8046b59 src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt --- a/src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/dao/PostgresDataAccessObject.kt Wed Aug 18 15:30:49 2021 +0200 @@ -249,7 +249,7 @@ //language=SQL private val componentQuery = """ - select id, project, name, node, color, ordinal, description, + select id, project, name, node, color, ordinal, description, active, userid, username, givenname, lastname, mail from lpit_component left join lpit_user on lead = userid @@ -266,6 +266,7 @@ } ordinal = getInt("ordinal") description = getString("description") + active = getBoolean("active") lead = extractOptionalUser() } @@ -277,6 +278,7 @@ setStringSafe(i++, color.hex) setInt(i++, ordinal) setStringOrNull(i++, description) + setBoolean(i++, active) setIntOrNull(i++, lead?.id) return i } @@ -302,13 +304,13 @@ from lpit_component c left join issues i on c.id = i.component ) - select c.id, project, name, node, color, ordinal, description, + select c.id, project, name, node, color, ordinal, description, active, userid, username, givenname, lastname, mail, - open.total as open, active.total as active, done.total as done + open.total as open, wip.total as wip, done.total as done from lpit_component c left join lpit_user on lead = userid left join summary open on c.id = open.id and open.phase = 0 - left join summary active on c.id = active.id and active.phase = 1 + left join summary wip on c.id = wip.id and wip.phase = 1 left join summary done on c.id = done.id and done.phase = 2 where c.project = ? order by ordinal, name @@ -318,7 +320,7 @@ queryAll { rs -> ComponentSummary(rs.extractComponent()).apply { issueSummary.open = rs.getInt("open") - issueSummary.active = rs.getInt("active") + issueSummary.active = rs.getInt("wip") issueSummary.done = rs.getInt("done") } } @@ -338,7 +340,7 @@ } override fun insertComponent(component: Component) { - withStatement("insert into lpit_component (name, node, color, ordinal, description, lead, project) values (?, ?, ?, ?, ?, ?, ?)") { + withStatement("insert into lpit_component (name, node, color, ordinal, description, active, lead, project) values (?, ?, ?, ?, ?, ?, ?, ?)") { val col = setComponent(1, component) setInt(col, component.projectid) executeUpdate() @@ -346,7 +348,7 @@ } override fun updateComponent(component: Component) { - withStatement("update lpit_component set name = ?, node = ?, color = ?, ordinal = ?, description = ?, lead = ? where id = ?") { + withStatement("update lpit_component set name = ?, node = ?, color = ?, ordinal = ?, description = ?, active = ?, lead = ? where id = ?") { val col = setComponent(1, component) setInt(col, component.id) executeUpdate() diff -r c8e1b5282f69 -r f0ede8046b59 src/main/kotlin/de/uapcore/lightpit/entities/Component.kt --- a/src/main/kotlin/de/uapcore/lightpit/entities/Component.kt Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/entities/Component.kt Wed Aug 18 15:30:49 2021 +0200 @@ -34,4 +34,5 @@ var color = WebColor("000000") var description: String? = null var lead: User? = null + var active = true } \ No newline at end of file diff -r c8e1b5282f69 -r f0ede8046b59 src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt --- a/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/ProjectServlet.kt Wed Aug 18 15:30:49 2021 +0200 @@ -27,6 +27,7 @@ import de.uapcore.lightpit.AbstractServlet import de.uapcore.lightpit.HttpRequest +import de.uapcore.lightpit.boolValidator import de.uapcore.lightpit.dao.DataAccessObject import de.uapcore.lightpit.dateOptValidator import de.uapcore.lightpit.entities.* @@ -419,6 +420,8 @@ ordinal = http.param("ordinal")?.toIntOrNull() ?: 0 color = WebColor(http.param("color") ?: "#000000") description = http.param("description") + // TODO: process error message + active = http.param("active", ::boolValidator, true, mutableListOf()) lead = (http.param("lead")?.toIntOrNull() ?: -1).let { if (it < 0) null else dao.findUser(it) } diff -r c8e1b5282f69 -r f0ede8046b59 src/main/kotlin/de/uapcore/lightpit/viewmodel/NavMenus.kt --- a/src/main/kotlin/de/uapcore/lightpit/viewmodel/NavMenus.kt Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/viewmodel/NavMenus.kt Wed Aug 18 15:30:49 2021 +0200 @@ -113,6 +113,7 @@ ) ) for (component in components) { + if (!component.active && component != selectedComponent) continue yield( NavMenuEntry( level = 2, diff -r c8e1b5282f69 -r f0ede8046b59 src/main/resources/localization/strings.properties --- a/src/main/resources/localization/strings.properties Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/resources/localization/strings.properties Wed Aug 18 15:30:49 2021 +0200 @@ -43,6 +43,7 @@ button.version.edit=Edit Version commit.redirect-link=If redirection does not work, click the following link: commit.success=Operation successful - you will be redirected in a second. +component.active=Active component.color=Color component.lead=Lead component=Component diff -r c8e1b5282f69 -r f0ede8046b59 src/main/resources/localization/strings_de.properties --- a/src/main/resources/localization/strings_de.properties Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/resources/localization/strings_de.properties Wed Aug 18 15:30:49 2021 +0200 @@ -42,6 +42,7 @@ button.version.edit=Version Bearbeiten commit.redirect-link=Falls die Weiterleitung nicht klappt, klicken Sie bitte hier: commit.success=Operation erfolgreich - Sie werden jeden Moment weitergeleitet. +component.active=Aktiv component.color=Farbe component.lead=Leitung component=Komponente diff -r c8e1b5282f69 -r f0ede8046b59 src/main/webapp/WEB-INF/changelogs/changelog-de.jspf --- a/src/main/webapp/WEB-INF/changelogs/changelog-de.jspf Wed Aug 18 15:04:59 2021 +0200 +++ b/src/main/webapp/WEB-INF/changelogs/changelog-de.jspf Wed Aug 18 15:30:49 2021 +0200 @@ -27,6 +27,7 @@

Version 1.0 (Vorschau)