Changing how messaging is generated.

This commit is contained in:
mike12345567 2025-02-05 17:39:31 +00:00
parent 555cc15553
commit 880f27e0ff
1 changed files with 33 additions and 41 deletions

View File

@ -25,22 +25,7 @@
$: isInternalTable = isInternal && sourceType === SourceType.TABLE
const getViewsMessage = () => {
if (!source || !("views" in source)) {
return ""
}
const views = Object.values(source?.views ?? [])
if (views.length < 1) {
return ""
}
if (views.length === 1) {
return "1 view"
}
return `${views.length} views`
}
const getQueriesMessage = () => {
const getDatasourceQueries = () => {
if (sourceType !== SourceType.DATASOURCE) {
return ""
}
@ -48,14 +33,7 @@
const queryList = get(queries).list.filter(
query => query.datasourceId === sourceId
)
if (queryList.length < 1) {
return ""
}
if (queryList.length === 1) {
return "1 query"
}
return `${queryList.length} queries`
return queryList
}
function getSourceID(): string {
@ -168,21 +146,35 @@
}
}
function buildMessage() {
let message = ""
function buildMessage(sourceType: string) {
if (!source) {
return ""
}
let message = `Removing ${source?.name} `
let initialLength = message.length
if (sourceType === SourceType.TABLE) {
const views = "views" in source ? Object.values(source?.views ?? []) : []
if (isInternalTable) {
message = `All ${sourceType} data will also be deleted`
const viewsMessage = getViewsMessage()
if (viewsMessage) {
message += `, including ${viewsMessage}. `
} else {
message += ". "
message += `will delete its data${
views.length ? `, views (${views.length})` : ""
}`
} else if (views.length) {
message += `will delete its views (${views.length})`
}
} else if (sourceType === SourceType.DATASOURCE) {
const queriesMessage = getQueriesMessage()
message = `This will include deleting ${queriesMessage}. `
const queryList = getDatasourceQueries()
if (queryList.length) {
message += `will delete its queries (${queryList.length})`
}
}
if (affectedScreens.length) {
message +=
initialLength !== message.length
? ", and break connected screens:"
: "will break connected screens:"
} else {
message += "."
}
message += "<b>This action cannot be undone.</b>"
return message
}
</script>
@ -192,12 +184,12 @@
okText="Delete"
onOk={deleteSource}
onCancel={hideDeleteDialog}
title={`Are you sure you want to delete ${source?.name}?`}
title={`Are you sure you want to delete this ${sourceType}?`}
>
<div class="content">
{#if affectedScreens.length > 0}
{#if affectedScreens.length > 0 && sourceType}
<p class="warning">
Removing this {sourceType} will break the following screens:
{buildMessage(sourceType)}
<span class="screens">
{#each affectedScreens as item, idx}
<Link overBackground target="_blank" href={item.url}
@ -208,8 +200,7 @@
</p>
{/if}
<p class="warning">
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
{@html buildMessage()}
<b>This action cannot be undone.</b>
</p>
</div>
</ConfirmDialog>
@ -228,6 +219,7 @@
.screens {
display: flex;
flex-direction: row;
padding-bottom: var(--spacing-l);
gap: var(--spacing-xs);
}
</style>