From b74b4ddaaf5d97206ad165270b7d1b626da0b867 Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 11:28:32 +0300 Subject: [PATCH 1/7] WIP ### What's done: * WIP --- .../vuln/VulnerabilityGeneralInfoProps.kt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index 4debbf8fe4..4b5fe200a1 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -153,8 +153,23 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop className = ClassName("font-weight-bold text-primary-blue mb-4") +"CWE IDs".t() } - p { - +cosv.cweIds!!.joinToString(", ") + + textarea { + className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") + value = cosv.cweIds!!.joinToString(", ") + disabled = props.isEditDisabled + rows = 8 + if (!props.isEditDisabled) { + style = borderEditStyle() + } + onChange = { event -> + val valu = event.target.value//.split(", ").filter { it.isNotBlank() } + props.setVulnerability { vulnerability -> + vulnerability?.copy( + cosv = cosv.copy(cweIds = valu.split(", ").filter { it.isNotBlank() }) + ) + } + } } } @@ -278,6 +293,12 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop +"${credit.name} <${credit.contact?.joinToString { it }}>" } } + saveContributors.forEach { saveContributor -> + p { + +"[SAVE] ${saveContributor.name} <${saveContributor.email}>" + } + } + } // ================= Confirm type =================== From c2ba1d3cd8de28fef6b158bffa668193dfa319cc Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 12:26:15 +0300 Subject: [PATCH 2/7] working ### What's done: * WIP --- .../views/vuln/VulnerabilityGeneralInfoProps.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index 4b5fe200a1..21c043118a 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -36,6 +36,7 @@ import kotlinx.datetime.TimeZone @Suppress("EMPTY_BLOCK_STRUCTURE_ERROR", "MAGIC_NUMBER") val vulnerabilityGeneralInfoProps: FC = FC { props -> val (t) = useTranslation("vulnerability") + val (vulnCweIds, setVulnCweIds) = useState(props.vulnerability.cosv.cweIds?.joinToString(", ")) with(props.vulnerability) { div { @@ -74,6 +75,11 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop } } else { buttonBuilder(faCheck, "link", isOutline = true, classes = "text-muted text-left ml-auto") { + props.setVulnerability { vulnerability -> + vulnerability?.copy( + cosv = cosv.copy(cweIds = vulnCweIds?.split(", ")?.filter { it.isNotBlank() }) + ) + } props.enrollRequest() props.setIsEditDisabled(true) } @@ -163,10 +169,10 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop style = borderEditStyle() } onChange = { event -> - val valu = event.target.value//.split(", ").filter { it.isNotBlank() } + setVulnCweIds(event.target.value) props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweIds = valu.split(", ").filter { it.isNotBlank() }) + cosv = cosv.copy(cweIds = listOf(event.target.value)) ) } } From 5d25bc8560063a15e62ea1bf089ce54f57f00530 Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 12:39:45 +0300 Subject: [PATCH 3/7] WIP ### What's done: * WIP --- .../vuln/VulnerabilityGeneralInfoProps.kt | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index 21c043118a..332942c0fc 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -36,7 +36,10 @@ import kotlinx.datetime.TimeZone @Suppress("EMPTY_BLOCK_STRUCTURE_ERROR", "MAGIC_NUMBER") val vulnerabilityGeneralInfoProps: FC = FC { props -> val (t) = useTranslation("vulnerability") + val (vulnCweIds, setVulnCweIds) = useState(props.vulnerability.cosv.cweIds?.joinToString(", ")) + val (vulnCweNames, setVulnCweNames) = useState(props.vulnerability.cosv.cweNames?.joinToString("\n\n")) + val (vulnRelated, setVulnRelated) = useState(props.vulnerability.cosv.related?.joinToString(", ")) with(props.vulnerability) { div { @@ -77,7 +80,10 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop buttonBuilder(faCheck, "link", isOutline = true, classes = "text-muted text-left ml-auto") { props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweIds = vulnCweIds?.split(", ")?.filter { it.isNotBlank() }) + cosv = cosv.copy( + cweIds = vulnCweIds?.split(", ")?.filter { it.isNotBlank() }, + cweNames = vulnCweNames?.split("\n\n")?.filter { it.isNotBlank() }, + ) ) } props.enrollRequest() @@ -181,19 +187,34 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop // ================= CWE Names =================== + if (cosv.cweNames?.isNotEmpty() == true) { hr { } h6 { className = ClassName("font-weight-bold text-primary-blue mb-4") +"CWE Names".t() } + textarea { className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") value = cosv.cweNames!!.joinToString("\n\n") + disabled = props.isEditDisabled rows = 8 + if (!props.isEditDisabled) { + style = borderEditStyle() + } + onChange = { event -> + setVulnCweNames(event.target.value) + props.setVulnerability { vulnerability -> + vulnerability?.copy( + cosv = cosv.copy(cweNames = listOf(event.target.value)) + ) + } + } } } + // ================= Related Vulnerabilities =================== if (cosv.related?.isNotEmpty() == true) { @@ -202,8 +223,23 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop className = ClassName("font-weight-bold text-primary-blue mb-4") +"Related Vulnerabilities".t() } - p { - +cosv.related!!.joinToString(", ") + + textarea { + className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") + value = cosv.related!!.joinToString(", ") + disabled = props.isEditDisabled + rows = 8 + if (!props.isEditDisabled) { + style = borderEditStyle() + } + onChange = { event -> + setVulnRelated(event.target.value) + props.setVulnerability { vulnerability -> + vulnerability?.copy( + cosv = cosv.copy(related = listOf(event.target.value)) + ) + } + } } } From 35ede256e1e7441fde02be342b78af2634f2be8f Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 13:16:44 +0300 Subject: [PATCH 4/7] Working 2 ### What's done: * WIP --- .../vuln/VulnerabilityGeneralInfoProps.kt | 27 ++++--------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index 332942c0fc..4b97c8ef79 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -37,10 +37,6 @@ import kotlinx.datetime.TimeZone val vulnerabilityGeneralInfoProps: FC = FC { props -> val (t) = useTranslation("vulnerability") - val (vulnCweIds, setVulnCweIds) = useState(props.vulnerability.cosv.cweIds?.joinToString(", ")) - val (vulnCweNames, setVulnCweNames) = useState(props.vulnerability.cosv.cweNames?.joinToString("\n\n")) - val (vulnRelated, setVulnRelated) = useState(props.vulnerability.cosv.related?.joinToString(", ")) - with(props.vulnerability) { div { className = ClassName("card shadow mt-3 mb-4") @@ -78,14 +74,6 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop } } else { buttonBuilder(faCheck, "link", isOutline = true, classes = "text-muted text-left ml-auto") { - props.setVulnerability { vulnerability -> - vulnerability?.copy( - cosv = cosv.copy( - cweIds = vulnCweIds?.split(", ")?.filter { it.isNotBlank() }, - cweNames = vulnCweNames?.split("\n\n")?.filter { it.isNotBlank() }, - ) - ) - } props.enrollRequest() props.setIsEditDisabled(true) } @@ -170,15 +158,14 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") value = cosv.cweIds!!.joinToString(", ") disabled = props.isEditDisabled - rows = 8 + rows = 3 if (!props.isEditDisabled) { style = borderEditStyle() } onChange = { event -> - setVulnCweIds(event.target.value) props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweIds = listOf(event.target.value)) + cosv = cosv.copy(cweIds = event.target.value.split(", ")) ) } } @@ -187,7 +174,6 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop // ================= CWE Names =================== - if (cosv.cweNames?.isNotEmpty() == true) { hr { } h6 { @@ -204,17 +190,15 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop style = borderEditStyle() } onChange = { event -> - setVulnCweNames(event.target.value) props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweNames = listOf(event.target.value)) + cosv = cosv.copy(cweNames = event.target.value.split("\n\n")) ) } } } } - // ================= Related Vulnerabilities =================== if (cosv.related?.isNotEmpty() == true) { @@ -228,15 +212,14 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") value = cosv.related!!.joinToString(", ") disabled = props.isEditDisabled - rows = 8 + rows = 3 if (!props.isEditDisabled) { style = borderEditStyle() } onChange = { event -> - setVulnRelated(event.target.value) props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(related = listOf(event.target.value)) + cosv = cosv.copy(related = event.target.value.split(", ")) ) } } From 728a7d870a82248a4513ea6d488dd50b2430ae21 Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:27:05 +0300 Subject: [PATCH 5/7] WIP ### What's done: * WIP --- .../views/vuln/VulnerabilityGeneralInfoProps.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index 4b97c8ef79..ac0a821473 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -1,5 +1,6 @@ package com.saveourtool.save.frontend.components.views.vuln +import com.saveourtool.save.utils.PRETTY_DELIMITER import com.saveourtool.save.entities.cosv.VulnerabilityExt import com.saveourtool.save.entities.cosv.VulnerabilityMetadataDto.Companion.SUMMARY_LENGTH import com.saveourtool.save.entities.vulnerability.VulnerabilityStatus @@ -156,7 +157,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop textarea { className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") - value = cosv.cweIds!!.joinToString(", ") + value = cosv.cweIds!!.joinToString(PRETTY_DELIMITER) disabled = props.isEditDisabled rows = 3 if (!props.isEditDisabled) { @@ -165,7 +166,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop onChange = { event -> props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweIds = event.target.value.split(", ")) + cosv = cosv.copy(cweIds = event.target.value.split(PRETTY_DELIMITER)) ) } } @@ -210,7 +211,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop textarea { className = ClassName("auto_height form-control-plaintext px-2 pt-0 pb-0 text-gray-900") - value = cosv.related!!.joinToString(", ") + value = cosv.related!!.joinToString(PRETTY_DELIMITER) disabled = props.isEditDisabled rows = 3 if (!props.isEditDisabled) { @@ -219,7 +220,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop onChange = { event -> props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(related = event.target.value.split(", ")) + cosv = cosv.copy(related = event.target.value.split(PRETTY_DELIMITER)) ) } } From cd32a668fd67d818628119e704fb050f55ef5c67 Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:46:04 +0300 Subject: [PATCH 6/7] WIP ### What's done: * WIP --- .../views/vuln/VulnerabilityGeneralInfoProps.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index ac0a821473..f89efdb64e 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -1,6 +1,5 @@ package com.saveourtool.save.frontend.components.views.vuln -import com.saveourtool.save.utils.PRETTY_DELIMITER import com.saveourtool.save.entities.cosv.VulnerabilityExt import com.saveourtool.save.entities.cosv.VulnerabilityMetadataDto.Companion.SUMMARY_LENGTH import com.saveourtool.save.entities.vulnerability.VulnerabilityStatus @@ -12,6 +11,7 @@ import com.saveourtool.save.frontend.externals.i18next.useTranslation import com.saveourtool.save.frontend.utils.* import com.saveourtool.save.info.UserInfo import com.saveourtool.save.utils.NO_BREAK_SPACE +import com.saveourtool.save.utils.PRETTY_DELIMITER import com.saveourtool.save.utils.getRelatedLink import com.saveourtool.save.utils.shorten import com.saveourtool.save.utils.toUnixCalendarFormat @@ -166,7 +166,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop onChange = { event -> props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweIds = event.target.value.split(PRETTY_DELIMITER)) + cosv = cosv.copy(cweIds = event.target.value.split(PRETTY_DELIMITER)) ) } } @@ -193,7 +193,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop onChange = { event -> props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(cweNames = event.target.value.split("\n\n")) + cosv = cosv.copy(cweNames = event.target.value.split("\n\n")) ) } } @@ -220,7 +220,7 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop onChange = { event -> props.setVulnerability { vulnerability -> vulnerability?.copy( - cosv = cosv.copy(related = event.target.value.split(PRETTY_DELIMITER)) + cosv = cosv.copy(related = event.target.value.split(PRETTY_DELIMITER)) ) } } @@ -324,7 +324,6 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop +"[SAVE] ${saveContributor.name} <${saveContributor.email}>" } } - } // ================= Confirm type =================== From 02d98c4b07fba19ffd2d9886cef8575ecec82cbd Mon Sep 17 00:00:00 2001 From: Kirill Gevorkyan <26010098+kgevorkyan@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:54:23 +0300 Subject: [PATCH 7/7] Review ### What's done: * Review --- .../views/vuln/VulnerabilityGeneralInfoProps.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt index f89efdb64e..e30b0460fe 100644 --- a/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt +++ b/save-frontend/src/main/kotlin/com/saveourtool/save/frontend/components/views/vuln/VulnerabilityGeneralInfoProps.kt @@ -315,13 +315,9 @@ val vulnerabilityGeneralInfoProps: FC = FC { prop +"Credits" } cosv.credits?.forEach { credit -> + val savePrefix = if (credit.name in saveContributors.map { it.name }) "[SAVE] " else "" p { - +"${credit.name} <${credit.contact?.joinToString { it }}>" - } - } - saveContributors.forEach { saveContributor -> - p { - +"[SAVE] ${saveContributor.name} <${saveContributor.email}>" + +"$savePrefix${credit.name} <${credit.contact?.joinToString { it }}>" } } }