From 2fcccfb48f30a44eadebe9e40afe805dbe310089 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Thu, 1 Sep 2022 23:55:14 +1200 Subject: [PATCH 1/6] Expand filtering functionality --- .../homebrew/pages/basePages/listPage/listPage.jsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index e546e2c7f..40534b3f9 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -141,9 +141,18 @@ const ListPage = createClass({ getSortedBrews : function(brews){ const testString = _.deburr(this.state.filterString).toLowerCase(); + + const checkString = (stringToTest)=>{ + return (_.deburr(stringToTest).toLowerCase().includes(testString)); + }; + brews = _.filter(brews, (brew)=>{ - return (_.deburr(brew.title).toLowerCase().includes(testString)) || - (_.deburr(brew.description).toLowerCase().includes(testString)); + const brewStrings = [] + .concat(brew.title) + .concat(brew.description) + .concat(brew.tags); + + return _.filter(brewStrings, (brewString)=>{return checkString(brewString);}).length > 0; }); return _.orderBy(brews, (brew)=>{ return this.sortBrewOrder(brew); }, this.state.sortDir); From b4be9bb7411c3bb245fe37fe9efde5b71f55903a Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Sat, 3 Sep 2022 01:32:42 -0400 Subject: [PATCH 2/6] Default brew in getDefaultProps, don't get localstorage when cloning --- .../pages/basePages/listPage/listPage.jsx | 8 +-- client/homebrew/pages/newPage/newPage.jsx | 63 ++++++++----------- 2 files changed, 29 insertions(+), 42 deletions(-) diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index 0fcef8d9c..808cf369b 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -30,10 +30,10 @@ const ListPage = createClass({ }); return { - filterString : this.props.query?.filter || '', - sortType : this.props.query?.sort || 'alpha', - sortDir : this.props.query?.dir || 'asc', - query : this.props.query, + filterString : this.props.query?.filter || '', + sortType : this.props.query?.sort || 'alpha', + sortDir : this.props.query?.dir || 'asc', + query : this.props.query, brewCollection : brewCollection }; }, diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 895438997..14ec1c852 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -27,41 +27,30 @@ const NewPage = createClass({ getDefaultProps : function() { return { brew : { - text : '', - style : undefined, - shareId : null, - editId : null, - createdAt : null, - updatedAt : null, - gDrive : false, - + text : '', + style : undefined, title : '', description : '', - tags : '', - published : false, - authors : [], - systems : [] + renderer : 'V3' } }; }, getInitialState : function() { - const brew = this.props.brew; + let brew = this.props.brew; + + if(this.props.brew.shareId) { + brew = { + text : brew.text ?? '', + style : brew.style ?? undefined, + title : brew.title ?? '', + description : brew.description ?? '', + renderer : brew.renderer ?? 'legacy' + }; + } return { - brew : { - text : brew.text || '', - style : brew.style || undefined, - gDrive : false, - title : brew.title || '', - description : brew.description || '', - tags : brew.tags || '', - published : false, - authors : [], - systems : brew.systems || [], - renderer : brew.renderer || 'V3' - }, - + brew : brew, isSaving : false, saveGoogle : (global.account && global.account.googleId ? true : false), errors : null, @@ -74,27 +63,25 @@ const NewPage = createClass({ const brew = this.state.brew; - if(typeof window !== 'undefined') { //Load from localStorage if in client browser + if(!this.props.brew.shareId && typeof window !== 'undefined') { //Load from localStorage if in client browser const brewStorage = localStorage.getItem(BREWKEY); const styleStorage = localStorage.getItem(STYLEKEY); const metaStorage = JSON.parse(localStorage.getItem(METAKEY)); - if(!brew.text || !brew.style){ - brew.text = brew.text || (brewStorage ?? ''); - brew.style = brew.style || (styleStorage ?? undefined); - // brew.title = metaStorage?.title || this.state.brew.title; - // brew.description = metaStorage?.description || this.state.brew.description; - brew.renderer = brew.renderer || metaStorage?.renderer; + brew.text = brewStorage ?? brew.text; + brew.style = styleStorage ?? brew.style; + // brew.title = metaStorage?.title || this.state.brew.title; + // brew.description = metaStorage?.description || this.state.brew.description; + brew.renderer = metaStorage?.renderer ?? brew.renderer; - this.setState({ - brew : brew - }); - } + this.setState({ + brew : brew + }); } localStorage.setItem(BREWKEY, brew.text); localStorage.setItem(STYLEKEY, brew.style); - localStorage.setItem(METAKEY, JSON.stringify({'renderer' : brew.renderer})); + localStorage.setItem(METAKEY, JSON.stringify({ 'renderer': brew.renderer })); }, componentWillUnmount : function() { document.removeEventListener('keydown', this.handleControlKeys); From ba693365ec85f74f018454954d51e8f948fc6319 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 3 Sep 2022 20:53:28 +1200 Subject: [PATCH 3/6] Lint fixes --- client/homebrew/pages/basePages/listPage/listPage.jsx | 8 ++++---- client/homebrew/pages/newPage/newPage.jsx | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index 0fcef8d9c..808cf369b 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -30,10 +30,10 @@ const ListPage = createClass({ }); return { - filterString : this.props.query?.filter || '', - sortType : this.props.query?.sort || 'alpha', - sortDir : this.props.query?.dir || 'asc', - query : this.props.query, + filterString : this.props.query?.filter || '', + sortType : this.props.query?.sort || 'alpha', + sortDir : this.props.query?.dir || 'asc', + query : this.props.query, brewCollection : brewCollection }; }, diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 895438997..18b28ed2f 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -94,7 +94,7 @@ const NewPage = createClass({ localStorage.setItem(BREWKEY, brew.text); localStorage.setItem(STYLEKEY, brew.style); - localStorage.setItem(METAKEY, JSON.stringify({'renderer' : brew.renderer})); + localStorage.setItem(METAKEY, JSON.stringify({ 'renderer': brew.renderer })); }, componentWillUnmount : function() { document.removeEventListener('keydown', this.handleControlKeys); From cfbc089207f4a1c355c560e47ea667f0ef748c55 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 3 Sep 2022 21:15:32 +1200 Subject: [PATCH 4/6] Add sort type & dir to local storage --- .../pages/basePages/listPage/listPage.jsx | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index 808cf369b..fa6965f79 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -1,3 +1,4 @@ +/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/ require('./listPage.less'); const React = require('react'); const createClass = require('create-react-class'); @@ -6,7 +7,10 @@ const moment = require('moment'); const BrewItem = require('./brewItem/brewItem.jsx'); -const USERPAGE_KEY_PREFIX = 'HOMEBREWERY-LISTPAGE-VISIBILITY'; +const USERPAGE_KEY_PREFIX = 'HOMEBREWERY-LISTPAGE'; + +const DEFAULT_SORT_TYPE = 'alpha'; +const DEFAULT_SORT_DIR = 'asc'; const ListPage = createClass({ displayName : 'ListPage', @@ -31,8 +35,8 @@ const ListPage = createClass({ return { filterString : this.props.query?.filter || '', - sortType : this.props.query?.sort || 'alpha', - sortDir : this.props.query?.dir || 'asc', + sortType : this.props.query?.sort || null, + sortDir : this.props.query?.dir || null, query : this.props.query, brewCollection : brewCollection }; @@ -44,12 +48,19 @@ const ListPage = createClass({ // LOAD FROM LOCAL STORAGE if(typeof window !== 'undefined') { + const newSortType = (this.state.sortType ?? (localStorage.getItem(`${USERPAGE_KEY_PREFIX}-SORTTYPE`) || DEFAULT_SORT_TYPE)); + const newSortDir = (this.state.sortDir ?? (localStorage.getItem(`${USERPAGE_KEY_PREFIX}-SORTDIR`) || DEFAULT_SORT_DIR)); + this.updateUrl(this.state.filterString, newSortType, newSortDir); + const brewCollection = this.props.brewCollection.map((brewGroup)=>{ - brewGroup.visible = (localStorage.getItem(`${USERPAGE_KEY_PREFIX}-${brewGroup.class}`) ?? 'true')=='true'; + brewGroup.visible = (localStorage.getItem(`${USERPAGE_KEY_PREFIX}-VISIBILITY-${brewGroup.class}`) ?? 'true')=='true'; return brewGroup; }); + this.setState({ - brewCollection : brewCollection + brewCollection : brewCollection, + sortType : newSortType, + sortDir : newSortDir }); }; }, @@ -60,8 +71,10 @@ const ListPage = createClass({ saveToLocalStorage : function() { this.state.brewCollection.map((brewGroup)=>{ - localStorage.setItem(`${USERPAGE_KEY_PREFIX}-${brewGroup.class}`, `${brewGroup.visible}`); + localStorage.setItem(`${USERPAGE_KEY_PREFIX}-VISIBILITY-${brewGroup.class}`, `${brewGroup.visible}`); }); + localStorage.setItem(`${USERPAGE_KEY_PREFIX}-SORTTYPE`, this.state.sortType); + localStorage.setItem(`${USERPAGE_KEY_PREFIX}-SORTDIR`, this.state.sortDir); }, renderBrews : function(brews){ From 76203928d26cf8319d97b17992ef32284fafc184 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 3 Sep 2022 22:07:23 +1200 Subject: [PATCH 5/6] Change apostrophe --- client/homebrew/pages/userPage/userPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/pages/userPage/userPage.jsx b/client/homebrew/pages/userPage/userPage.jsx index 6c3af7907..7341c61ad 100644 --- a/client/homebrew/pages/userPage/userPage.jsx +++ b/client/homebrew/pages/userPage/userPage.jsx @@ -23,7 +23,7 @@ const UserPage = createClass({ }; }, getInitialState : function() { - const usernameWithS = this.props.username + (this.props.username.endsWith('s') ? `'` : `'s`); + const usernameWithS = this.props.username + (this.props.username.endsWith('s') ? `’` : `’s`); const brews = _.groupBy(this.props.brews, (brew)=>{ return (brew.published ? 'published' : 'private'); From 85cad49b03f525801d7b1190819499b35c33b677 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Sat, 3 Sep 2022 22:28:03 +1200 Subject: [PATCH 6/6] Simplify getSortedBrews logic --- .../pages/basePages/listPage/listPage.jsx | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/client/homebrew/pages/basePages/listPage/listPage.jsx b/client/homebrew/pages/basePages/listPage/listPage.jsx index fef13140d..eb96c43da 100644 --- a/client/homebrew/pages/basePages/listPage/listPage.jsx +++ b/client/homebrew/pages/basePages/listPage/listPage.jsx @@ -1,3 +1,4 @@ +/*eslint max-lines: ["warn", {"max": 300, "skipBlankLines": true, "skipComments": true}]*/ require('./listPage.less'); const React = require('react'); const createClass = require('create-react-class'); @@ -30,10 +31,10 @@ const ListPage = createClass({ }); return { - filterString : this.props.query?.filter || '', - sortType : this.props.query?.sort || 'alpha', - sortDir : this.props.query?.dir || 'asc', - query : this.props.query, + filterString : this.props.query?.filter || '', + sortType : this.props.query?.sort || 'alpha', + sortDir : this.props.query?.dir || 'asc', + query : this.props.query, brewCollection : brewCollection }; }, @@ -184,19 +185,15 @@ const ListPage = createClass({ getSortedBrews : function(brews){ const testString = _.deburr(this.state.filterString).toLowerCase(); - const checkString = (stringToTest)=>{ - return (_.deburr(stringToTest).toLowerCase().includes(testString)); - }; - brews = _.filter(brews, (brew)=>{ - const brewStrings = [] - .concat(brew.title) - .concat(brew.description) - .concat(brew.tags); + const brewStrings = _.deburr([ + brew.title, + brew.description, + brew.tags].join('\n') + .toLowerCase()); - return _.filter(brewStrings, (brewString)=>{return checkString(brewString);}).length > 0; + return brewStrings.includes(testString); }); - return _.orderBy(brews, (brew)=>{ return this.sortBrewOrder(brew); }, this.state.sortDir); },