From 65dfad8275d9ccaf64aaaaffe265ad8bf3b507e4 Mon Sep 17 00:00:00 2001 From: Alexander Petric Date: Mon, 16 Sep 2024 18:15:55 -0400 Subject: [PATCH] fix(frontend): new resource type name must be snake case (#4396) * check if newResourceType.name is camel case * adding option to convert to snake case * signing commit * validate numbers in snake case, externalize 'valid' field of newResourceType --- .../(root)/(logged)/resources/+page.svelte | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/frontend/src/routes/(root)/(logged)/resources/+page.svelte b/frontend/src/routes/(root)/(logged)/resources/+page.svelte index 87b5b0cd4b..96ca164fd1 100644 --- a/frontend/src/routes/(root)/(logged)/resources/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/resources/+page.svelte @@ -77,6 +77,8 @@ schema: emptySchema(), description: '' } + let isNewResourceTypeNameValid: boolean + let editResourceType = { name: '', schema: emptySchema(), @@ -246,6 +248,8 @@ schema: emptySchema(), description: '' } + validateResourceTypeName() + resourceTypeDrawer.openDrawer?.() } @@ -338,6 +342,21 @@ deployUiSettings = settings.deploy_ui ?? ALL_DEPLOYABLE } getDeployUiSettings() + + function validateResourceTypeName() { + const snakeCaseRegex = /^[a-z0-9]+(_[a-z0-9]+)*$/ + isNewResourceTypeNameValid = snakeCaseRegex.test(newResourceType.name) + } + + function toSnakeCase() { + newResourceType.name = newResourceType.name + .replace(/([a-z0-9])([A-Z])/g, '$1_$2') + .replace(/[\W]+/g, '_') + .replace(/_+/g, '_') + .replace(/^_+|_+$/g, '') + .toLowerCase() + validateResourceTypeName() + } - +
@@ -473,6 +497,14 @@ /> {/if} + {#if newResourceType.name} + {#if !isNewResourceTypeNameValid} +

Name must be snake_case! +

+ {/if} + {/if}