Changing messaging for deletion.
This commit is contained in:
parent
5c977713ed
commit
3bb0cdecf5
|
@ -21,9 +21,11 @@
|
||||||
let confirmDeleteDialog: any
|
let confirmDeleteDialog: any
|
||||||
let affectedScreens: { text: string; url: string }[] = []
|
let affectedScreens: { text: string; url: string }[] = []
|
||||||
let sourceType: SourceType | undefined = undefined
|
let sourceType: SourceType | undefined = undefined
|
||||||
let viewsMessage: string = ""
|
let isInternal: boolean = false
|
||||||
let deleteSourceName: string | undefined
|
let deleteSourceName: string | undefined
|
||||||
|
|
||||||
|
$: isInternalTable = isInternal && sourceType === SourceType.TABLE
|
||||||
|
|
||||||
const getViewsMessage = () => {
|
const getViewsMessage = () => {
|
||||||
if (!source || !("views" in source)) {
|
if (!source || !("views" in source)) {
|
||||||
return ""
|
return ""
|
||||||
|
@ -33,10 +35,28 @@
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
if (views.length === 1) {
|
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 {
|
function getSourceID(): string {
|
||||||
|
@ -50,10 +70,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
export const show = async () => {
|
export const show = async () => {
|
||||||
viewsMessage = getViewsMessage()
|
|
||||||
const usage = await screenStore.usageOfScreens(getSourceID())
|
const usage = await screenStore.usageOfScreens(getSourceID())
|
||||||
affectedScreens = processScreens(usage.screens)
|
affectedScreens = processScreens(usage.screens)
|
||||||
sourceType = usage.sourceType
|
sourceType = usage.sourceType
|
||||||
|
isInternal = usage.internal
|
||||||
confirmDeleteDialog.show()
|
confirmDeleteDialog.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +172,24 @@
|
||||||
return await deleteDatasource(source as Datasource)
|
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>
|
</script>
|
||||||
|
|
||||||
<ConfirmDialog
|
<ConfirmDialog
|
||||||
|
@ -163,10 +201,10 @@
|
||||||
disabled={deleteSourceName !== source?.name}
|
disabled={deleteSourceName !== source?.name}
|
||||||
>
|
>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p class="dataWarning">
|
<p class="warning">
|
||||||
All {sourceType} data will be deleted{viewsMessage}.
|
<!-- eslint-disable-next-line svelte/no-at-html-tags -->
|
||||||
|
{@html buildMessage()}
|
||||||
</p>
|
</p>
|
||||||
<p class="undoneWarning">This action <b>cannot be undone</b>.</p>
|
|
||||||
|
|
||||||
{#if affectedScreens.length > 0}
|
{#if affectedScreens.length > 0}
|
||||||
<div class="affectedScreens">
|
<div class="affectedScreens">
|
||||||
|
@ -208,16 +246,11 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dataWarning {
|
.warning {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.undoneWarning {
|
|
||||||
margin: 0 0 12px;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.affectedScreens {
|
.affectedScreens {
|
||||||
margin: 18px 0;
|
margin: 18px 0;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
|
|
@ -23,7 +23,6 @@ import {
|
||||||
import { builderSocket } from "../../websockets"
|
import { builderSocket } from "../../websockets"
|
||||||
import sdk from "../../sdk"
|
import sdk from "../../sdk"
|
||||||
import { sdk as sharedSdk } from "@budibase/shared-core"
|
import { sdk as sharedSdk } from "@budibase/shared-core"
|
||||||
import { isInternal } from "../../sdk/app/tables/utils"
|
|
||||||
|
|
||||||
export async function fetch(ctx: UserCtx<void, FetchScreenResponse>) {
|
export async function fetch(ctx: UserCtx<void, FetchScreenResponse>) {
|
||||||
const screens = await sdk.screens.fetch()
|
const screens = await sdk.screens.fetch()
|
||||||
|
|
Loading…
Reference in New Issue