diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 58aecbb..95a3a48 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -48,10 +48,10 @@ const SmartNav = Store.createSmartComponent(React.createClass({ - + Share - + diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 1643b23..04ca300 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -1,6 +1,10 @@ const React = require('react'); const _ = require('lodash'); const cx = require('classnames'); + + +const BrewRenderer = require('homebrewery/brewRenderer/brewRenderer.jsx'); + const Markdown = require('homebrewery/markdown.js'); const Headtags = require('vitreum/headtags'); @@ -30,7 +34,7 @@ const PrintPage = React.createClass({ }); }catch(e){} } - if(this.props.query.dialog) window.print(); + //if(this.props.query.dialog) window.print(); }, //TODO: Print page shouldn't replicate functionality in brew renderer renderStyle : function(){ @@ -58,8 +62,9 @@ const PrintPage = React.createClass({ return
{this.state.brew.title} {this.renderPrintInstructions()} - {this.renderStyle()} - {this.renderPages()} + + +
} }); diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index da17e09..4deb06a 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -9,7 +9,7 @@ const ReportIssue = require('../../navbar/issue.navitem.jsx'); //const RecentlyViewed = require('../../navbar/recent.navitem.jsx').viewed; const Account = require('../../navbar/account.navitem.jsx'); -const BrewRenderer = require('homebrewery/brewRenderer/brewRenderer.jsx'); +const BrewView = require('homebrewery/BrewView/BrewView.jsx'); const Utils = require('homebrewery/utils.js'); const Actions = require('homebrewery/brew.actions.js'); @@ -56,7 +56,7 @@ const SharePage = React.createClass({ - + source @@ -65,7 +65,7 @@ const SharePage = React.createClass({
- +
} diff --git a/shared/homebrewery/brewRenderer/brewRenderer.jsx b/shared/homebrewery/brewRenderer/brewRenderer.jsx index bcce8c6..f8e8711 100644 --- a/shared/homebrewery/brewRenderer/brewRenderer.jsx +++ b/shared/homebrewery/brewRenderer/brewRenderer.jsx @@ -5,28 +5,21 @@ const cx = require('classnames'); const OldBrewRenderer = require('depricated/brewRendererOld/brewRendererOld.jsx'); const Markdown = require('homebrewery/markdown.js'); -const ErrorBar = require('./errorBar/errorBar.jsx'); -const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx') -const Store = require('homebrewery/brew.store.js'); - - -const PAGE_HEIGHT = 1056; -const PPR_THRESHOLD = 50; +const PPR_RANGE = 0; const BrewRenderer = React.createClass({ getDefaultProps: function() { return { - brew : { - text : '', - style : '' - }, + text : '', + style : '', + //usePPR : false // TODO: maybe make this into an page index to render - //TODO: maybe remove? - errors : [] + pprPage : false }; }, + /* getInitialState: function() { const pages = this.props.brew.text.split('\\page'); @@ -40,8 +33,12 @@ const BrewRenderer = React.createClass({ }, height : 0, pageHeight : PAGE_HEIGHT, + + */ lastRender :
, + /* + componentDidMount: function() { this.updateSize(); window.addEventListener('resize', this.updateSize); @@ -72,11 +69,8 @@ const BrewRenderer = React.createClass({ }); }, - handleScroll : function(e){ - this.setState({ - viewablePageNumber : Math.floor(e.target.scrollTop / this.pageHeight) - }); - }, + + */ shouldRender : function(pageText, index){ if(!this.state.isMounted) return false; @@ -92,12 +86,8 @@ const BrewRenderer = React.createClass({ return false; }, - renderPageInfo : function(){ - return
- {this.state.viewablePageNumber + 1} / {this.state.pages.length} -
- }, + /* renderPPRmsg : function(){ if(!this.state.usePPR) return; @@ -105,18 +95,25 @@ const BrewRenderer = React.createClass({ Partial Page Renderer enabled, because your brew is so large. May effect rendering. }, + */ - renderDummyPage : function(index){ - return
- -
- }, renderPage : function(pageText, index){ - return
+ const html = Markdown.render(pageText); + return
+ }, + + renderPPR : function(pages, pprPageIndex){ + return _.map(pages, (page, index)=>{ + if(_.inRange(index, pprPageIndex - PPR_RANGE, pprPageIndex + PPR_RANGE +1)){ + this.renderPage(page, index); + } + return
; + }); }, renderPages : function(){ + /* if(this.state.usePPR){ return _.map(this.state.pages, (page, index)=>{ if(this.shouldRender(page, index)){ @@ -126,38 +123,32 @@ const BrewRenderer = React.createClass({ } }); } - if(this.props.errors && this.props.errors.length) return this.lastRender; - this.lastRender = _.map(this.state.pages, (page, index)=>{ - return this.renderPage(page, index); - }); - return this.lastRender; + */ + const pages = this.props.text.split('\\page'); + + console.log(this.props.pprPage); + + if(this.props.pprPage !== false) return this.renderPPR(pages, this.props.pprPage); + + return _.map(pages, (page, index)=>this.renderPage(page, index)); + + //TODO: See if you need error handling? + //if(this.props.errors && this.props.errors.length) return this.lastRender; + }, //TODO: This is pretty bad renderStyle : function(){ - return + return }, render : function(){ - if(this.props.brew.version == 1) return ; - - - return
- - - + //if(this.props.brew.version == 1) return ; + return
{this.renderStyle()} - -
- {this.renderPages()} -
- {this.renderPageInfo()} - {this.renderPPRmsg()} + {this.renderPages()}
} }); diff --git a/shared/homebrewery/brewRenderer/brewRenderer.less b/shared/homebrewery/brewRenderer/brewRenderer.less index bde82aa..ac6790e 100644 --- a/shared/homebrewery/brewRenderer/brewRenderer.less +++ b/shared/homebrewery/brewRenderer/brewRenderer.less @@ -1,39 +1,2 @@ @import (less) './shared/homebrewery/phb_style/phb.less'; -.pane{ - position : relative; -} -.brewRenderer{ - overflow-y : scroll; - .pageInfo{ - position : absolute; - right : 17px; - bottom : 0; - z-index : 1000; - padding : 8px 10px; - background-color : #333; - font-size : 10px; - 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{ - margin-right : auto; - margin-bottom : 30px; - margin-left : auto; - box-shadow : 1px 4px 14px #000; - } - } -} \ No newline at end of file diff --git a/shared/homebrewery/brewView/brewView.jsx b/shared/homebrewery/brewView/brewView.jsx new file mode 100644 index 0000000..10b0984 --- /dev/null +++ b/shared/homebrewery/brewView/brewView.jsx @@ -0,0 +1,82 @@ + +const React = require('react'); +const _ = require('lodash'); +const cx = require('classnames'); + + +//const ErrorBar = require('./errorBar/errorBar.jsx'); + +const RenderWarnings = require('homebrewery/renderWarnings/renderWarnings.jsx'); +//const Store = require('homebrewery/brew.store.js'); + +const PAGE_HEIGHT = 1056; + + +const BrewRenderer = require('../brewRenderer/brewRenderer.jsx'); + + +const BrewView = React.createClass({ + getDefaultProps: function() { + return { + brew : { + text : '', + style : '' + }, + + + }; + }, + getInitialState: function() { + const pages = this.props.brew.text.split('\\page'); + + return { + viewablePageNumber: 0, + //height : 0, + //isMounted : false, + pages : pages, + }; + }, + + //height : 0, + pageHeight : PAGE_HEIGHT, + + componentWillReceiveProps: function(nextProps) { + //if(this.refs.pages && this.refs.pages.firstChild) this.pageHeight = this.refs.pages.firstChild.clientHeight; + + const pages = nextProps.brew.text.split('\\page'); + this.setState({ + pages : pages, + //usePPR : pages.length >= PPR_THRESHOLD + }) + }, + + + handleScroll : function(e){ + this.setState({ + viewablePageNumber : Math.floor(e.target.scrollTop / PAGE_HEIGHT) //this.pageHeight) + }); + }, + + renderPageInfo : function(){ + return
+ {this.state.viewablePageNumber + 1} / {this.state.pages.length} +
+ }, + + + render: function(){ + return
+ + + + + {this.renderPageInfo()} +
+ } +}); + +module.exports = BrewView; diff --git a/shared/homebrewery/brewView/brewView.less b/shared/homebrewery/brewView/brewView.less new file mode 100644 index 0000000..a3ff533 --- /dev/null +++ b/shared/homebrewery/brewView/brewView.less @@ -0,0 +1,42 @@ +.pane{ + position : relative; +} + +.brewView{ + overflow-y : scroll; + height : 100%; + + .pageInfo{ + position : absolute; + right : 17px; + bottom : 0; + z-index : 1000; + padding : 8px 10px; + background-color : #333; + font-size : 10px; + 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; + } + */ + .brewRenderer{ + margin : 30px 0px; + &>.phb{ + margin-right : auto; + margin-bottom : 30px; + margin-left : auto; + box-shadow : 1px 4px 14px #000; + } + } +} diff --git a/shared/homebrewery/brewView/brewView.smart.jsx b/shared/homebrewery/brewView/brewView.smart.jsx new file mode 100644 index 0000000..a062779 --- /dev/null +++ b/shared/homebrewery/brewView/brewView.smart.jsx @@ -0,0 +1,11 @@ +//const Actions = require('homebrewery/brew.actions.js'); +const Store = require('homebrewery/brew.store.js'); + +const BrewView = require('./brewView.jsx') + +module.exports = Store.createSmartComponent(BrewView, ()=>{ + return { + brew : Store.getBrew() + + }; +}); \ No newline at end of file