Update screen templates to work with latest bindings
This commit is contained in:
parent
7e7219856d
commit
2ec4272558
|
@ -15,21 +15,9 @@ const allTemplates = tables => [
|
||||||
emptyRowDetailScreen,
|
emptyRowDetailScreen,
|
||||||
]
|
]
|
||||||
|
|
||||||
// Recurses through a component tree and generates new unique ID's
|
|
||||||
const makeUniqueIds = component => {
|
|
||||||
if (!component) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
component._id = uuid()
|
|
||||||
if (component._children) {
|
|
||||||
component._children.forEach(makeUniqueIds)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allows us to apply common behaviour to all create() functions
|
// Allows us to apply common behaviour to all create() functions
|
||||||
const createTemplateOverride = (frontendState, create) => () => {
|
const createTemplateOverride = (frontendState, create) => () => {
|
||||||
const screen = create()
|
const screen = create()
|
||||||
makeUniqueIds(screen.props)
|
|
||||||
screen.name = screen.props._id
|
screen.name = screen.props._id
|
||||||
screen.routing.route = screen.routing.route.toLowerCase()
|
screen.routing.route = screen.routing.route.toLowerCase()
|
||||||
return screen
|
return screen
|
||||||
|
|
|
@ -21,26 +21,29 @@ export default function(tables) {
|
||||||
export const newRowUrl = table => sanitizeUrl(`/${table.name}/new/row`)
|
export const newRowUrl = table => sanitizeUrl(`/${table.name}/new/row`)
|
||||||
export const NEW_ROW_TEMPLATE = "NEW_ROW_TEMPLATE"
|
export const NEW_ROW_TEMPLATE = "NEW_ROW_TEMPLATE"
|
||||||
|
|
||||||
function generateTitleContainer(table) {
|
function generateTitleContainer(table, providerId) {
|
||||||
return makeTitleContainer("New Row").addChild(makeSaveButton(table))
|
return makeTitleContainer("New Row").addChild(
|
||||||
|
makeSaveButton(table, providerId)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const createScreen = table => {
|
const createScreen = table => {
|
||||||
const dataform = new Component(
|
const screen = new Screen()
|
||||||
"@budibase/standard-components/dataformwide"
|
|
||||||
).instanceName("Form")
|
|
||||||
|
|
||||||
const container = makeMainContainer()
|
|
||||||
.addChild(makeBreadcrumbContainer(table.name, "New"))
|
|
||||||
.addChild(generateTitleContainer(table))
|
|
||||||
.addChild(dataform)
|
|
||||||
|
|
||||||
return new Screen()
|
|
||||||
.component("@budibase/standard-components/newrow")
|
.component("@budibase/standard-components/newrow")
|
||||||
.table(table._id)
|
.table(table._id)
|
||||||
.route(newRowUrl(table))
|
.route(newRowUrl(table))
|
||||||
.instanceName(`${table.name} - New`)
|
.instanceName(`${table.name} - New`)
|
||||||
.name("")
|
.name("")
|
||||||
.addChild(container)
|
|
||||||
.json()
|
const dataform = new Component(
|
||||||
|
"@budibase/standard-components/dataformwide"
|
||||||
|
).instanceName("Form")
|
||||||
|
|
||||||
|
const providerId = screen._json.props._id
|
||||||
|
const container = makeMainContainer()
|
||||||
|
.addChild(makeBreadcrumbContainer(table.name, "New"))
|
||||||
|
.addChild(generateTitleContainer(table, providerId))
|
||||||
|
.addChild(dataform)
|
||||||
|
|
||||||
|
return screen.addChild(container).json()
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,9 +25,9 @@ export default function(tables) {
|
||||||
export const ROW_DETAIL_TEMPLATE = "ROW_DETAIL_TEMPLATE"
|
export const ROW_DETAIL_TEMPLATE = "ROW_DETAIL_TEMPLATE"
|
||||||
export const rowDetailUrl = table => sanitizeUrl(`/${table.name}/:id`)
|
export const rowDetailUrl = table => sanitizeUrl(`/${table.name}/:id`)
|
||||||
|
|
||||||
function generateTitleContainer(table, title) {
|
function generateTitleContainer(table, title, providerId) {
|
||||||
// have to override style for this, its missing margin
|
// have to override style for this, its missing margin
|
||||||
const saveButton = makeSaveButton(table).normalStyle({
|
const saveButton = makeSaveButton(table, providerId).normalStyle({
|
||||||
background: "#000000",
|
background: "#000000",
|
||||||
"border-width": "0",
|
"border-width": "0",
|
||||||
"border-style": "None",
|
"border-style": "None",
|
||||||
|
@ -60,8 +60,8 @@ function generateTitleContainer(table, title) {
|
||||||
onClick: [
|
onClick: [
|
||||||
{
|
{
|
||||||
parameters: {
|
parameters: {
|
||||||
rowId: "{{ data._id }}",
|
rowId: `{{ ${providerId}._id }}`,
|
||||||
revId: "{{ data._rev }}",
|
revId: `{{ ${providerId}._rev }}`,
|
||||||
tableId: table._id,
|
tableId: table._id,
|
||||||
},
|
},
|
||||||
"##eventHandlerType": "Delete Row",
|
"##eventHandlerType": "Delete Row",
|
||||||
|
@ -82,21 +82,22 @@ function generateTitleContainer(table, title) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const createScreen = (table, heading) => {
|
const createScreen = (table, heading) => {
|
||||||
const dataform = new Component(
|
const screen = new Screen()
|
||||||
"@budibase/standard-components/dataformwide"
|
|
||||||
).instanceName("Form")
|
|
||||||
|
|
||||||
const container = makeMainContainer()
|
|
||||||
.addChild(makeBreadcrumbContainer(table.name, heading || "Edit"))
|
|
||||||
.addChild(generateTitleContainer(table, heading || "Edit Row"))
|
|
||||||
.addChild(dataform)
|
|
||||||
|
|
||||||
return new Screen()
|
|
||||||
.component("@budibase/standard-components/rowdetail")
|
.component("@budibase/standard-components/rowdetail")
|
||||||
.table(table._id)
|
.table(table._id)
|
||||||
.instanceName(`${table.name} - Detail`)
|
.instanceName(`${table.name} - Detail`)
|
||||||
.route(rowDetailUrl(table))
|
.route(rowDetailUrl(table))
|
||||||
.name("")
|
.name("")
|
||||||
.addChild(container)
|
|
||||||
.json()
|
const dataform = new Component(
|
||||||
|
"@budibase/standard-components/dataformwide"
|
||||||
|
).instanceName("Form")
|
||||||
|
|
||||||
|
const providerId = screen._json.props._id
|
||||||
|
const container = makeMainContainer()
|
||||||
|
.addChild(makeBreadcrumbContainer(table.name, heading || "Edit"))
|
||||||
|
.addChild(generateTitleContainer(table, heading || "Edit Row", providerId))
|
||||||
|
.addChild(dataform)
|
||||||
|
|
||||||
|
return screen.addChild(container).json()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { v4 } from "uuid"
|
import { uuid } from "builderStore/uuid"
|
||||||
import { BaseStructure } from "./BaseStructure"
|
import { BaseStructure } from "./BaseStructure"
|
||||||
|
|
||||||
export class Component extends BaseStructure {
|
export class Component extends BaseStructure {
|
||||||
|
@ -6,7 +6,7 @@ export class Component extends BaseStructure {
|
||||||
super(false)
|
super(false)
|
||||||
this._children = []
|
this._children = []
|
||||||
this._json = {
|
this._json = {
|
||||||
_id: v4(),
|
_id: uuid(),
|
||||||
_component: name,
|
_component: name,
|
||||||
_styles: {
|
_styles: {
|
||||||
normal: {},
|
normal: {},
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { BaseStructure } from "./BaseStructure"
|
import { BaseStructure } from "./BaseStructure"
|
||||||
|
import { uuid } from "builderStore/uuid"
|
||||||
|
|
||||||
export class Screen extends BaseStructure {
|
export class Screen extends BaseStructure {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -6,7 +7,7 @@ export class Screen extends BaseStructure {
|
||||||
this._json = {
|
this._json = {
|
||||||
layoutId: "layout_private_master",
|
layoutId: "layout_private_master",
|
||||||
props: {
|
props: {
|
||||||
_id: "",
|
_id: uuid(),
|
||||||
_component: "",
|
_component: "",
|
||||||
_styles: {
|
_styles: {
|
||||||
normal: {},
|
normal: {},
|
||||||
|
|
|
@ -78,7 +78,7 @@ export function makeBreadcrumbContainer(tableName, text, capitalise = false) {
|
||||||
.addChild(identifierText)
|
.addChild(identifierText)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function makeSaveButton(table) {
|
export function makeSaveButton(table, providerId) {
|
||||||
return new Component("@budibase/standard-components/button")
|
return new Component("@budibase/standard-components/button")
|
||||||
.normalStyle({
|
.normalStyle({
|
||||||
background: "#000000",
|
background: "#000000",
|
||||||
|
@ -100,8 +100,7 @@ export function makeSaveButton(table) {
|
||||||
onClick: [
|
onClick: [
|
||||||
{
|
{
|
||||||
parameters: {
|
parameters: {
|
||||||
contextPath: "data",
|
providerId,
|
||||||
tableId: table._id,
|
|
||||||
},
|
},
|
||||||
"##eventHandlerType": "Save Row",
|
"##eventHandlerType": "Save Row",
|
||||||
},
|
},
|
||||||
|
|
|
@ -44,14 +44,14 @@
|
||||||
<option value={provider._id}>{provider._instanceName}</option>
|
<option value={provider._id}>{provider._instanceName}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</Select>
|
</Select>
|
||||||
{/if}
|
|
||||||
|
|
||||||
{#if parameters.contextPath}
|
{#if parameters.providerId}
|
||||||
<SaveFields
|
<SaveFields
|
||||||
parameterFields={parameters.fields}
|
parameterFields={parameters.fields}
|
||||||
{schemaFields}
|
{schemaFields}
|
||||||
on:fieldschanged={onFieldsChanged} />
|
on:fieldschanged={onFieldsChanged} />
|
||||||
{/if}
|
{/if}
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
@ -426,6 +426,8 @@
|
||||||
"icon": "ri-profile-line",
|
"icon": "ri-profile-line",
|
||||||
"hasChildren": true,
|
"hasChildren": true,
|
||||||
"styleable": true,
|
"styleable": true,
|
||||||
|
"dataProvider": true,
|
||||||
|
"datasourceSetting": "table",
|
||||||
"settings": [
|
"settings": [
|
||||||
{
|
{
|
||||||
"type": "table",
|
"type": "table",
|
||||||
|
|
Loading…
Reference in New Issue