diff options
author | usodhi <61431818+usodhi@users.noreply.github.com> | 2021-04-06 00:02:08 -0400 |
---|---|---|
committer | usodhi <61431818+usodhi@users.noreply.github.com> | 2021-04-06 00:02:08 -0400 |
commit | 03adc5f7ed70f2ecd151336dbde526dac9b7737e (patch) | |
tree | f7066c72acb20d18e513154ad31072faa7e4b8b8 | |
parent | 460ca02f08d6701230cefa1833a6c7908ed29705 (diff) |
dashboard filters end when dashboard not selected + current collection option doesn't display if not collection + changed filterDocs parameter
-rw-r--r-- | src/client/views/collections/CollectionSubView.tsx | 12 | ||||
-rw-r--r-- | src/client/views/nodes/FilterBox.tsx | 20 |
2 files changed, 23 insertions, 9 deletions
diff --git a/src/client/views/collections/CollectionSubView.tsx b/src/client/views/collections/CollectionSubView.tsx index c17adad32..57e1a50bb 100644 --- a/src/client/views/collections/CollectionSubView.tsx +++ b/src/client/views/collections/CollectionSubView.tsx @@ -82,7 +82,7 @@ export function CollectionSubView<T, X>(schemaCtor: (doc: Doc) => T, moreProps?: return Cast(this.dataField, listSpec(Doc)); } docFilters = () => { - return [...this.props.docFilters(), ...Cast(FilterBox._filterScope === "Current Collection" ? this.props.Document?._docFilters : CurrentUserUtils.ActiveDashboard?._docFilters, listSpec("string"), [])]; + return [...this.props.docFilters(), ...Cast(this.props.Document?._docFilters, listSpec("string"), [])]; } docRangeFilters = () => { return [...this.props.docRangeFilters(), ...Cast(this.props.Document._docRangeFilters, listSpec("string"), [])]; @@ -115,9 +115,9 @@ export function CollectionSubView<T, X>(schemaCtor: (doc: Doc) => T, moreProps?: } // console.log(CurrentUserUtils.ActiveDashboard._docFilters); - if (!this.props.Document._docFilters && this.props.Document.currentFilter) { - (this.props.Document.currentFilter as Doc).filterBoolean = (this.props.ContainingCollectionDoc?.currentFilter as Doc)?.filterBoolean; - } + // if (!this.props.Document._docFilters && this.props.Document.currentFilter) { + // (this.props.Document.currentFilter as Doc).filterBoolean = (this.props.ContainingCollectionDoc?.currentFilter as Doc)?.filterBoolean; + // } const docsforFilter: Doc[] = []; childDocs.forEach((d) => { // if (DocUtils.Excluded(d, docFilters)) return; @@ -129,13 +129,13 @@ export function CollectionSubView<T, X>(schemaCtor: (doc: Doc) => T, moreProps?: let subDocs = DocListCast(data); if (subDocs.length > 0) { let newarray: Doc[] = []; - notFiltered = notFiltered || (!searchDocs.length && DocUtils.FilterDocs(subDocs, docFilters, docRangeFilters, viewSpecScript, this.props.Document).length); + notFiltered = notFiltered || (!searchDocs.length && DocUtils.FilterDocs(subDocs, docFilters, docRangeFilters, viewSpecScript, d).length); while (subDocs.length > 0 && !notFiltered) { newarray = []; subDocs.forEach((t) => { const fieldKey = Doc.LayoutFieldKey(t); const annos = !Field.toString(Doc.LayoutField(t) as Field).includes("CollectionView"); - notFiltered = notFiltered || ((!searchDocs.length || searchDocs.includes(t)) && ((!docFilters.length && !docRangeFilters.length) || DocUtils.FilterDocs([t], docFilters, docRangeFilters, viewSpecScript, this.props.Document).length)); + notFiltered = notFiltered || ((!searchDocs.length || searchDocs.includes(t)) && ((!docFilters.length && !docRangeFilters.length) || DocUtils.FilterDocs([t], docFilters, docRangeFilters, viewSpecScript, d).length)); DocListCast(t[annos ? fieldKey + "-annotations" : fieldKey]).forEach((newdoc) => newarray.push(newdoc)); }); subDocs = newarray; diff --git a/src/client/views/nodes/FilterBox.tsx b/src/client/views/nodes/FilterBox.tsx index 501d02dc4..ae5b79aec 100644 --- a/src/client/views/nodes/FilterBox.tsx +++ b/src/client/views/nodes/FilterBox.tsx @@ -170,7 +170,6 @@ export class FilterBox extends ViewBoxBaseComponent<FieldViewProps, FilterBoxDoc } public removeFilter = (filterName: string) => { - console.log("remove filter"); const targetDoc = FilterBox.targetDoc; const filterDoc = targetDoc.currentFilter as Doc; const attributes = DocListCast(filterDoc["data"]); @@ -282,10 +281,22 @@ export class FilterBox extends ViewBoxBaseComponent<FieldViewProps, FilterBoxDoc } /** - * Changes the value of the variable that determines whether the filters should apply to the dashboard or the collection + * Changes the value of the variable that determines whether the filters should apply to the dashboard or the collection. + * + * Saves the Dashboard's filters (on its currentFilter filterdoc) when it shifts to Current Collection so it doesn't get passed into this.props.docFIlters() in CollectionSubView (in the docFilters function). */ @action changeScope = (e: any) => { + if (FilterBox._filterScope === "Current Dashboard" && e.currentTarget.value === "Current Collection") { + const temp = CurrentUserUtils.ActiveDashboard._docFilters; + CurrentUserUtils.ActiveDashboard._docFilters = new List<string>(); + (CurrentUserUtils.ActiveDashboard.currentFilter as Doc)._docFilterList = temp; + } + else if (FilterBox._filterScope === "Current Collection" && e.currentTarget.value === "Current Dashboard") { + const temp = (CurrentUserUtils.ActiveDashboard.currentFilter as Doc)._docFilterList; + (CurrentUserUtils.ActiveDashboard.currentFilter as Doc)._docFilterList = undefined; + CurrentUserUtils.ActiveDashboard._docFilters = temp; + } FilterBox._filterScope = e.currentTarget.value; } @@ -393,7 +404,10 @@ export class FilterBox extends ViewBoxBaseComponent<FieldViewProps, FilterBoxDoc <select className="filterBox-selection" onChange={this.changeScope}> <option value="Current Dashboard" key="Current Dashboard" selected={"Current Dashboard" === FilterBox._filterScope}>Current Dashboard</option> {/* <option value="Current Tab" key="Current Tab">Current Tab</option> */} - <option value="Current Collection" key="Current Collection" selected={"Current Collection" === FilterBox._filterScope}>Current Collection</option> + {SelectionManager.Views()?.[0].Document.type === DocumentType.COL ? + <option value="Current Collection" key="Current Collection" selected={"Current Collection" === FilterBox._filterScope}>Current Collection</option> + : (null)} + </select> </div> |