aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/CollectionLinearView.tsx
diff options
context:
space:
mode:
authorStanley Yip <stanley_yip@brown.edu>2020-02-09 14:58:57 -0500
committerStanley Yip <stanley_yip@brown.edu>2020-02-09 14:58:57 -0500
commitf6179334d6f2942631caa17b7c8ae2531d87c7c4 (patch)
tree091da0ef7bedb900c958c28cebe4058fade644cf /src/client/views/CollectionLinearView.tsx
parent07141291bee793955d7061f4e479942d7aceda67 (diff)
parent87167fd126e161b29d8d798a5f04e3cf159aae16 (diff)
recommender system works
Diffstat (limited to 'src/client/views/CollectionLinearView.tsx')
-rw-r--r--src/client/views/CollectionLinearView.tsx110
1 files changed, 0 insertions, 110 deletions
diff --git a/src/client/views/CollectionLinearView.tsx b/src/client/views/CollectionLinearView.tsx
deleted file mode 100644
index 7c6d33d36..000000000
--- a/src/client/views/CollectionLinearView.tsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import { action, IReactionDisposer, observable, reaction } from 'mobx';
-import { observer } from 'mobx-react';
-import * as React from 'react';
-import { Doc, HeightSym, WidthSym } from '../../new_fields/Doc';
-import { makeInterface } from '../../new_fields/Schema';
-import { BoolCast, NumCast, StrCast } from '../../new_fields/Types';
-import { emptyFunction, returnEmptyString, returnOne, returnTrue, Utils } from '../../Utils';
-import { DragManager } from '../util/DragManager';
-import { Transform } from '../util/Transform';
-import "./CollectionLinearView.scss";
-import { CollectionViewType } from './collections/CollectionView';
-import { CollectionSubView } from './collections/CollectionSubView';
-import { DocumentView } from './nodes/DocumentView';
-import { documentSchema } from '../../new_fields/documentSchemas';
-import { Id } from '../../new_fields/FieldSymbols';
-
-
-type LinearDocument = makeInterface<[typeof documentSchema,]>;
-const LinearDocument = makeInterface(documentSchema);
-
-@observer
-export class CollectionLinearView extends CollectionSubView(LinearDocument) {
- @observable public addMenuToggle = React.createRef<HTMLInputElement>();
- private _dropDisposer?: DragManager.DragDropDisposer;
- private _heightDisposer?: IReactionDisposer;
- private _spacing = 20;
-
- componentWillUnmount() {
- this._dropDisposer && this._dropDisposer();
- this._heightDisposer && this._heightDisposer();
- }
-
- componentDidMount() {
- // is there any reason this needs to exist? -syip. yes, it handles autoHeight for stacking views (masonry isn't yet supported).
- this._heightDisposer = reaction(() => NumCast(this.props.Document.height, 0) + this.childDocs.length + (this.props.Document.isExpanded ? 1 : 0),
- () => this.props.Document.width = 18 + (this.props.Document.isExpanded ? this.childDocs.length * (this.props.Document[HeightSym]()) : 10),
- { fireImmediately: true }
- );
- }
- protected createDropTarget = (ele: HTMLDivElement) => { //used for stacking and masonry view
- this._dropDisposer && this._dropDisposer();
- if (ele) {
- this._dropDisposer = DragManager.MakeDropTarget(ele, { handlers: { drop: this.drop.bind(this) } });
- }
- }
-
- public isCurrent(doc: Doc) { return !doc.isMinimized && (Math.abs(NumCast(doc.displayTimecode, -1) - NumCast(this.Document.currentTimecode, -1)) < 1.5 || NumCast(doc.displayTimecode, -1) === -1); }
-
- dimension = () => NumCast(this.props.Document.height); // 2 * the padding
- getTransform = (ele: React.RefObject<HTMLDivElement>) => () => {
- if (!ele.current) return Transform.Identity();
- let { scale, translateX, translateY } = Utils.GetScreenTransform(ele.current);
- return new Transform(-translateX, -translateY, 1 / scale);
- }
- render() {
- let guid = Utils.GenerateGuid();
- return <div className="collectionLinearView-outer">
- <div className="collectionLinearView" ref={this.createDropTarget} >
- <input id={`${guid}`} type="checkbox" checked={BoolCast(this.props.Document.isExpanded)} ref={this.addMenuToggle}
- onChange={action((e: any) => this.props.Document.isExpanded = this.addMenuToggle.current!.checked)} />
- <label htmlFor={`${guid}`} style={{ marginTop: "auto", marginBottom: "auto", background: StrCast(this.props.Document.backgroundColor, "black") === StrCast(this.props.Document.color, "white") ? "black" : StrCast(this.props.Document.backgroundColor, "black") }} title="Close Menu"><p>+</p></label>
-
- <div className="collectionLinearView-content">
- {this.childLayoutPairs.filter(pair => this.isCurrent(pair.layout)).map(pair => {
- let nested = pair.layout.viewType === CollectionViewType.Linear;
- let dref = React.createRef<HTMLDivElement>();
- let nativeWidth = NumCast(pair.layout.nativeWidth, this.dimension());
- let scalingContent = nested ? 1 : this.dimension() / (this._spacing + nativeWidth);
- let scalingBox = nested ? 1 : this.dimension() / nativeWidth;
- let deltaSize = nativeWidth * scalingBox - nativeWidth * scalingContent;
- return <div className={`collectionLinearView-docBtn` + (pair.layout.onClick || pair.layout.onDragStart ? "-scalable" : "")} key={pair.layout[Id]} ref={dref}
- style={{
- width: nested ? pair.layout[WidthSym]() : this.dimension(),
- height: nested && pair.layout.isExpanded ? pair.layout[HeightSym]() : this.dimension(),
- transform: nested ? undefined : `translate(${deltaSize / 2}px, ${deltaSize / 2}px)`
- }} >
- <DocumentView
- Document={pair.layout}
- DataDoc={pair.data}
- addDocument={this.props.addDocument}
- moveDocument={this.props.moveDocument}
- addDocTab={this.props.addDocTab}
- pinToPres={emptyFunction}
- removeDocument={this.props.removeDocument}
- ruleProvider={undefined}
- onClick={undefined}
- ScreenToLocalTransform={this.getTransform(dref)}
- ContentScaling={() => scalingContent} // ugh - need to get rid of this inline function to avoid recomputing
- PanelWidth={() => nested ? pair.layout[WidthSym]() : this.dimension()}
- PanelHeight={() => nested ? pair.layout[HeightSym]() : this.dimension()}
- renderDepth={this.props.renderDepth + 1}
- focus={emptyFunction}
- backgroundColor={returnEmptyString}
- parentActive={returnTrue}
- whenActiveChanged={emptyFunction}
- bringToFront={emptyFunction}
- ContainingCollectionView={undefined}
- ContainingCollectionDoc={undefined}
- zoomToScale={emptyFunction}
- getScale={returnOne}>
- </DocumentView>
- </div>;
- })}
- {/* <li key="undoTest"><button className="add-button round-button" title="Click if undo isn't working" onClick={() => UndoManager.TraceOpenBatches()}><FontAwesomeIcon icon="exclamation" size="sm" /></button></li> */}
-
- </div>
- </div>
- </div>;
- }
-} \ No newline at end of file