diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Main.tsx | 2 | ||||
-rw-r--r-- | src/documents/Documents.ts | 8 | ||||
-rw-r--r-- | src/fields/ImageField.ts | 17 | ||||
-rw-r--r-- | src/fields/RichTextField.ts | 13 | ||||
-rw-r--r-- | src/views/nodes/DocumentView.tsx | 2 | ||||
-rw-r--r-- | src/views/nodes/FieldView.tsx | 9 |
6 files changed, 45 insertions, 6 deletions
diff --git a/src/Main.tsx b/src/Main.tsx index cc0f9f9cb..431a5db96 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -38,7 +38,7 @@ document.addEventListener("pointerdown", action(function (e: PointerEvent) { //runInAction(() => { - let doc1 = Documents.TextDocument("Hello world", { title: "hello" }); + let doc1 = Documents.TextDocument({ title: "hello" }); let doc2 = doc1.MakeDelegate(); doc2.SetField(KS.X, new NumberField(150)); doc2.SetField(KS.Y, new NumberField(20)); diff --git a/src/documents/Documents.ts b/src/documents/Documents.ts index 73cf483ef..a2d25e606 100644 --- a/src/documents/Documents.ts +++ b/src/documents/Documents.ts @@ -6,6 +6,8 @@ import { ListField } from "../fields/ListField"; import { FieldTextBox } from "../views/nodes/FieldTextBox"; import { CollectionDockingView } from "../views/collections/CollectionDockingView"; import { CollectionSchemaView } from "../views/collections/CollectionSchemaView"; +import { ImageField } from "../fields/ImageField"; +import { RichTextField } from "../fields/RichTextField"; interface DocumentOptions { x?: number; @@ -51,10 +53,10 @@ export namespace Documents { return textProto; } - export function TextDocument(text: string, options: DocumentOptions = {}): Document { + export function TextDocument(options: DocumentOptions = {}): Document { let doc = GetTextPrototype().MakeDelegate(); setupOptions(doc, options); - // doc.SetField(KeyStore.Data, new TextField(text)); + doc.SetField(KeyStore.Data, new RichTextField()); return doc; } @@ -120,7 +122,7 @@ export namespace Documents { export function ImageDocument(url: string, options: DocumentOptions = {}): Document { let doc = GetImagePrototype().MakeDelegate(); setupOptions(doc, options); - doc.SetField(KeyStore.Data, new TextField(url)); + doc.SetField(KeyStore.Data, new ImageField(new URL(url))); return doc; } diff --git a/src/fields/ImageField.ts b/src/fields/ImageField.ts new file mode 100644 index 000000000..9bfacf231 --- /dev/null +++ b/src/fields/ImageField.ts @@ -0,0 +1,17 @@ +import { BasicField } from "./BasicField"; +import { Field } from "./Field"; + +export class ImageField extends BasicField<URL> { + constructor(data: URL) { + super(data); + } + + toString(): string { + return this.Data.href; + } + + Copy(): Field { + return new ImageField(this.Data); + } + +}
\ No newline at end of file diff --git a/src/fields/RichTextField.ts b/src/fields/RichTextField.ts new file mode 100644 index 000000000..4cf5c99a7 --- /dev/null +++ b/src/fields/RichTextField.ts @@ -0,0 +1,13 @@ +import { BasicField } from "./BasicField"; +import { Field } from "./Field"; + +export class RichTextField extends BasicField<string> { + constructor(data: string = "") { + super(data); + } + + Copy(): Field { + return new RichTextField(this.Data); + } + +}
\ No newline at end of file diff --git a/src/views/nodes/DocumentView.tsx b/src/views/nodes/DocumentView.tsx index 634cd78be..cbf09abae 100644 --- a/src/views/nodes/DocumentView.tsx +++ b/src/views/nodes/DocumentView.tsx @@ -17,8 +17,6 @@ import { ContextMenu } from "../ContextMenu"; import { FieldTextBox } from "../nodes/FieldTextBox"; import "./NodeView.scss"; import React = require("react"); -import { cpus } from "os"; -import { relative } from "path"; const JsxParser = require('react-jsx-parser').default;//TODO Why does this need to be imported like this? interface DocumentViewProps { diff --git a/src/views/nodes/FieldView.tsx b/src/views/nodes/FieldView.tsx index 1c4164089..54e78e3ec 100644 --- a/src/views/nodes/FieldView.tsx +++ b/src/views/nodes/FieldView.tsx @@ -5,6 +5,9 @@ import { computed } from "mobx"; import { Field, Opt } from "../../fields/Field"; import { TextField } from "../../fields/TextField"; import { NumberField } from "../../fields/NumberField"; +import { RichTextField } from "../../fields/RichTextField"; +import { FieldTextBox } from "./FieldTextBox"; +import { ImageField } from "../../fields/ImageField"; @observer export class FieldView extends React.Component<DocumentFieldViewProps> { @@ -21,6 +24,12 @@ export class FieldView extends React.Component<DocumentFieldViewProps> { if (field instanceof TextField) { return <p>{field.Data}</p> } + else if (field instanceof RichTextField) { + return <FieldTextBox {...this.props} /> + } + else if (field instanceof ImageField) { + return <img src={field.Data.href}></img> + } else if (field instanceof NumberField) { return <p>{field.Data}</p> } else { |