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