aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/views/EditableView.tsx1
-rw-r--r--src/client/views/collections/collectionSchema/CollectionSchemaView.tsx19
-rw-r--r--src/client/views/collections/collectionSchema/SchemaCellField.tsx8
-rw-r--r--src/client/views/collections/collectionSchema/SchemaRowBox.tsx13
-rw-r--r--src/client/views/collections/collectionSchema/SchemaTableCell.tsx10
5 files changed, 26 insertions, 25 deletions
diff --git a/src/client/views/EditableView.tsx b/src/client/views/EditableView.tsx
index 0c09e12de..af6a43555 100644
--- a/src/client/views/EditableView.tsx
+++ b/src/client/views/EditableView.tsx
@@ -206,7 +206,6 @@ export class EditableView extends ObservableReactComponent<EditableProps> {
@action
finalizeEdit(value: string, shiftDown: boolean, lostFocus: boolean, enterKey: boolean) {
- //if (invalid) raise error
if (this._props.SetValue(value, shiftDown, enterKey)) {
this._editing = false;
this._props.isEditingCallback?.(false);
diff --git a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
index 7a90b3505..b81cfa821 100644
--- a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
+++ b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
@@ -606,12 +606,24 @@ export class CollectionSchemaView extends CollectionSubView() {
return cells;
}
+ selectionOverlap = (doc: Doc): [boolean, boolean] => {
+ const docs = this.docsWithDrag.docs;
+ const index = this.rowIndex(doc);
+ const selectedBelow: boolean = this._selectedDocs.includes(docs[index + 1]);
+ const selectedAbove: boolean = this._selectedDocs.includes(docs[index - 1]);
+ return [selectedAbove, selectedBelow];
+ }
+
removeCellHighlights = () => {
this._highlightedCellsInfo.forEach(info => {
const doc = info[0];
const field = info[1];
const cell = this.getCellElement(doc, field);
- if (!(this._selectedDocs.includes(doc) && this._selectedCol === this.columnKeys.indexOf(field))) cell.style.border = '';
+ if (this._selectedDocs.includes(doc) && this._selectedCol === this.columnKeys.indexOf(field)) {
+ cell.style.border = `solid 2px ${Colors.MEDIUM_BLUE}`;
+ if (this.selectionOverlap(doc)[0]) cell.style.borderTop = '';
+ if (this.selectionOverlap(doc)[1]) cell.style.borderBottom = '';
+ } else cell.style.border = '';
cell.style.backgroundColor = '';});
this._highlightedCellsInfo = [];
}
@@ -741,7 +753,6 @@ export class CollectionSchemaView extends CollectionSubView() {
@action
onInternalDrop = (e: Event, de: DragManager.DropEvent) => {
- console.log('called')
if (de.complete.columnDragData) {
setTimeout(() => {this.setColDrag(false);});
e.stopPropagation();
@@ -881,8 +892,8 @@ export class CollectionSchemaView extends CollectionSubView() {
this.closeColumnMenu();
};
- setColumnValues = (key: string, value: string) => {
- if (this._selectedCells.length === 1) this.docs.forEach(doc => !doc._lockedSchemaEditing &&Doc.SetField(doc, key, value));
+ setCellValues = (key: string, value: string) => {
+ if (this._selectedCells.length === 1) this.docs.forEach(doc => !doc._lockedSchemaEditing && Doc.SetField(doc, key, value));
else this._selectedCells.forEach(doc => !doc._lockedSchemaEditing && Doc.SetField(doc, key, value));
return true;
};
diff --git a/src/client/views/collections/collectionSchema/SchemaCellField.tsx b/src/client/views/collections/collectionSchema/SchemaCellField.tsx
index c7c483df8..e1059b8fc 100644
--- a/src/client/views/collections/collectionSchema/SchemaCellField.tsx
+++ b/src/client/views/collections/collectionSchema/SchemaCellField.tsx
@@ -95,7 +95,7 @@ export class SchemaCellField extends ObservableReactComponent<SchemaCellFieldPro
() => this._props.GetValue(),
fieldVal => {
this._unrenderedContent = fieldVal ?? '';
- this.setContent(this._unrenderedContent);
+ this.finalizeEdit(false, false, false);
}
)
}
@@ -246,6 +246,10 @@ export class SchemaCellField extends ObservableReactComponent<SchemaCellFieldPro
@action
onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.nativeEvent.defaultPrevented) return; // hack .. DashFieldView grabs native events, but react ignores stoppedPropagation and preventDefault, so we need to check it here
+ // if (e.metaKey) {
+ // e.stopPropagation();
+ // e.preventDefault();
+ // }
switch (e.key) {
case 'Tab':
e.stopPropagation();
@@ -302,7 +306,7 @@ export class SchemaCellField extends ObservableReactComponent<SchemaCellFieldPro
finalizeEdit(shiftDown: boolean, lostFocus: boolean, enterKey: boolean) {
if (this._unrenderedContent.replace(this.selfRefPattern, '') !== this._unrenderedContent) {
this._dependencyMessageShown ? this._dependencyMessageShown = false :
- alert("Circular dependency detected. Please update the field.")
+ alert(`Circular dependency detected. Please update the field at ${this.selfRefPattern}.`)
this._dependencyMessageShown = true;
return;
}
diff --git a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
index 9ac7a24b2..2410b2793 100644
--- a/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
+++ b/src/client/views/collections/collectionSchema/SchemaRowBox.tsx
@@ -101,23 +101,14 @@ export class SchemaRowBox extends ViewBoxBaseComponent<SchemaRowBoxProps>() {
return infos;
}
- @computed get isolatedSelection() {
- const toReturn: [boolean, boolean] = [true, true];
- const docs = this.schemaView.docsWithDrag.docs;
- const selectedBelow: boolean = this.schemaView?._selectedDocs.includes(docs[this.rowIndex + 1]);
- const selectedAbove: boolean = this.schemaView?._selectedDocs.includes(docs[this.rowIndex - 1]);
- toReturn[0] = selectedAbove;
- toReturn[1] = selectedBelow;
- return toReturn;
- }
-
+ isolatedSelection = (doc: Doc) => {return this.schemaView?.selectionOverlap(doc)};
setCursorIndex = (mouseY: number) => this.schemaView?.setRelCursorIndex(mouseY);
selectedCol = () => this.schemaView._selectedCol;
getFinfo = computedFn((fieldKey: string) => this.schemaView?.fieldInfos.get(fieldKey));
selectCell = (doc: Doc, col: number, shift: boolean, ctrl: boolean) => this.schemaView?.selectCell(doc, col, shift, ctrl);
deselectCell = () => this.schemaView?.deselectAllCells();
selectedCells = () => this.schemaView?._selectedDocs;
- setColumnValues = (field: any, value: any) => this.schemaView?.setColumnValues(field, value) ?? false;
+ setColumnValues = (field: any, value: any) => this.schemaView?.setCellValues(field, value) ?? false;
columnWidth = computedFn((index: number) => () => this.schemaView?.displayColumnWidths[index] ?? CollectionSchemaView._minColWidth);
computeRowIndex = () => this.schemaView?.rowIndex(this.Document);
highlightCells = (text: string) => this.schemaView?.highlightCells(text);
diff --git a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx
index 1f5684151..e2a05da7f 100644
--- a/src/client/views/collections/collectionSchema/SchemaTableCell.tsx
+++ b/src/client/views/collections/collectionSchema/SchemaTableCell.tsx
@@ -60,7 +60,7 @@ export interface SchemaTableCellProps {
autoFocus?: boolean; // whether to set focus on creation, othwerise wait for a click
rootSelected?: () => boolean;
rowSelected: () => boolean;
- isolatedSelection: [boolean, boolean];
+ isolatedSelection: (doc: Doc) => [boolean, boolean];
highlightCells: (text: string) => void;
equationHighlightRef: ObservableMap<HTMLDivElement, string>;
eqHighlightFunc: (text: string) => HTMLDivElement[] | [];
@@ -174,10 +174,6 @@ export class SchemaTableCell extends ObservableReactComponent<SchemaTableCellPro
const inQuotes = (field: string) => {return ((field.startsWith('`') && field.endsWith('`')) || (field.startsWith("'") && field.endsWith("'")) || (field.startsWith('"') && field.endsWith('"')))}
if (!inQuotes(this._submittedValue) && inQuotes(modField)) modField = modField.substring(1, modField.length - 1);
-
- const selfRefPattern = `d${this.docIndex}.${this._props.fieldKey}`
- const selfRefRegX = RegExp(selfRefPattern, 'g');
- if (selfRefRegX.exec(modField) !== null) { return 'Invalid'}
return eqSymbol + modField;
}
@@ -255,8 +251,8 @@ export class SchemaTableCell extends ObservableReactComponent<SchemaTableCellPro
const sides: Array<string | undefined> = [];
sides[0] = selectedCell(this._props) ? `solid 2px ${Colors.MEDIUM_BLUE}` : undefined; // left
sides[1] = selectedCell(this._props) ? `solid 2px ${Colors.MEDIUM_BLUE}` : undefined; // right
- sides[2] = (!this._props.isolatedSelection[0] && selectedCell(this._props)) ? `solid 2px ${Colors.MEDIUM_BLUE}` : undefined; // top
- sides[3] = (!this._props.isolatedSelection[1] && selectedCell(this._props)) ? `solid 2px ${Colors.MEDIUM_BLUE}` : undefined; // bottom
+ sides[2] = (!this._props.isolatedSelection(this._props.Document)[0] && selectedCell(this._props)) ? `solid 2px ${Colors.MEDIUM_BLUE}` : undefined; // top
+ sides[3] = (!this._props.isolatedSelection(this._props.Document)[1] && selectedCell(this._props)) ? `solid 2px ${Colors.MEDIUM_BLUE}` : undefined; // bottom
return sides;
}