diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx
index 70ab71a..356967d 100644
--- a/client/homebrew/pages/printPage/printPage.jsx
+++ b/client/homebrew/pages/printPage/printPage.jsx
@@ -9,24 +9,36 @@ const PrintPage = React.createClass({
query : {},
brew : {
text : '',
+ style : ''
}
};
},
getInitialState: function() {
return {
- brewText: this.props.brew.text
+ brew: this.props.brew
};
},
componentDidMount: function() {
if(this.props.query.local){
- this.setState({ brewText : localStorage.getItem(this.props.query.local)});
+ try{
+ this.setState({
+ brew : JSON.parse(
+ localStorage.getItem(this.props.query.local)
+ )
+ });
+ }catch(e){}
}
if(this.props.query.dialog) window.print();
},
+ //TODO: This is pretty bad
+ renderStyle : function(){
+ if(!this.state.brew.style) return;
+ return
+ },
renderPages : function(){
- return _.map(this.state.brewText.split('\\page'), (page, index) => {
+ return _.map(this.state.brew.text.split('\\page'), (page, index) => {
return
;
@@ -35,6 +47,7 @@ const PrintPage = React.createClass({
render : function(){
return
+ {this.renderStyle()}
{this.renderPages()}
}
diff --git a/package.json b/package.json
index 28dcb19..c8ef3e3 100644
--- a/package.json
+++ b/package.json
@@ -7,14 +7,11 @@
"quick": "node scripts/quick.js",
"build": "node scripts/build.js",
"populate": "node scripts/populate.js",
-
"prod": "set NODE_ENV=production&& npm run build",
"postinstall": "npm run build",
"start": "node server.js",
-
- "snippet" : "nodemon scripts/snippet.test.js",
- "todo" : "node_modules/.bin/notes -h true -x node_modules/ -x build/",
-
+ "snippet": "nodemon scripts/snippet.test.js",
+ "todo": "./node_modules/.bin/fixme -i node_modules/** -i build/**",
"test": "mocha tests",
"test:dev": "nodemon -x mocha tests || exit 0",
"test:markdown": "nodemon -x mocha tests/markdown.test.js || exit 0"
@@ -50,6 +47,7 @@
"chai": "^3.5.0",
"chai-as-promised": "^6.0.0",
"chai-subset": "^1.4.0",
+ "fixme": "^0.4.3",
"mocha": "^3.2.0",
"supertest": "^2.0.1",
"supertest-as-promised": "^4.0.2"
diff --git a/server/interface.routes.js b/server/interface.routes.js
index f0d307a..0353038 100644
--- a/server/interface.routes.js
+++ b/server/interface.routes.js
@@ -45,6 +45,7 @@ router.get('/edit/:editId', mw.loadBrew, renderPage);
//Print Page
router.get('/print/:shareId', mw.viewBrew, renderPage);
+router.get('/print', renderPage);
//Source page
router.get('/source/:sharedId', mw.viewBrew, (req, res, next)=>{
diff --git a/shared/homebrewery/brew.actions.js b/shared/homebrewery/brew.actions.js
index 5e0b41e..e359aca 100644
--- a/shared/homebrewery/brew.actions.js
+++ b/shared/homebrewery/brew.actions.js
@@ -70,8 +70,9 @@ const Actions = {
},
localPrint : ()=>{
- localStorage.setItem('print', Store.getBrewText());
- window.open('/print?dialog=true&local=print','_blank');
+ const key = 'print';
+ localStorage.setItem(key, JSON.stringify(Store.getBrew()));
+ window.open(`/print?dialog=true&local=${key}`,'_blank');
},
print : ()=>{
window.open(`/print/${Store.getBrew().shareId}?dialog=true`, '_blank').focus();
diff --git a/shared/homebrewery/markdown.js b/shared/homebrewery/markdown.js
index 4c51bdf..288dedc 100644
--- a/shared/homebrewery/markdown.js
+++ b/shared/homebrewery/markdown.js
@@ -13,11 +13,11 @@ renderer.paragraph = function(text){
if(text) r.push(Markdown(text, {renderer : renderer, sanitize: true}));
const block = matches[matchIndex];
if(block && block[0] == '{'){
- r.push(`\n\n`);
+ r.push(`\n\n
`);
blockCount++;
}
if(block == '}}' && blockCount !== 0){
- r.push('
\n\n');
+ r.push('
\n\n');
blockCount--;
}
matchIndex++;
diff --git a/shared/homebrewery/phb_style/phb.blocks.less b/shared/homebrewery/phb_style/phb.blocks.less
index 0d24b29..82f7877 100644
--- a/shared/homebrewery/phb_style/phb.blocks.less
+++ b/shared/homebrewery/phb_style/phb.blocks.less
@@ -1,4 +1,20 @@
+.breakAvoid(){
+ column-break-inside : avoid;
+ -webkit-column-break-inside : avoid;
+}
+.pseudoBorder(){
+ position : relative;
+ &:before{
+ content : '';
+ position : absolute;
+ z-index : -1;
+ box-sizing : border-box;
+ border-style : solid;
+ border-image-repeat : round;
+ }
+}
+///////////////////
.spell{
ul:first-of-type{
margin-top : -0.5em;
@@ -12,69 +28,73 @@
}
}
.monster{
- -webkit-column-break-inside : avoid;
- column-break-inside : avoid;
-
- &>.internal{
- //background-color : @monsterStatBackground;
- background-image: @monsterBG;
- border-style : solid;
- border-width : 10px;
- border-image : @monsterBorder 10;
- table{
- color : @headerText;
- }
-
- ul:nth-of-type(1),ul:nth-of-type(2){
- background-color: red;
- }
-
+ .breakAvoid();
+ .pseudoBorder();
+ padding : 10px 5px;
+ table{
+ color : @headerText;
+ }
+ ul:nth-of-type(1),ul:nth-of-type(2){
+ background-color : red;
+ }
+ &:before{
+ top : 10px;
+ right : 0px;
+ bottom : 10px;
+ left : 0px;
+ //background-color : @monsterStatBackground;
+ //border-image-outset : 25px 17px;
+ border-image-slice : 10;
+ border-image-source : @monsterBorder;
+ border-image-width : 47px;
}
-
}
-
-
.note{
.useSansSerif();
- margin: 9px 0px;
- &>.internal{
- margin-bottom : 1em;
- padding : 5px 10px;
+ .breakAvoid();
+ .pseudoBorder();
+ margin : 9px 0px;
+ padding : 12px 5px;
+ &:before{
+ top : 9px;
+ right : 0px;
+ bottom : 9px;
+ left : 0px;
background-color : @green;
- border-style : solid;
border-width : 11px;
- border-image : @noteBorder 11;
border-image-outset : 9px 0px;
- box-shadow : 1px 4px 14px #888;
- h2,h3,h4{
- .useSansSerif();
- color : black;
- }
- p, ul{
- font-size : 0.352cm;
- line-height : 1.1em;
- }
-
+ border-image-slice : 11;
+ border-image-source : @noteBorder;
}
- &.alt>.internal{
- border-style : solid;
- border-width : 7px;
- border-image : @descriptiveBorder 12 round;
- border-image-outset : 4px;
+ h2,h3,h4{
+ .useSansSerif();
+ color : black;
+ }
+ p, ul{
+ font-size : 0.352cm;
+ line-height : 1.1em;
+ }
+ &.alt{
+ &:before{
+ border-style : solid;
+ border-width : 7px;
+ border-image-outset : 4px;
+ border-image-slice : 12;
+ border-image-source : @descriptiveBorder;
+ }
}
}
.frame{
- margin-top : 26px;
- margin-bottom : 37px;
- margin-left : 17px;
- margin-right: 17px;
- &>.internal{
- box-sizing : border-box;
+ .breakAvoid();
+ .pseudoBorder();
+ padding : 25px 17px;
+ &:before{
+ top : 25px;
+ right : 17px;
+ bottom : 25px;
+ left : 17px;
background-color : white;
- border : initial;
- border-style : solid;
border-image-outset : 25px 17px;
- border-image-repeat : round;
border-image-slice : 150 200 150 200;
border-image-source : @frameBorder;
border-image-width : 47px;
@@ -85,58 +105,48 @@
-webkit-column-span : all;
-moz-column-span : all;
}
-
.oneColumn{
- column-count : 1;
- column-gap : 1cm;
+ column-count : 1;
+ column-gap : 1cm;
}
.twoColumn{
- column-count : 2;
- column-gap : 1cm;
+ column-count : 2;
+ column-gap : 1cm;
}
.threeColumn{
- column-count : 3;
- column-gap : 1cm;
+ column-count : 3;
+ column-gap : 1cm;
}
.fourColumn{
- column-count : 4;
- column-gap : 1cm;
+ column-count : 4;
+ column-gap : 1cm;
}
-
.columnSplit{
visibility : hidden;
-webkit-column-break-after : always;
break-after : always;
-moz-column-break-after : always;
}
-
-
-
.brushed{
- border-image-source : url('http://i.imgur.com/nzPYZyD.png');
- border-image-outset : 25px 17px;
- border-image-repeat : round;
- border-image-slice : 1250 1250 1250 1250;
- border-image-width : 1250px;
-
-
+ border-image-outset : 25px 17px;
+ border-image-repeat : round;
+ border-image-slice : 1250 1250 1250 1250;
+ border-image-width : 1250px;
+ border-image-source : url('http : //i.imgur.com/nzPYZyD.png');
}
-
-
//basics
.left{
- text-align: left;
+ text-align : left;
}
.right{
- text-align: right;
+ text-align : right;
}
.center{
- text-align: center;
+ text-align : center;
}
.bold{
- font-weight: 800;
+ font-weight : 800;
}
-
.sansSerif{
.useSansSerif();
}
\ No newline at end of file
diff --git a/shared/homebrewery/phb_style/phb.colors.less b/shared/homebrewery/phb_style/phb.colors.less
index e499049..3f92db1 100644
--- a/shared/homebrewery/phb_style/phb.colors.less
+++ b/shared/homebrewery/phb_style/phb.colors.less
@@ -15,7 +15,7 @@
background-color : @color;
}
}
- &.note{
+ &.note:before{
background-color: @color;
}
}
diff --git a/statics/test.brew.md b/statics/test.brew.md
index fdd7f82..0442caa 100644
--- a/statics/test.brew.md
+++ b/statics/test.brew.md
@@ -18,6 +18,21 @@ Like this tool? Want to buy me a beer? [Head here](https://www.patreon.com/stolk
This tool will **always** be free, never have ads, and I will never offer any "premium" features or whatever.
+{{note,yellow,alt
+##### PDF Exporting
+ PDF Printing works best in Chrome. If you are having quality/consistency issues, try using Chrome to print instead.
+
+ After clicking the "Print" item in the navbar a new page will open and a print dialog will pop-up.
+ * Set the **Destination** to "Save as PDF"
+ * Set **Paper Size** to "Letter"
+ * If you are printing on A4 paper, make sure to have the "A4 page size snippet" in your brew
+ * In **Options** make sure "Background Images" is selected.
+ * Hit print and enjoy! You're done!
+
+ If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print
+
+
+}}
>##### PDF Exporting
@@ -32,8 +47,29 @@ This tool will **always** be free, never have ads, and I will never offer any "p
>
> If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print
+{{note
+##### PDF Exporting
+ PDF Printing works best in Chrome. If you are having quality/consistency issues, try using Chrome to print instead.
+
+ After clicking the "Print" item in the navbar a new page will open and a print dialog will pop-up.
+ * Set the **Destination** to "Save as PDF"
+ * Set **Paper Size** to "Letter"
+ * If you are printing on A4 paper, make sure to have the "A4 page size snippet" in your brew
+ * In **Options** make sure "Background Images" is selected.
+ * Hit print and enjoy! You're done!
+
+ If you want to save ink or have a monochrome printer, add the **Ink Friendly** snippet to your brew before you print
+
+
+}}
+
+
+
```
+cool stuff
+
+
```
## Big things coming in v3.0.0
@@ -66,7 +102,7 @@ If you are looking for more 5e Homebrew resources check out [r/UnearthedArcana](
\page
-{{classTable,wide
+{{frame,wide
##### The Archivist
| Level | Proficiency Bonus | Features | Statistical Occultism|
|:---:|:---:|:---|:---:|