aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/views/PropertiesView.tsx20
-rw-r--r--src/client/views/nodes/DocumentView.tsx4
-rw-r--r--src/client/views/nodes/FilterBox.tsx6
-rw-r--r--src/fields/Doc.ts2
4 files changed, 21 insertions, 11 deletions
diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx
index 388b688cd..a159a9948 100644
--- a/src/client/views/PropertiesView.tsx
+++ b/src/client/views/PropertiesView.tsx
@@ -31,6 +31,7 @@ import "./PropertiesView.scss";
import { DefaultStyleProvider, FilteringStyleProvider } from "./StyleProvider";
import { CurrentUserUtils } from "../util/CurrentUserUtils";
import { FilterBox } from "./nodes/FilterBox";
+import { List } from "../../fields/List";
const higflyout = require("@hig/flyout");
export const { anchorPoints } = higflyout;
export const Flyout = higflyout.default;
@@ -901,16 +902,25 @@ export class PropertiesView extends React.Component<PropertiesViewProps> {
}
checkFilterDoc() {
- if (this.filterDoc.type === DocumentType.COL && !this.filterDoc.currentFilter) CurrentUserUtils.setupFilterDocs(this.filterDoc!);
+ if (this.filterDoc.type === DocumentType.COL && !this.filterDoc.currentFilter) CurrentUserUtils.setupFilterDocs(this.filterDoc);
}
- saveFilter = () => {
+ createNewFilterDoc = () => {
+ const temp = this.filterDoc._docFilters;
+ this.filterDoc._docFilters = new List<string>();
+ (this.filterDoc.currentFilter as Doc)._docFiltersList = temp;
this.filterDoc.currentFilter = undefined;
CurrentUserUtils.setupFilterDocs(this.filterDoc);
}
- myFiltersSelect = (doc: Doc) => {
+ updateFilterDoc = (doc: Doc) => {
+ const temp = doc._docFiltersList;
+ const otherTemp = this.filterDoc._docFilters;
+ this.filterDoc._docFilters = new List<string>();
+ (this.filterDoc.currentFilter as Doc)._docFiltersList = otherTemp;
this.filterDoc.currentFilter = doc;
+ doc._docFiltersList = new List<string>();
+ this.filterDoc._docFilters = temp;
}
@computed get filtersSubMenu() {
@@ -949,8 +959,8 @@ export class PropertiesView extends React.Component<PropertiesViewProps> {
searchFilterDocs={returnEmptyDoclist}
ContainingCollectionView={undefined}
ContainingCollectionDoc={undefined}
- filterSaveCallback={this.saveFilter}
- myFiltersCallback={this.myFiltersSelect}
+ createNewFilterDoc={this.createNewFilterDoc}
+ updateFilterDoc={this.updateFilterDoc}
docViewPath={returnEmptyDoclist}
layerProvider={undefined}
/>
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index f99eb1b3b..ee4df97ed 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -120,8 +120,8 @@ export interface DocumentViewSharedProps {
cantBrush?: boolean; // whether the document doesn't show brush highlighting
pointerEvents?: string;
scriptContext?: any; // can be assigned anything and will be passed as 'scriptContext' to any OnClick script that executes on this document
- filterSaveCallback?: () => void;
- myFiltersCallback?: (doc: Doc) => void;
+ createNewFilterDoc?: () => void;
+ updateFilterDoc?: (doc: Doc) => void;
}
export interface DocumentViewProps extends DocumentViewSharedProps {
// properties specific to DocumentViews but not to FieldView
diff --git a/src/client/views/nodes/FilterBox.tsx b/src/client/views/nodes/FilterBox.tsx
index 987939d65..a3a3ec662 100644
--- a/src/client/views/nodes/FilterBox.tsx
+++ b/src/client/views/nodes/FilterBox.tsx
@@ -48,7 +48,7 @@ export class FilterBox extends ViewBoxBaseComponent<FieldViewProps, FilterBoxDoc
public static LayoutString(fieldKey: string) { return FieldView.LayoutString(FilterBox, fieldKey); }
public _filterBoolean = "AND";
- public static _filterScope = "Current Dashboard";
+ @observable public static _filterScope = "Current Dashboard";
public _filterSelected = false;
public _filterMatch = "matched";
// private myFiltersRef = React.createRef<HTMLDivElement>();
@@ -309,7 +309,7 @@ export class FilterBox extends ViewBoxBaseComponent<FieldViewProps, FilterBoxDoc
const flyout = DocListCast(Doc.UserDoc().savedFilters).map(doc => {
// console.log("mapping");
return <>
- <div className="???" onWheel={e => e.stopPropagation()} style={{ height: 50, border: "2px" }} onPointerDown={() => this.props.myFiltersCallback?.(doc)}>
+ <div className="???" onWheel={e => e.stopPropagation()} style={{ height: 50, border: "2px" }} onPointerDown={() => this.props.updateFilterDoc?.(doc)}>
{StrCast(doc.title)}
</div>
</>;
@@ -419,7 +419,7 @@ export class FilterBox extends ViewBoxBaseComponent<FieldViewProps, FilterBoxDoc
</div>
<div className="filterBox-saveWrapper">
<div className="filterBox-saveBookmark"
- onPointerDown={this.props.filterSaveCallback}
+ onPointerDown={this.props.createNewFilterDoc}
>
<div>NEW</div>
</div>
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index 9b539d1b7..4cc0925a9 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -1065,7 +1065,7 @@ export namespace Doc {
// based on the modifiers :"check", "x", undefined
export function setDocFilter(target: Opt<Doc>, key: string, value: any, modifiers?: "remove" | "match" | "check" | "x" | undefined) {
const container = target ?? FilterBox._filterScope === "Current Collection" ? SelectionManager.Views()[0].Document || CollectionDockingView.Instance.props.Document : CollectionDockingView.Instance.props.Document;
- const docFilters = Cast(SelectionManager.Views()[0].Document._docFilters, listSpec("string"), []);
+ const docFilters = Cast(container._docFilters, listSpec("string"), []);
runInAction(() => {
for (let i = 0; i < docFilters.length; i++) {
const fields = docFilters[i].split(":"); // split key:value:modifier