Merge branch 'master' into fix/automation-bindings-name-fix

This commit is contained in:
Peter Clement 2024-01-23 09:08:46 +00:00 committed by GitHub
commit 2d3f0c90e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 63 additions and 24 deletions

View File

@ -1,5 +1,5 @@
{ {
"version": "2.15.2", "version": "2.15.4",
"npmClient": "yarn", "npmClient": "yarn",
"packages": [ "packages": [
"packages/*", "packages/*",

View File

@ -13,6 +13,7 @@
Icon, Icon,
} from "@budibase/bbui" } from "@budibase/bbui"
import { capitalise } from "helpers" import { capitalise } from "helpers"
import { getFormattedPlanName } from "helpers/planTitle"
import { get } from "svelte/store" import { get } from "svelte/store"
export let resourceId export let resourceId
@ -99,7 +100,9 @@
{#if requiresPlanToModify} {#if requiresPlanToModify}
<span class="lock-tag"> <span class="lock-tag">
<Tags> <Tags>
<Tag icon="LockClosed">{capitalise(requiresPlanToModify)}</Tag> <Tag icon="LockClosed"
>{getFormattedPlanName(requiresPlanToModify)}</Tag
>
</Tags> </Tags>
</span> </span>
{/if} {/if}

View File

@ -0,0 +1,11 @@
import { PlanType } from "@budibase/types"
export function getFormattedPlanName(userPlanType) {
let planName = "Free"
if (userPlanType === PlanType.PREMIUM_PLUS) {
planName = "Premium"
} else if (userPlanType === PlanType.ENTERPRISE_BASIC) {
planName = "Enterprise"
}
return `${planName} Plan`
}

View File

@ -15,7 +15,7 @@
import { DashCard, Usage } from "components/usage" import { DashCard, Usage } from "components/usage"
import { PlanModel } from "constants" import { PlanModel } from "constants"
import { sdk } from "@budibase/shared-core" import { sdk } from "@budibase/shared-core"
import { PlanType } from "@budibase/types" import { getFormattedPlanName } from "helpers/planTitle"
let staticUsage = [] let staticUsage = []
let monthlyUsage = [] let monthlyUsage = []
@ -100,23 +100,6 @@
cancelAt = license?.billing?.subscription?.cancelAt cancelAt = license?.billing?.subscription?.cancelAt
} }
const capitalise = string => {
if (string) {
return string.charAt(0).toUpperCase() + string.slice(1)
}
}
const planTitle = () => {
const planType = license?.plan.type
let planName = license?.plan.type
if (planType === PlanType.PREMIUM_PLUS) {
planName = "Premium"
} else if (planType === PlanType.ENTERPRISE_BASIC) {
planName = "Enterprise"
}
return `${capitalise(planName)} Plan`
}
const getDaysRemaining = timestamp => { const getDaysRemaining = timestamp => {
if (!timestamp) { if (!timestamp) {
return return
@ -227,7 +210,7 @@
<DashCard <DashCard
description="YOUR CURRENT PLAN" description="YOUR CURRENT PLAN"
title={planTitle()} title={getFormattedPlanName(license?.plan.type)}
{primaryActionText} {primaryActionText}
primaryAction={showButton ? goToAccountPortal : undefined} primaryAction={showButton ? goToAccountPortal : undefined}
{textRows} {textRows}

View File

@ -108,8 +108,16 @@
} }
} }
$: forceFetchRows(filter)
$: debouncedFetchRows(searchTerm, primaryDisplay, defaultValue) $: debouncedFetchRows(searchTerm, primaryDisplay, defaultValue)
const forceFetchRows = async () => {
// if the filter has changed, then we need to reset the options, clear the selection, and re-fetch
optionsObj = {}
fieldApi.setValue([])
selectedValue = []
debouncedFetchRows(searchTerm, primaryDisplay, defaultValue)
}
const fetchRows = async (searchTerm, primaryDisplay, defaultVal) => { const fetchRows = async (searchTerm, primaryDisplay, defaultVal) => {
const allRowsFetched = const allRowsFetched =
$fetch.loaded && $fetch.loaded &&

View File

@ -9,8 +9,11 @@ import {
CreateDatasourceResponse, CreateDatasourceResponse,
Datasource, Datasource,
DatasourcePlus, DatasourcePlus,
Document,
FetchDatasourceInfoRequest, FetchDatasourceInfoRequest,
FetchDatasourceInfoResponse, FetchDatasourceInfoResponse,
FieldType,
RelationshipFieldMetadata,
SourceName, SourceName,
UpdateDatasourceResponse, UpdateDatasourceResponse,
UserCtx, UserCtx,
@ -218,9 +221,26 @@ async function destroyInternalTablesBySourceId(datasourceId: string) {
[] []
) )
function updateRevisions(deletedLinks: RelationshipFieldMetadata[]) {
for (const link of deletedLinks) {
datasourceTableDocs.forEach((doc: Document) => {
if (doc._id === link.tableId) {
doc._rev = link.tableRev
}
})
}
}
// Destroy the tables. // Destroy the tables.
for (const table of datasourceTableDocs) { for (const table of datasourceTableDocs) {
await sdk.tables.internal.destroy(table) const deleted = await sdk.tables.internal.destroy(table)
// Update the revisions of any tables that remain to be deleted
const deletedLinks: RelationshipFieldMetadata[] = Object.values(
deleted.table.schema
)
.filter(field => field.type === FieldType.LINK)
.map(field => field as RelationshipFieldMetadata)
updateRevisions(deletedLinks)
} }
} }

View File

@ -13,6 +13,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Senior"], "Employee Level": ["Senior"],
"Start Date": "2015-02-12T12:00:00.000", "Start Date": "2015-02-12T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Mandy", "First Name": "Mandy",
@ -28,6 +29,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Senior"], "Employee Level": ["Senior"],
"Start Date": "2017-09-10T12:00:00.000", "Start Date": "2017-09-10T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Holly", "First Name": "Holly",
@ -43,6 +45,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Senior"], "Employee Level": ["Senior"],
"Start Date": "2022-02-12T12:00:00.000", "Start Date": "2022-02-12T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Francis", "First Name": "Francis",
@ -58,6 +61,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Apprentice"], "Employee Level": ["Apprentice"],
"Start Date": "2021-03-10T12:00:00.000", "Start Date": "2021-03-10T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Richard", "First Name": "Richard",
@ -73,6 +77,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Apprentice"], "Employee Level": ["Apprentice"],
"Start Date": "2020-07-09T12:00:00.000", "Start Date": "2020-07-09T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Donald", "First Name": "Donald",
@ -88,6 +93,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Junior"], "Employee Level": ["Junior"],
"Start Date": "2018-04-13T12:00:00.000", "Start Date": "2018-04-13T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Maria", "First Name": "Maria",
@ -103,6 +109,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Manager"], "Employee Level": ["Manager"],
"Start Date": "2016-05-22T12:00:00.000", "Start Date": "2016-05-22T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Suzy", "First Name": "Suzy",
@ -118,6 +125,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Senior", "Manager"], "Employee Level": ["Senior", "Manager"],
"Start Date": "2019-05-01T12:00:00.000", "Start Date": "2019-05-01T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Patrick", "First Name": "Patrick",
@ -133,6 +141,7 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Apprentice"], "Employee Level": ["Apprentice"],
"Start Date": "2014-08-30T12:00:00.000", "Start Date": "2014-08-30T12:00:00.000",
"Badge Photo": [],
}, },
{ {
"First Name": "Brayden", "First Name": "Brayden",
@ -148,5 +157,6 @@ export const employeeImport = [
type: "row", type: "row",
"Employee Level": ["Contractor"], "Employee Level": ["Contractor"],
"Start Date": "2022-11-09T12:00:00.000", "Start Date": "2022-11-09T12:00:00.000",
"Badge Photo": [],
}, },
] ]

