Majority of comments.
This commit is contained in:
parent
ec3cd23fcf
commit
85b2db1f02
|
@ -10,7 +10,7 @@
|
||||||
viewsV2,
|
viewsV2,
|
||||||
} from "@/stores/builder"
|
} from "@/stores/builder"
|
||||||
import ConfirmDialog from "@/components/common/ConfirmDialog.svelte"
|
import ConfirmDialog from "@/components/common/ConfirmDialog.svelte"
|
||||||
import { helpers } from "@budibase/shared-core"
|
import { helpers, utils } from "@budibase/shared-core"
|
||||||
import { SourceType } from "@budibase/types"
|
import { SourceType } from "@budibase/types"
|
||||||
import { goto, params } from "@roxi/routify"
|
import { goto, params } from "@roxi/routify"
|
||||||
import { DB_TYPE_EXTERNAL } from "@/constants/backend"
|
import { DB_TYPE_EXTERNAL } from "@/constants/backend"
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
export const show = async () => {
|
export const show = async () => {
|
||||||
const usage = await screenStore.usageOfScreens(getSourceID())
|
const usage = await screenStore.usageInScreens(getSourceID())
|
||||||
affectedScreens = processScreens(usage.screens)
|
affectedScreens = processScreens(usage.screens)
|
||||||
sourceType = usage.sourceType
|
sourceType = usage.sourceType
|
||||||
confirmDeleteDialog.show()
|
confirmDeleteDialog.show()
|
||||||
|
@ -93,7 +93,6 @@
|
||||||
}
|
}
|
||||||
notifications.success("View deleted")
|
notifications.success("View deleted")
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
|
||||||
notifications.error("Error deleting view")
|
notifications.error("Error deleting view")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,6 +139,8 @@
|
||||||
return await deleteQuery(source as Query)
|
return await deleteQuery(source as Query)
|
||||||
case SourceType.DATASOURCE:
|
case SourceType.DATASOURCE:
|
||||||
return await deleteDatasource(source as Datasource)
|
return await deleteDatasource(source as Datasource)
|
||||||
|
default:
|
||||||
|
utils.unreachable(sourceType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -504,8 +504,8 @@ export class ScreenStore extends BudiStore<ScreenState> {
|
||||||
/**
|
/**
|
||||||
* Provides a list of screens that are used by a given source ID (table, view, datasource, query)
|
* Provides a list of screens that are used by a given source ID (table, view, datasource, query)
|
||||||
*/
|
*/
|
||||||
async usageOfScreens(sourceId: string) {
|
async usageInScreens(sourceId: string) {
|
||||||
return API.usageOfScreens(sourceId)
|
return API.usageInScreens(sourceId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,14 @@ import {
|
||||||
DeleteScreenResponse,
|
DeleteScreenResponse,
|
||||||
SaveScreenRequest,
|
SaveScreenRequest,
|
||||||
SaveScreenResponse,
|
SaveScreenResponse,
|
||||||
UsageOfScreensResponse,
|
UsageInScreensResponse,
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
import { BaseAPIClient } from "./types"
|
import { BaseAPIClient } from "./types"
|
||||||
|
|
||||||
export interface ScreenEndpoints {
|
export interface ScreenEndpoints {
|
||||||
saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse>
|
saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse>
|
||||||
deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse>
|
deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse>
|
||||||
usageOfScreens: (sourceId: string) => Promise<UsageOfScreensResponse>
|
usageInScreens: (sourceId: string) => Promise<UsageInScreensResponse>
|
||||||
}
|
}
|
||||||
|
|
||||||
export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
|
export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
|
||||||
|
@ -35,7 +35,7 @@ export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
usageOfScreens: async sourceId => {
|
usageInScreens: async sourceId => {
|
||||||
return await API.post({
|
return await API.post({
|
||||||
url: `/api/screens/usage/${sourceId}`,
|
url: `/api/screens/usage/${sourceId}`,
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,7 +17,7 @@ import {
|
||||||
ScreenProps,
|
ScreenProps,
|
||||||
ScreenUsage,
|
ScreenUsage,
|
||||||
SourceType,
|
SourceType,
|
||||||
UsageOfScreensResponse,
|
UsageInScreensResponse,
|
||||||
UserCtx,
|
UserCtx,
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
import { builderSocket } from "../../websockets"
|
import { builderSocket } from "../../websockets"
|
||||||
|
@ -138,7 +138,7 @@ function findPlugins(component: ScreenProps, foundPlugins: string[]) {
|
||||||
component._children.forEach(child => findPlugins(child, foundPlugins))
|
component._children.forEach(child => findPlugins(child, foundPlugins))
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function usage(ctx: UserCtx<void, UsageOfScreensResponse>) {
|
export async function usage(ctx: UserCtx<void, UsageInScreensResponse>) {
|
||||||
const sourceId = ctx.params.sourceId
|
const sourceId = ctx.params.sourceId
|
||||||
const sourceType = sdk.common.getSourceType(sourceId)
|
const sourceType = sdk.common.getSourceType(sourceId)
|
||||||
const allScreens = await sdk.screens.fetch()
|
const allScreens = await sdk.screens.fetch()
|
||||||
|
@ -152,14 +152,8 @@ export async function usage(ctx: UserCtx<void, UsageOfScreensResponse>) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const isInternalTable =
|
|
||||||
sourceType === SourceType.TABLE &&
|
|
||||||
sdk.tables.isInternal({ tableId: sourceId })
|
|
||||||
const isInternalView =
|
|
||||||
sourceType === SourceType.VIEW && sdk.views.isInternal(sourceId)
|
|
||||||
ctx.body = {
|
ctx.body = {
|
||||||
sourceType,
|
sourceType,
|
||||||
internal: isInternalTable || isInternalView,
|
|
||||||
screens: response,
|
screens: response,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {
|
||||||
Role,
|
Role,
|
||||||
BuiltinPermissionID,
|
BuiltinPermissionID,
|
||||||
SourceType,
|
SourceType,
|
||||||
UsageOfScreensResponse,
|
UsageInScreensResponse,
|
||||||
} from "@budibase/types"
|
} from "@budibase/types"
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
@ -193,7 +193,7 @@ describe("/screens", () => {
|
||||||
await config.api.screen.save(basicScreen())
|
await config.api.screen.save(basicScreen())
|
||||||
})
|
})
|
||||||
|
|
||||||
function confirmScreen(usage: UsageOfScreensResponse, screen: Screen) {
|
function confirmScreen(usage: UsageInScreensResponse, screen: Screen) {
|
||||||
expect(usage.screens.length).toEqual(1)
|
expect(usage.screens.length).toEqual(1)
|
||||||
expect(usage.screens[0].url).toEqual(screen.routing.route)
|
expect(usage.screens[0].url).toEqual(screen.routing.route)
|
||||||
expect(usage.screens[0]._id).toEqual(screen._id!)
|
expect(usage.screens[0]._id).toEqual(screen._id!)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Screen, UsageOfScreensResponse } from "@budibase/types"
|
import { Screen, UsageInScreensResponse } from "@budibase/types"
|
||||||
import { Expectations, TestAPI } from "./base"
|
import { Expectations, TestAPI } from "./base"
|
||||||
|
|
||||||
export class ScreenAPI extends TestAPI {
|
export class ScreenAPI extends TestAPI {
|
||||||
|
@ -32,8 +32,8 @@ export class ScreenAPI extends TestAPI {
|
||||||
usage = async (
|
usage = async (
|
||||||
sourceId: string,
|
sourceId: string,
|
||||||
expectations?: Expectations
|
expectations?: Expectations
|
||||||
): Promise<UsageOfScreensResponse> => {
|
): Promise<UsageInScreensResponse> => {
|
||||||
return this._post<UsageOfScreensResponse>(
|
return this._post<UsageInScreensResponse>(
|
||||||
`/api/screens/usage/${sourceId}`,
|
`/api/screens/usage/${sourceId}`,
|
||||||
{
|
{
|
||||||
expectations,
|
expectations,
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { Screen } from "@budibase/types"
|
import { Screen, Component } from "@budibase/types"
|
||||||
|
|
||||||
export function findInSettings(screen: Screen, toFind: string) {
|
export function findInSettings(screen: Screen, toFind: string) {
|
||||||
const foundIn: { setting: string; value: string }[] = []
|
const foundIn: { setting: string; value: string }[] = []
|
||||||
function recurse(props: Record<string, any>, parentKey = "") {
|
function recurse(props: Component, parentKey = "") {
|
||||||
for (const [key, value] of Object.entries(props)) {
|
for (const [key, value] of Object.entries(props)) {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -21,8 +21,7 @@ export interface ScreenUsage {
|
||||||
_id: string
|
_id: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface UsageOfScreensResponse {
|
export interface UsageInScreensResponse {
|
||||||
sourceType: SourceType
|
sourceType: SourceType
|
||||||
internal: boolean
|
|
||||||
screens: ScreenUsage[]
|
screens: ScreenUsage[]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue