aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
diff options
context:
space:
mode:
authormehekj <mehek.jethani@gmail.com>2023-01-30 22:14:52 -0500
committermehekj <mehek.jethani@gmail.com>2023-01-30 22:14:52 -0500
commitea73082dc0293a0bafde20b0f82d674b7ca230f9 (patch)
tree9781b9af3b7e3260ea28c72ea57791912040f32b /src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
parent6c58ca9d473103624be82c6f2da90f22bafd7b98 (diff)
basic sorting
Diffstat (limited to 'src/client/views/collections/collectionSchema/CollectionSchemaView.tsx')
-rw-r--r--src/client/views/collections/collectionSchema/CollectionSchemaView.tsx32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
index 29b22c0d5..4fb3f68c1 100644
--- a/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
+++ b/src/client/views/collections/collectionSchema/CollectionSchemaView.tsx
@@ -1,12 +1,12 @@
import React = require('react');
import { action, computed, observable, ObservableMap, ObservableSet, untracked } from 'mobx';
import { observer } from 'mobx-react';
-import { Doc, DocListCast, Opt } from '../../../../fields/Doc';
+import { Doc, DocListCast, Field, Opt } from '../../../../fields/Doc';
import { Id } from '../../../../fields/FieldSymbols';
import { List } from '../../../../fields/List';
import { RichTextField } from '../../../../fields/RichTextField';
import { listSpec } from '../../../../fields/Schema';
-import { BoolCast, Cast, StrCast } from '../../../../fields/Types';
+import { BoolCast, Cast, NumCast, StrCast } from '../../../../fields/Types';
import { ImageField } from '../../../../fields/URLField';
import { emptyFunction, returnEmptyString, setupMoveUpEvents, Utils } from '../../../../Utils';
import { Docs, DocUtils } from '../../../documents/Documents';
@@ -89,6 +89,31 @@ export class CollectionSchemaView extends CollectionSubView() {
return this._displayColumnWidths ?? this.storedColumnWidths;
}
+ @computed get sortField() {
+ return StrCast(this.layoutDoc.sortField, 'creationDate');
+ }
+
+ @computed get sortDesc() {
+ return BoolCast(this.layoutDoc.sortDesc);
+ }
+
+ @undoBatch
+ @action
+ setSort = (field: string, desc: boolean) => {
+ this.layoutDoc.sortField = field;
+ this.layoutDoc.sortDesc = desc;
+
+ this.childDocs.sort((docA, docB) => {
+ const aStr = Field.toString(docA[field] as Field);
+ const bStr = Field.toString(docB[field] as Field);
+ var out = 0;
+ if (aStr < bStr) out = -1;
+ if (aStr > bStr) out = 1;
+ if (desc) out *= -1;
+ return out;
+ });
+ };
+
@undoBatch
@action
changeColumnKey = (index: number, newKey: string, defaultVal?: any) => {
@@ -430,6 +455,9 @@ export class CollectionSchemaView extends CollectionSubView() {
columnKeys={this.columnKeys}
columnWidths={this.displayColumnWidths}
possibleKeys={this.documentKeys}
+ sortField={this.sortField}
+ sortDesc={this.sortDesc}
+ setSort={this.setSort}
changeColumnKey={this.changeColumnKey}
addColumn={this.addColumn}
removeColumn={this.removeColumn}