View File

@ -440,7 +440,7 @@ class LinkController {
if (field.type === FieldTypes.LINK && field.fieldName) { if (field.type === FieldTypes.LINK && field.fieldName) {
const linkedTable = await this._db.get<Table>(field.tableId) const linkedTable = await this._db.get<Table>(field.tableId)
delete linkedTable.schema[field.fieldName] delete linkedTable.schema[field.fieldName]
await this._db.put(linkedTable) field.tableRev = (await this._db.put(linkedTable)).rev
} }
} catch (err: any) { } catch (err: any) {
logging.logWarn(err?.message, err) logging.logWarn(err?.message, err)

View File

@ -61,7 +61,7 @@ export async function getInheritablePermissions(
export async function allowsExplicitPermissions(resourceId: string) { export async function allowsExplicitPermissions(resourceId: string) {
if (isViewID(resourceId)) { if (isViewID(resourceId)) {
const allowed = await features.isViewPermissionEnabled() const allowed = await features.isViewPermissionEnabled()
const minPlan = !allowed ? PlanType.BUSINESS : undefined const minPlan = !allowed ? PlanType.PREMIUM_PLUS : undefined
return { return {
allowed, allowed,

View File

@ -48,6 +48,9 @@ async function checkResponse(
let error let error
try { try {
error = await response.json() error = await response.json()
if (!error.message) {
error = JSON.stringify(error)
}
} catch (err) { } catch (err) {
error = await response.text() error = await response.text()
} }

View File

@ -21,6 +21,7 @@ interface BaseRelationshipFieldMetadata
main?: boolean main?: boolean
fieldName: string fieldName: string
tableId: string tableId: string
tableRev?: string
subtype?: AutoFieldSubTypes.CREATED_BY | AutoFieldSubTypes.UPDATED_BY subtype?: AutoFieldSubTypes.CREATED_BY | AutoFieldSubTypes.UPDATED_BY
} }