aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2020-02-04 10:38:14 -0500
committerbob <bcz@cs.brown.edu>2020-02-04 10:38:14 -0500
commit92a5efa6876db1a497640aeb13fef5c8d99b102d (patch)
tree7d10bfd9e0cfb3cd5c715410c645248571fdaff3 /src
parent72f50feacb1c023d093b8169ef85e1e7773aa483 (diff)
fixing layout stuff
Diffstat (limited to 'src')
-rw-r--r--src/client/views/MetadataEntryMenu.tsx18
-rw-r--r--src/client/views/TemplateMenu.tsx18
-rw-r--r--src/client/views/collections/CollectionTimeView.tsx2
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx15
-rw-r--r--src/new_fields/Doc.ts14
-rw-r--r--src/new_fields/util.ts46
6 files changed, 58 insertions, 55 deletions
diff --git a/src/client/views/MetadataEntryMenu.tsx b/src/client/views/MetadataEntryMenu.tsx
index 23b21ae0c..ac152bf67 100644
--- a/src/client/views/MetadataEntryMenu.tsx
+++ b/src/client/views/MetadataEntryMenu.tsx
@@ -133,23 +133,7 @@ export class MetadataEntryMenu extends React.Component<MetadataEntryProps>{
}
getKeySuggestions = async (value: string): Promise<string[]> => {
- value = value.toLowerCase();
- let docs = this.props.docs;
- if (typeof docs === "function") {
- if (this.props.suggestWithFunction) {
- docs = docs();
- } else {
- return [];
- }
- }
- docs = await docs;
- if (docs instanceof Doc) {
- return Object.keys(docs).filter(key => key.toLowerCase().startsWith(value));
- } else {
- const keys = new Set<string>();
- docs.forEach(doc => Doc.allKeys(doc).forEach(key => keys.add(key)));
- return Array.from(keys).filter(key => key.toLowerCase().startsWith(value));
- }
+ return [];
}
getSuggestionValue = (suggestion: string) => suggestion;
diff --git a/src/client/views/TemplateMenu.tsx b/src/client/views/TemplateMenu.tsx
index f61eb9cd0..9b0199eac 100644
--- a/src/client/views/TemplateMenu.tsx
+++ b/src/client/views/TemplateMenu.tsx
@@ -94,15 +94,15 @@ export class TemplateMenu extends React.Component<TemplateMenuProps> {
}
}
componentDidMount() {
- !this._addedKeys && (this._addedKeys = new ObservableSet());
- Array.from(Object.keys(Doc.GetProto(this.props.docViews[0].props.Document))).
- filter(key => key.startsWith("layout_")).
- map(key => runInAction(() => this._addedKeys.add(key.replace("layout_", ""))));
- DocListCast(Cast(CurrentUserUtils.UserDocument.expandingButtons, Doc, null)?.data)?.map(btnDoc => {
- if (StrCast(Cast(btnDoc?.dragFactory, Doc, null)?.title)) {
- runInAction(() => this._addedKeys.add(StrCast(Cast(btnDoc?.dragFactory, Doc, null)?.title)));
- }
- });
+ // !this._addedKeys && (this._addedKeys = new ObservableSet());
+ // Array.from(Object.keys(Doc.GetProto(this.props.docViews[0].props.Document))).
+ // filter(key => key.startsWith("layout_")).
+ // map(key => runInAction(() => this._addedKeys.add(key.replace("layout_", ""))));
+ // DocListCast(Cast(CurrentUserUtils.UserDocument.expandingButtons, Doc, null)?.data)?.map(btnDoc => {
+ // if (StrCast(Cast(btnDoc?.dragFactory, Doc, null)?.title)) {
+ // runInAction(() => this._addedKeys.add(StrCast(Cast(btnDoc?.dragFactory, Doc, null)?.title)));
+ // }
+ // });
}
_addedKeys = new ObservableSet();
diff --git a/src/client/views/collections/CollectionTimeView.tsx b/src/client/views/collections/CollectionTimeView.tsx
index 253dfa890..d1e2844df 100644
--- a/src/client/views/collections/CollectionTimeView.tsx
+++ b/src/client/views/collections/CollectionTimeView.tsx
@@ -43,7 +43,7 @@ export class CollectionTimeView extends CollectionSubView(doc => doc) {
@computed get _allFacets() {
const facets = new Set<string>();
- this.childDocs.forEach(child => Object.keys(Doc.GetProto(child)).forEach(key => facets.add(key)));
+ //this.childDocs.forEach(child => Object.keys(Doc.GetProto(child)).forEach(key => facets.add(key)));
return facets.toArray();
}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index 6453cfe17..63544a637 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -824,13 +824,14 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
}
get doLayoutComputation() {
const { newPool, computedElementData } = this.doInternalLayoutComputation;
- Array.from(newPool.keys()).map(key => {
- const lastPos = this._cachedPool.get(key); // last computed pos
- const newPos = newPool.get(key);
- if (!lastPos || newPos.x !== lastPos.x || newPos.y !== lastPos.y || newPos.z !== lastPos.z || newPos.zIndex !== lastPos.zIndex || newPos.width !== lastPos.width || newPos.height !== lastPos.height) {
- runInAction(() => this._layoutPoolData.set(key, { transition: "transform 1s", ...newPos }));
- }
- });
+ runInAction(() =>
+ Array.from(newPool.keys()).map(key => {
+ const lastPos = this._cachedPool.get(key); // last computed pos
+ const newPos = newPool.get(key);
+ if (!lastPos || newPos.x !== lastPos.x || newPos.y !== lastPos.y || newPos.z !== lastPos.z || newPos.zIndex !== lastPos.zIndex || newPos.width !== lastPos.width || newPos.height !== lastPos.height) {
+ this._layoutPoolData.set(key, newPos);
+ }
+ }));
this._cachedPool.clear();
Array.from(newPool.keys()).forEach(k => this._cachedPool.set(k, newPool.get(k)));
this.childLayoutPairs.filter((pair, i) => this.isCurrent(pair.layout)).forEach(pair =>
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts
index 4dcdc6581..7033b23f1 100644
--- a/src/new_fields/Doc.ts
+++ b/src/new_fields/Doc.ts
@@ -1,4 +1,4 @@
-import { observable, ObservableMap, runInAction, action } from "mobx";
+import { observable, ObservableMap, runInAction, action, computed } from "mobx";
import { alias, map, serializable } from "serializr";
import { DocServer } from "../client/DocServer";
import { DocumentType } from "../client/documents/DocumentTypes";
@@ -89,6 +89,7 @@ export function DocListCast(field: FieldResult): Doc[] {
export const WidthSym = Symbol("Width");
export const HeightSym = Symbol("Height");
export const DataSym = Symbol("Data");
+export const LayoutSym = Symbol("Layout");
export const UpdatingFromServer = Symbol("UpdatingFromServer");
const CachedUpdates = Symbol("Cached updates");
@@ -167,6 +168,17 @@ export class Doc extends RefField {
public [WidthSym] = () => NumCast(this[SelfProxy]._width);
public [HeightSym] = () => NumCast(this[SelfProxy]._height);
public get [DataSym]() { return Cast(this[SelfProxy].resolvedDataDoc, Doc, null) || this[SelfProxy]; }
+ @computed public get __LAYOUT__() {
+ const layoutKey = StrCast(this[SelfProxy].layoutKey);
+ const resolvedLayout = Cast(this[SelfProxy][layoutKey], Doc);
+ if (resolvedLayout instanceof Doc) {
+ let x = resolvedLayout[Id];
+ let layout = (resolvedLayout.layout as string).split("'")[1];
+ const layoutDoc = this[SelfProxy][layout + "-layout[" + x + "]"];
+ return layoutDoc || this[SelfProxy];
+ }
+ return undefined;
+ }
[ToScriptString]() {
return "invalid";
diff --git a/src/new_fields/util.ts b/src/new_fields/util.ts
index 3495a934d..1641ecc8a 100644
--- a/src/new_fields/util.ts
+++ b/src/new_fields/util.ts
@@ -1,5 +1,5 @@
import { UndoManager } from "../client/util/UndoManager";
-import { Doc, Field, FieldResult, UpdatingFromServer } from "./Doc";
+import { Doc, Field, FieldResult, UpdatingFromServer, LayoutSym } from "./Doc";
import { SerializationHelper } from "../client/util/SerializationHelper";
import { ProxyField, PrefetchProxy } from "./Proxy";
import { RefField } from "./RefField";
@@ -104,41 +104,47 @@ let layoutProps = ["panX", "panY", "width", "height", "nativeWidth", "nativeHeig
"LODdisable", "dropAction", "chromeStatus", "viewType", "gridGap", "xMargin", "yMargin", "autoHeight"];
export function setter(target: any, in_prop: string | symbol | number, value: any, receiver: any): boolean {
let prop = in_prop;
- if (typeof prop === "string" && prop !== "__id" && prop !== "__fields" &&
+ if (typeof prop === "string" && prop !== "__id" && prop !== "__LAYOUT__" && prop !== "__fields" &&
((prop as string).startsWith("_") || layoutProps.includes(prop))) {
if (!prop.startsWith("_")) {
console.log(prop + " is deprecated - switch to _" + prop);
prop = "_" + prop;
}
- const resolvedLayout = getFieldImpl(target, getFieldImpl(target, "layoutKey", receiver), receiver);
- if (resolvedLayout instanceof Doc) {
- let x = resolvedLayout[Id];
- let layout = (resolvedLayout.layout as string).split("'")[1];
- let expanded = getFieldImpl(target, layout + "-layout[" + x + "]", receiver);
- expanded && (expanded[prop] = value);
- // resolvedLayout[prop] = value;
- return true;
- }
+ const self = target[Self];
+ const layoutDoc = (self || target).__LAYOUT__;
+ if (layoutDoc) layoutDoc[prop] = value;
+ // const resolvedLayout = getFieldImpl(target, getFieldImpl(target, "layoutKey", receiver), receiver);
+ // if (resolvedLayout instanceof Doc) {
+ // let x = resolvedLayout[Id];
+ // let layout = (resolvedLayout.layout as string).split("'")[1];
+ // let expanded = getFieldImpl(target, layout + "-layout[" + x + "]", receiver);
+ // expanded && (expanded[prop] = value);
+ // // resolvedLayout[prop] = value;
+ // return true;
+ // }
}
return _setter(target, prop, value, receiver);
}
export function getter(target: any, in_prop: string | symbol | number, receiver: any): any {
let prop = in_prop;
- if (typeof prop === "string" && prop !== "__id" && prop !== "__fields" &&
+ if (typeof prop === "string" && prop !== "__id" && prop !== "__LAYOUT__" && prop !== "__fields" &&
((prop as string).startsWith("_") || layoutProps.includes(prop))) {
if (!prop.startsWith("_")) {
console.log(prop + " is deprecated - switch to _" + prop);
prop = "_" + prop;
}
- const resolvedLayout = getFieldImpl(target, getFieldImpl(target, "layoutKey", receiver), receiver);
- if (resolvedLayout instanceof Doc) {
- let x = resolvedLayout[Id];
- let layout = (resolvedLayout.layout as string).split("'")[1];
- let expanded = getFieldImpl(target, layout + "-layout[" + x + "]", receiver);
- return (expanded || resolvedLayout)?.[prop];
- //return resolvedLayout[prop];
- }
+ const self = target[Self];
+ const layoutDoc = (self || target).__LAYOUT__;
+ if (layoutDoc) return layoutDoc[prop];
+ // const resolvedLayout = getFieldImpl(target, getFieldImpl(target, "layoutKey", receiver), receiver);
+ // if (resolvedLayout instanceof Doc) {
+ // let x = resolvedLayout[Id];
+ // let layout = (resolvedLayout.layout as string).split("'")[1];
+ // let expanded = getFieldImpl(target, layout + "-layout[" + x + "]", receiver);
+ // return (expanded || resolvedLayout)?.[prop];
+ // //return resolvedLayout[prop];
+ // }
}
if (prop === "then") {//If we're being awaited
return undefined;