Changing messaging for deletion.

This commit is contained in:
mike12345567 2025-02-04 18:22:39 +00:00
parent 5c977713ed
commit 3bb0cdecf5
2 changed files with 46 additions and 14 deletions

View File

@ -21,9 +21,11 @@
let confirmDeleteDialog: any
let affectedScreens: { text: string; url: string }[] = []
let sourceType: SourceType | undefined = undefined
let viewsMessage: string = ""
let isInternal: boolean = false
let deleteSourceName: string | undefined
$: isInternalTable = isInternal && sourceType === SourceType.TABLE
const getViewsMessage = () => {
if (!source || !("views" in source)) {
return ""
@ -33,10 +35,28 @@
return ""
}
if (views.length === 1) {
return ", including 1 view"
return "1 view."
}
return `, including ${views.length} views`
return `${views.length} views.`
}
const getQueriesMessage = () => {
if (sourceType !== SourceType.DATASOURCE) {
return ""
}
const sourceId = getSourceID()
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.`
}
function getSourceID(): string {
@ -50,10 +70,10 @@
}
export const show = async () => {
viewsMessage = getViewsMessage()
const usage = await screenStore.usageOfScreens(getSourceID())
affectedScreens = processScreens(usage.screens)
sourceType = usage.sourceType
isInternal = usage.internal
confirmDeleteDialog.show()
}
@ -152,6 +172,24 @@
return await deleteDatasource(source as Datasource)
}
}
function buildMessage() {
let message = ""
if (isInternalTable) {
message = `All ${sourceType} data will be deleted`
const viewsMessage = getViewsMessage()
if (viewsMessage) {
message += `including ${viewsMessage}. `
} else {
message += ". "
}
} else if (sourceType === SourceType.DATASOURCE) {
const queriesMessage = getQueriesMessage()
message = `This will include deleting ${queriesMessage}. `
}
message += "<b>This action cannot be undone.</b>"
return message
}
</script>
<ConfirmDialog
@ -163,10 +201,10 @@
disabled={deleteSourceName !== source?.name}
>
<div class="content">
<p class="dataWarning">
All {sourceType} data will be deleted{viewsMessage}.
<p class="warning">
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
{@html buildMessage()}
</p>
<p class="undoneWarning">This action <b>cannot be undone</b>.</p>
{#if affectedScreens.length > 0}
<div class="affectedScreens">
@ -208,16 +246,11 @@
cursor: pointer;
}
.dataWarning {
.warning {
margin: 0;
max-width: 100%;
}
.undoneWarning {
margin: 0 0 12px;
max-width: 100%;
}
.affectedScreens {
margin: 18px 0;
max-width: 100%;

View File

@ -23,7 +23,6 @@ import {
import { builderSocket } from "../../websockets"
import sdk from "../../sdk"
import { sdk as sharedSdk } from "@budibase/shared-core"
import { isInternal } from "../../sdk/app/tables/utils"
export async function fetch(ctx: UserCtx<void, FetchScreenResponse>) {
const screens = await sdk.screens.fetch()