aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
diff options
context:
space:
mode:
authormehekj <mehek.jethani@gmail.com>2023-01-28 23:27:17 -0500
committermehekj <mehek.jethani@gmail.com>2023-01-28 23:27:17 -0500
commit6c58ca9d473103624be82c6f2da90f22bafd7b98 (patch)
tree02b1ac45e68f3e61b54f22a1792d7241cb3b4c19 /src/client/views/collections/collectionSchema/SchemaRowBox.tsx
parent9f139c7f0f571bdfea8ce99fc0a507724eb8fd74 (diff)
version without schemarow as documentview
Diffstat (limited to 'src/client/views/collections/collectionSchema/SchemaRowBox.tsx')
-rw-r--r--src/client/views/collections/collectionSchema/SchemaRowBox.tsx88
1 files changed, 29 insertions, 59 deletions
diff --git a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
index f790e9dbf..2cf0a1b79 100644
--- a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
+++ b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
@@ -1,20 +1,17 @@
import React = require('react');
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { action, computed, ObservableMap, ObservableSet } from 'mobx';
+import { action, ObservableSet } from 'mobx';
import { observer } from 'mobx-react';
-import { Doc, StrListCast } from '../../../../fields/Doc';
+import { Doc } from '../../../../fields/Doc';
+import { DragManager } from '../../../util/DragManager';
import { undoBatch } from '../../../util/UndoManager';
import { ViewBoxBaseComponent } from '../../DocComponent';
import { Colors } from '../../global/globalEnums';
-import { FieldView, FieldViewProps } from '../../nodes/FieldView';
+import { OpenWhere } from '../../nodes/DocumentView';
+import { FieldViewProps } from '../../nodes/FieldView';
import './CollectionSchemaView.scss';
import { SchemaTableCell } from './SchemaTableCell';
-import { emptyFunction, setupMoveUpEvents } from '../../../../Utils';
-import { DragManager } from '../../../util/DragManager';
-import { OpenWhere } from '../../nodes/DocumentView';
-import { Cast } from '../../../../fields/Types';
-import { listSpec } from '../../../../fields/Schema';
-import { CollectionSchemaView } from './CollectionSchemaView';
+import { setupMoveUpEvents, emptyFunction } from '../../../../Utils';
export interface SchemaRowBoxProps extends FieldViewProps {
rowIndex: number;
@@ -30,61 +27,37 @@ export interface SchemaRowBoxProps extends FieldViewProps {
}
@observer
-export class SchemaRowBox extends ViewBoxBaseComponent<FieldViewProps>() {
- public static LayoutString(fieldKey: string) {
- return FieldView.LayoutString(SchemaRowBox, fieldKey);
- }
-
+export class SchemaRowBox extends ViewBoxBaseComponent<SchemaRowBoxProps>() {
private _ref: HTMLDivElement | null = null;
bounds = () => this._ref?.getBoundingClientRect();
- @computed get columnKeys() {
- return StrListCast(this.props.ContainingCollectionDoc?.columnKeys);
- }
-
- @computed get storedColumnWidths() {
- let widths = Cast(
- this.props.ContainingCollectionDoc?.columnWidths,
- listSpec('number'),
- this.columnKeys.map(() => (this.props.PanelWidth() - CollectionSchemaView._rowMenuWidth) / this.columnKeys.length)
- );
-
- const totalWidth = widths.reduce((sum, width) => sum + width, 0);
- if (totalWidth !== this.props.PanelWidth() - CollectionSchemaView._rowMenuWidth) {
- widths = widths.map(w => {
- const proportion = w / totalWidth;
- return proportion * (this.props.PanelWidth() - CollectionSchemaView._rowMenuWidth);
- });
- }
-
- return widths;
- }
+ isSelected = () => this.props.selectedDocs.has(this.props.Document);
@action
onRowPointerDown = (e: React.PointerEvent) => {
e.stopPropagation();
- // setupMoveUpEvents(
- // this,
- // e,
- // e => this.props.startDrag(e, this.props.Document, this._ref!, this.props.rowIndex),
- // emptyFunction,
- // e => this.props.selectRow(e, this.props.Document, this._ref!, this.props.rowIndex)
- // );
+ setupMoveUpEvents(
+ this,
+ e,
+ e => this.props.startDrag(e, this.props.Document, this._ref!, this.props.rowIndex),
+ emptyFunction,
+ e => this.props.selectRow(e, this.props.Document, this._ref!, this.props.rowIndex)
+ );
};
onPointerEnter = (e: any) => {
- // if (!this.props.dragging) return;
+ if (!this.props.dragging) return;
document.removeEventListener('pointermove', this.onPointerMove);
document.addEventListener('pointermove', this.onPointerMove);
};
onPointerMove = (e: any) => {
- // if (!this.props.dragging) return;
+ if (!this.props.dragging) return;
let dragIsRow: boolean = true;
DragManager.docsBeingDragged.forEach(doc => {
- // dragIsRow = this.props.selectedDocs.has(doc);
+ dragIsRow = this.props.selectedDocs.has(doc);
});
if (this._ref && dragIsRow) {
const rect = this._ref.getBoundingClientRect();
@@ -94,11 +67,11 @@ export class SchemaRowBox extends ViewBoxBaseComponent<FieldViewProps>() {
if (y <= halfLine) {
this._ref.style.borderTop = `solid 2px ${Colors.MEDIUM_BLUE}`;
this._ref.style.borderBottom = '0px';
- // this.props.dropIndex(this.props.rowIndex);
+ this.props.dropIndex(this.props.rowIndex);
} else if (y > halfLine) {
this._ref.style.borderTop = '0px';
this._ref.style.borderBottom = `solid 2px ${Colors.MEDIUM_BLUE}`;
- // this.props.dropIndex(this.props.rowIndex + 1);
+ this.props.dropIndex(this.props.rowIndex + 1);
}
}
};
@@ -115,22 +88,19 @@ export class SchemaRowBox extends ViewBoxBaseComponent<FieldViewProps>() {
return (
<div
className="schema-row"
- style={this.props.isSelected() ? { backgroundColor: Colors.LIGHT_BLUE } : {}}
- // style={this.isSelected() ? { backgroundColor: Colors.LIGHT_BLUE, opacity: this.props.dragging ? 0.5 : 1 } : {}}
- // onPointerDown={this.onRowPointerDown}
- // onPointerEnter={this.onPointerEnter}
+ style={this.isSelected() ? { backgroundColor: Colors.LIGHT_BLUE, opacity: this.props.dragging ? 0.5 : 1 } : {}}
+ onPointerDown={this.onRowPointerDown}
+ onPointerEnter={this.onPointerEnter}
onPointerLeave={this.onPointerLeave}
ref={(row: HTMLDivElement | null) => {
- // row && this.props.addRowRef(this.props.Document, row);
+ row && this.props.addRowRef(this.props.Document, row);
this._ref = row;
}}>
<div
className="row-menu"
- style={
- {
- /* width: this.props.rowMenuWidth */
- }
- }>
+ style={{
+ width: this.props.rowMenuWidth,
+ }}>
<div
className="schema-row-button"
onPointerDown={undoBatch(e => {
@@ -149,8 +119,8 @@ export class SchemaRowBox extends ViewBoxBaseComponent<FieldViewProps>() {
</div>
</div>
<div className="row-cells">
- {this.columnKeys.map((key, index) => (
- <SchemaTableCell key={key} Document={this.props.Document} fieldKey={key} columnWidth={this.storedColumnWidths[index]} />
+ {this.props.columnKeys.map((key, index) => (
+ <SchemaTableCell key={key} Document={this.props.Document} fieldKey={key} columnWidth={this.props.columnWidths[index]} />
))}
</div>
</div>