diff options
Diffstat (limited to 'src/views/collections/CollectionSchemaView.tsx')
| -rw-r--r-- | src/views/collections/CollectionSchemaView.tsx | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/views/collections/CollectionSchemaView.tsx b/src/views/collections/CollectionSchemaView.tsx index 8817cb496..6f591a1bc 100644 --- a/src/views/collections/CollectionSchemaView.tsx +++ b/src/views/collections/CollectionSchemaView.tsx @@ -11,6 +11,9 @@ import "./CollectionSchemaView.scss" import { ScrollBox } from "../../util/ScrollBox"; import { CollectionViewBase } from "./CollectionViewBase"; import { DocumentView } from "../nodes/DocumentView"; +import { EditableView } from "../EditableView"; +import { CompileScript, ToField } from "../../util/Scripting"; +import { Field } from "../../fields/Field"; @observer export class CollectionSchemaView extends CollectionViewBase { @@ -25,9 +28,35 @@ export class CollectionSchemaView extends CollectionViewBase { fieldKey: rowProps.value[1], DocumentViewForField: undefined } - return ( + let contents = ( <FieldView {...props} /> ) + return ( + <EditableView contents={contents} GetValue={() => { + let field = props.doc.Get(props.fieldKey); + if (field && field instanceof Field) { + return field.ToScriptString(); + } + return field || ""; + }} SetValue={(value: string) => { + let script = CompileScript(value); + if (!script.compiled) { + return false; + } + let field = script(); + if (field instanceof Field) { + props.doc.Set(props.fieldKey, field); + return true; + } else { + let dataField = ToField(field); + if (dataField) { + props.doc.Set(props.fieldKey, dataField); + return true; + } + } + return false; + }}></EditableView> + ) } private getTrProps: ComponentPropsGetterR = (state, rowInfo) => { @@ -74,7 +103,9 @@ export class CollectionSchemaView extends CollectionViewBase { [KS.Title, KS.Data, KS.Author]) let content; if (this.selectedIndex != -1) { - content = (<DocumentView Document={children[this.selectedIndex]} DocumentView={undefined} ContainingCollectionView={this} />) + content = ( + <DocumentView Document={children[this.selectedIndex]} DocumentView={undefined} ContainingCollectionView={this} /> + ) } else { content = <div /> } |
