aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
diff options
context:
space:
mode:
authormehekj <mehek.jethani@gmail.com>2023-04-19 21:31:59 -0400
committermehekj <mehek.jethani@gmail.com>2023-04-19 21:31:59 -0400
commit8c5e898b89a6634f54a3961ba3693948c7d991d6 (patch)
tree012b2e1ac6d867e093b5ff9c6eea698b410f32bf /src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
parent0c3caeeb9745e615080cc581feb0dcca742ace3c (diff)
added date fieldinfo, fixed column drag&drop
Diffstat (limited to 'src/client/views/collections/collectionSchema/CollectionSchemaView.tsx')
-rw-r--r--src/client/views/collections/collectionSchema/CollectionSchemaView.tsx75
1 files changed, 57 insertions, 18 deletions
diff --git a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
index d3992d12c..7cb3c6d93 100644
--- a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
+++ b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
@@ -24,13 +24,13 @@ import { CollectionSubView } from '../CollectionSubView';
import './CollectionSchemaView.scss';
import { SchemaColumnHeader } from './SchemaColumnHeader';
import { SchemaRowBox } from './SchemaRowBox';
+import { Colors } from '../../global/globalEnums';
export enum ColumnType {
Number,
String,
Boolean,
- Doc,
- Image,
+ Date,
}
const defaultColumnKeys: string[] = ['title', 'type', 'author', 'creationDate', 'text'];
@@ -286,18 +286,13 @@ export class CollectionSchemaView extends CollectionSubView() {
@undoBatch
@action
- swapColumns = (index1: number, index2: number) => {
- const tempKey = this.columnKeys[index1];
- const tempWidth = this.storedColumnWidths[index1];
-
- let currKeys = this.columnKeys;
- currKeys[index1] = currKeys[index2];
- currKeys[index2] = tempKey;
+ moveColumn = (fromIndex: number, toIndex: number) => {
+ let currKeys = this.columnKeys.slice();
+ currKeys.splice(toIndex, 0, currKeys.splice(fromIndex, 1)[0]);
this.layoutDoc.columnKeys = new List<string>(currKeys);
- let currWidths = this.storedColumnWidths;
- currWidths[index1] = currWidths[index2];
- currWidths[index2] = tempWidth;
+ let currWidths = this.storedColumnWidths.slice();
+ currWidths.splice(toIndex, 0, currWidths.splice(fromIndex, 1)[0]);
this.layoutDoc.columnWidths = new List<number>(currWidths);
};
@@ -310,10 +305,45 @@ export class CollectionSchemaView extends CollectionSubView() {
});
DragManager.StartColumnDrag(dragEles, dragData, e.x, e.y);
+ document.removeEventListener('pointermove', this.highlightDropColumn);
+ document.addEventListener('pointermove', this.highlightDropColumn);
+ let stopHighlight = (e: PointerEvent) => {
+ document.removeEventListener('pointermove', this.highlightDropColumn);
+ document.removeEventListener('pointerup', stopHighlight);
+ };
+ document.addEventListener('pointerup', stopHighlight);
+
return true;
};
@action
+ highlightDropColumn = (e: PointerEvent) => {
+ e.stopPropagation();
+ const mouseX = this.props.ScreenToLocalTransform().transformPoint(e.clientX, e.clientY)[0];
+ let index: number | undefined;
+ this.displayColumnWidths.reduce((total, curr, i) => {
+ if (total <= mouseX && total + curr >= mouseX) {
+ if (mouseX <= total + curr / 2) index = i;
+ else index = i + 1;
+ }
+ return total + curr;
+ }, CollectionSchemaView._rowMenuWidth);
+
+ this._colEles.forEach((colRef, i) => {
+ let leftStyle = '';
+ let rightStyle = '';
+ if (i + 1 === index) rightStyle = `solid 2px ${Colors.MEDIUM_BLUE}`;
+ if (i === index && i === 0) leftStyle = `solid 2px ${Colors.MEDIUM_BLUE}`;
+ colRef.style.borderLeft = leftStyle;
+ colRef.style.borderRight = rightStyle;
+ this.childDocs.forEach(doc => {
+ this._rowEles.get(doc).children[1].children[i].style.borderLeft = leftStyle;
+ this._rowEles.get(doc).children[1].children[i].style.borderRight = rightStyle;
+ });
+ });
+ };
+
+ @action
addRowRef = (doc: Doc, ref: HTMLDivElement) => this._rowEles.set(doc, ref);
@action
@@ -354,15 +384,25 @@ export class CollectionSchemaView extends CollectionSubView() {
if (de.complete.columnDragData) {
e.stopPropagation();
const mouseX = this.props.ScreenToLocalTransform().transformPoint(de.x, de.y)[0];
- let i = de.complete.columnDragData.colIndex;
- this.displayColumnWidths.reduce((total, curr, index) => {
+ let index = de.complete.columnDragData.colIndex;
+ this.displayColumnWidths.reduce((total, curr, i) => {
if (total <= mouseX && total + curr >= mouseX) {
- i = index;
+ if (mouseX <= total + curr / 2) index = i;
+ else index = i + 1;
}
return total + curr;
}, CollectionSchemaView._rowMenuWidth);
- this.swapColumns(de.complete.columnDragData.colIndex, i);
- e.stopPropagation();
+ this.moveColumn(de.complete.columnDragData.colIndex, index);
+
+ this._colEles.forEach((colRef, i) => {
+ colRef.style.borderLeft = '';
+ colRef.style.borderRight = '';
+ this.childDocs.forEach(doc => {
+ this._rowEles.get(doc).children[1].children[i].style.borderLeft = '';
+ this._rowEles.get(doc).children[1].children[i].style.borderRight = '';
+ });
+ });
+
return true;
}
const draggedDocs = de.complete.docDragData?.draggedDocuments;
@@ -791,7 +831,6 @@ export class CollectionSchemaView extends CollectionSubView() {
{this._columnMenuIndex !== undefined && this.renderColumnMenu}
{this._filterColumnIndex !== undefined && this.renderFilterMenu}
<CollectionSchemaViewDocs schema={this} childDocs={this.sortedDocsFunc} />
-
<EditableView GetValue={returnEmptyString} SetValue={this.addNewTextDoc} placeholder={"Type ':' for commands"} contents={'+ New Node'} menuCallback={this.menuCallback} height={CollectionSchemaView._newNodeInputHeight} />
</div>
{this.previewWidth > 0 && <div className="schema-preview-divider" style={{ width: CollectionSchemaView._previewDividerWidth }} onPointerDown={this.onDividerDown}></div>}