From 1eeb1127b1430e3a377fa6fd50e13e6fef932583 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sat, 3 Dec 2016 13:59:18 -0500 Subject: [PATCH 1/7] Added report back to edit --- changelog.md | 3 +++ client/homebrew/pages/editPage/editPage.jsx | 1 + 2 files changed, 4 insertions(+) diff --git a/changelog.md b/changelog.md index f4a7300b3..897b0a4ab 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # changelog +### Saturday, 03/12/2016 - v2.6.0 +- Added report back to the edit page + ### Thursday, 01/12/2016 - Added in a snippet for a split table - Added an account nav item to new page diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index db5adb2fa..64c61f8c2 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -193,6 +193,7 @@ const EditPage = React.createClass({ {this.renderSaveButton()} {/**/} + Share From bec417a32551364bac607bd942fdba05e034239b Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sat, 3 Dec 2016 14:02:28 -0500 Subject: [PATCH 2/7] Changed the meta editor icon --- client/homebrew/editor/snippetbar/snippetbar.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/homebrew/editor/snippetbar/snippetbar.jsx b/client/homebrew/editor/snippetbar/snippetbar.jsx index 2f93fbe1b..e77c1e9c3 100644 --- a/client/homebrew/editor/snippetbar/snippetbar.jsx +++ b/client/homebrew/editor/snippetbar/snippetbar.jsx @@ -42,7 +42,7 @@ const Snippetbar = React.createClass({ {this.renderSnippetGroups()}
- +
} From 9285e53e55885a49c66d12eb7dd7e0fe75248466 Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sat, 3 Dec 2016 14:49:00 -0500 Subject: [PATCH 3/7] Added conditional partial page rendering --- changelog.md | 6 ++ client/homebrew/brewRenderer/brewRenderer.jsx | 72 +++++++++++++------ .../homebrew/brewRenderer/brewRenderer.less | 11 +++ .../editor/metadataEditor/metadataEditor.jsx | 28 +++++++- .../editor/metadataEditor/metadataEditor.less | 5 ++ shared/naturalcrit/nav/nav.jsx | 6 +- 6 files changed, 103 insertions(+), 25 deletions(-) diff --git a/changelog.md b/changelog.md index 897b0a4ab..531d39b2d 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,12 @@ ### Saturday, 03/12/2016 - v2.6.0 - Added report back to the edit page +- Changed metaeditor icon +- Added a button to quickly share your brew to reddit :) +- Disabled Partial Page Rendering unless your brew hits 75 pages or longer +- The brew renderer will now try and use your first page to judge the page size of each of your brews. This allows you now to set landscape and other weird sizes and everthing should work fine :) + + ### Thursday, 01/12/2016 - Added in a snippet for a split table diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index b81bbb3ba..174143e5e 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -1,13 +1,14 @@ -var React = require('react'); -var _ = require('lodash'); -var cx = require('classnames'); +const React = require('react'); +const _ = require('lodash'); +const cx = require('classnames'); -var Markdown = require('naturalcrit/markdown.js'); -var ErrorBar = require('./errorBar/errorBar.jsx'); +const Markdown = require('naturalcrit/markdown.js'); +const ErrorBar = require('./errorBar/errorBar.jsx'); -var PAGE_HEIGHT = 1056 + 30; +const PAGE_HEIGHT = 1056; +const PPR_THRESHOLD = 50; -var BrewRenderer = React.createClass({ +const BrewRenderer = React.createClass({ getDefaultProps: function() { return { text : '', @@ -20,11 +21,15 @@ var BrewRenderer = React.createClass({ height : 0, isMounted : false, + usePPR : true, + + pages : [], + errors : [] }; }, - totalPages : 0, height : 0, + pageHeight : PAGE_HEIGHT, componentDidMount: function() { this.updateSize(); @@ -34,7 +39,21 @@ var BrewRenderer = React.createClass({ window.removeEventListener("resize", this.updateSize); }, + componentWillReceiveProps: function(nextProps) { + if(this.refs.pages.firstChild) this.pageHeight = this.refs.pages.firstChild.clientHeight; + + const pages = nextProps.text.split('\\page'); + this.setState({ + pages : pages, + usePPR : pages.length >= PPR_THRESHOLD + }) + }, + updateSize : function() { + setTimeout(()=>{ + if(this.refs.pages.firstChild) this.pageHeight = this.refs.pages.firstChild.clientHeight; + }, 1); + this.setState({ height : this.refs.main.parentNode.clientHeight, isMounted : true @@ -43,12 +62,9 @@ var BrewRenderer = React.createClass({ handleScroll : function(e){ this.setState({ - viewablePageNumber : Math.floor(e.target.scrollTop / PAGE_HEIGHT) + viewablePageNumber : Math.floor(e.target.scrollTop / this.pageHeight) }); }, - //Implement later - scrollToPage : function(pageNumber){ - }, shouldRender : function(pageText, index){ if(!this.state.isMounted) return false; @@ -66,7 +82,15 @@ var BrewRenderer = React.createClass({ renderPageInfo : function(){ return
- {this.state.viewablePageNumber + 1} / {this.totalPages} + {this.state.viewablePageNumber + 1} / {this.state.pages.length} +
+ }, + + renderPPRmsg : function(){ + if(!this.state.usePPR) return; + + return
+ Partial Page Renderer enabled, because your brew is so large. May effect rendering.
}, @@ -81,15 +105,18 @@ var BrewRenderer = React.createClass({ }, renderPages : function(){ - var pages = this.props.text.split('\\page'); - this.totalPages = pages.length; + if(this.state.usePPR){ + return _.map(this.state.pages, (page, index)=>{ + if(this.shouldRender(page, index)){ + return this.renderPage(page, index); + }else{ + return this.renderDummyPage(index); + } + }); + } - return _.map(pages, (page, index)=>{ - if(this.shouldRender(page, index)){ - return this.renderPage(page, index); - }else{ - return this.renderDummyPage(index); - } + return _.map(this.state.pages, (page, index)=>{ + return this.renderPage(page, index); }); }, @@ -101,10 +128,11 @@ var BrewRenderer = React.createClass({ -
+
{this.renderPages()}
{this.renderPageInfo()} + {this.renderPPRmsg()}
} }); diff --git a/client/homebrew/brewRenderer/brewRenderer.less b/client/homebrew/brewRenderer/brewRenderer.less index 8a854dd29..c893dbac4 100644 --- a/client/homebrew/brewRenderer/brewRenderer.less +++ b/client/homebrew/brewRenderer/brewRenderer.less @@ -16,6 +16,17 @@ font-weight : 800; color : white; } + .ppr_msg{ + position : absolute; + left : 0px; + bottom : 0; + z-index : 1000; + padding : 8px 10px; + background-color : #333; + font-size : 10px; + font-weight : 800; + color : white; + } .pages{ margin : 30px 0px; &>.phb{ diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index 01035b272..694e9db43 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -51,6 +51,16 @@ const MetadataEditor = React.createClass({ }); }, + getRedditLink : function(){ + const meta = this.props.metadata; + const title = `${meta.title} [${meta.systems.join(' ')}]`; + const text = `Hey guys! I've been working on this homebrew. I'd love your feedback. Check it out. + +**[Homebrewery Link](http://homebrewery.naturalcrit.com/share/${meta.shareId})**`; + + return `https://www.reddit.com/r/UnearthedArcana/submit?title=${encodeURIComponent(title)}&text=${encodeURIComponent(text)}`; + }, + renderSystems : function(){ return _.map(SYSTEMS, (val)=>{ return