aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Main.tsx2
-rw-r--r--src/documents/Documents.ts8
-rw-r--r--src/fields/ImageField.ts17
-rw-r--r--src/fields/RichTextField.ts13
-rw-r--r--src/views/nodes/DocumentView.tsx2
-rw-r--r--src/views/nodes/FieldView.tsx9
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 {