diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx
index 0967e05e2..1f77d785c 100644
--- a/client/homebrew/pages/editPage/editPage.jsx
+++ b/client/homebrew/pages/editPage/editPage.jsx
@@ -196,11 +196,14 @@ const EditPage = createClass({
const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId);
+ const brew = this.state.brew;
+ brew.pageCount = ((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page/gm)) || []).length + 1;
+
if(this.state.saveGoogle) {
if(transfer) {
const res = await request
.post('/api/newGoogle/')
- .send(this.state.brew)
+ .send(brew)
.catch((err)=>{
console.log(err.status === 401
? 'Not signed in!'
@@ -211,7 +214,7 @@ const EditPage = createClass({
if(!res) { return; }
console.log('Deleting Local Copy');
- await request.delete(`/api/${this.state.brew.editId}`)
+ await request.delete(`/api/${brew.editId}`)
.send()
.catch((err)=>{
console.log('Error deleting Local Copy');
@@ -221,8 +224,8 @@ const EditPage = createClass({
history.replaceState(null, null, `/edit/${this.savedBrew.googleId}${this.savedBrew.editId}`); //update URL to match doc ID
} else {
const res = await request
- .put(`/api/updateGoogle/${this.state.brew.editId}`)
- .send(this.state.brew)
+ .put(`/api/updateGoogle/${brew.editId}`)
+ .send(brew)
.catch((err)=>{
console.log(err.status === 401
? 'Not signed in!'
@@ -236,14 +239,14 @@ const EditPage = createClass({
} else {
if(transfer) {
const res = await request.post('/api')
- .send(this.state.brew)
+ .send(brew)
.catch((err)=>{
console.log('Error creating Local Copy');
this.setState({ errors: err });
return;
});
- await request.get(`/api/removeGoogle/${this.state.brew.googleId}${this.state.brew.editId}`)
+ await request.get(`/api/removeGoogle/${brew.googleId}${brew.editId}`)
.send()
.catch((err)=>{
console.log('Error Deleting Google Brew');
@@ -253,8 +256,8 @@ const EditPage = createClass({
history.replaceState(null, null, `/edit/${this.savedBrew.editId}`); //update URL to match doc ID
} else {
const res = await request
- .put(`/api/update/${this.state.brew.editId}`)
- .send(this.state.brew)
+ .put(`/api/update/${brew.editId}`)
+ .send(brew)
.catch((err)=>{
console.log('Error Updating Local Brew');
this.setState({ errors: err });
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index e77fbc987..cebfed133 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -161,6 +161,8 @@ const NewPage = createClass({
brew.text = brew.text.slice(index + 5);
};
+ brew.pageCount=((brew.renderer=='legacy' ? brew.text.match(/\\page/g) : brew.text.match(/^\\page/gm)) || []).length + 1;
+
if(this.state.saveGoogle) {
const res = await request
.post('/api/newGoogle/')
diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx
index 50ab397c3..be0583f88 100644
--- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx
+++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx
@@ -104,26 +104,28 @@ const BrewItem = createClass({
const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
return
-
{brew.title}
-
{brew.description}
+
+
{brew.title}
+
{brew.description}
+
-
-
- {brew.authors.join(', ')}
-
{brew.views}
-
-
- {moment(brew.updatedAt).fromNow()}
+ {brew.pageCount &&
+
+ {brew.pageCount}
+
+ }
+
+ {moment(brew.updatedAt).fromNow()}
{this.renderGoogleDriveIcon()}
+
+
+ {brew.authors.join(', ')}
+
diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.less b/client/homebrew/pages/userPage/brewItem/brewItem.less
index efae9d8d3..b5250ae8c 100644
--- a/client/homebrew/pages/userPage/brewItem/brewItem.less
+++ b/client/homebrew/pages/userPage/brewItem/brewItem.less
@@ -10,24 +10,28 @@
min-height : 105px;
margin-right : 15px;
margin-bottom : 15px;
- padding : 5px 15px 5px 8px;
+ padding : 5px 15px 2px 8px;
padding-right : 15px;
border : 1px solid #c9ad6a;
border-radius : 5px;
-webkit-column-break-inside : avoid;
page-break-inside : avoid;
break-inside : avoid;
- h4{
- margin-bottom : 5px;
- font-size : 2.2em;
+ .text {
+ min-height : 54px;
+ h4{
+ margin-bottom : 5px;
+ font-size : 2.2em;
+ }
}
.info{
- position: absolute;
- bottom: 0px;
+ position: initial;
+ bottom: 2px;
margin-bottom: 4px;
font-family : ScalySans;
font-size : 1.2em;
&>span{
+ display : float;
margin-right : 12px;
}
}
diff --git a/server/googleActions.js b/server/googleActions.js
index eab6babf3..04cda42a9 100644
--- a/server/googleActions.js
+++ b/server/googleActions.js
@@ -109,24 +109,23 @@ GoogleActions = {
const brews = obj.data.files.map((file)=>{
return {
- text : '',
- shareId : file.properties.shareId,
- editId : file.properties.editId,
- createdAt : file.createdTime,
- updatedAt : file.modifiedTime,
- gDrive : true,
- googleId : file.id,
-
- title : file.properties.title,
- description : file.description,
+ text : '',
+ shareId : file.properties.shareId,
+ editId : file.properties.editId,
+ createdAt : file.createdTime,
+ updatedAt : file.modifiedTime,
+ gDrive : true,
+ googleId : file.id,
+ pageCount : file.properties.pageCount,
+ title : file.properties.title,
+ description : file.description,
views : file.properties.views,
- tags : '',
- published : file.properties.published ? file.properties.published == 'true' : false,
- authors : [req.account.username], //TODO: properly save and load authors to google drive
- systems : []
- };
- });
-
+ tags : '',
+ published : file.properties.published ? file.properties.published == 'true' : false,
+ authors : [req.account.username], //TODO: properly save and load authors to google drive
+ systems : []
+ };
+ });
return brews;
},
@@ -154,13 +153,15 @@ GoogleActions = {
resource : { name : `${brew.title}.txt`,
description : `${brew.description}`,
properties : { title : brew.title,
- published : brew.published,
- lastViewed : brew.lastViewed,
- views : brew.views,
- version : brew.version,
- renderer : brew.renderer,
- tags : brew.tags,
- systems : brew.systems.join() }
+ published : brew.published,
+ lastViewed : brew.lastViewed,
+ views : brew.views,
+ version : brew.version,
+ renderer : brew.renderer,
+ tags : brew.tags,
+ systems : brew.systems.join(),
+ pageCount : brew.pageCount
+ }
},
media : { mimeType : 'text/plain',
body : brew.text }
@@ -191,11 +192,12 @@ GoogleActions = {
'description' : `${brew.description}`,
'parents' : [folderId],
'properties' : { //AppProperties is not accessible
- 'shareId' : nanoid(12),
- 'editId' : nanoid(12),
- 'title' : brew.title,
- 'views' : '0',
- 'renderer' : brew.renderer || 'legacy'
+ 'shareId' : nanoid(12),
+ 'editId' : nanoid(12),
+ 'title' : brew.title,
+ 'views' : '0',
+ 'pageCount' : brew.pageCount,
+ 'renderer' : brew.renderer || 'legacy'
}
};
@@ -230,6 +232,7 @@ GoogleActions = {
updatedAt : new Date(),
gDrive : true,
googleId : obj.data.id,
+ pageCount : fileMetadata.properties.pageCount,
title : brew.title,
description : brew.description,
@@ -301,6 +304,7 @@ GoogleActions = {
createdAt : obj.data.createdTime,
updatedAt : obj.data.modifiedTime,
lastViewed : obj.data.properties.lastViewed,
+ pageCount : obj.data.properties.pageCount,
views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined
version : parseInt(obj.data.properties.version) || 0,
renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy',
diff --git a/server/homebrew.model.js b/server/homebrew.model.js
index c2abdf199..acc78a624 100644
--- a/server/homebrew.model.js
+++ b/server/homebrew.model.js
@@ -4,11 +4,12 @@ const _ = require('lodash');
const zlib = require('zlib');
const HomebrewSchema = mongoose.Schema({
- shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
- editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
- title : { type: String, default: '' },
- text : { type: String, default: '' },
- textBin : { type: Buffer },
+ shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
+ editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
+ title : { type: String, default: '' },
+ text : { type: String, default: '' },
+ textBin : { type: Buffer },
+ pageCount : { type: Number, default: 1 },
description : { type: String, default: '' },
tags : { type: String, default: '' },