mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-14 10:42:38 +00:00
Merge pull request #1491 from G-Ambatte/addPageCountToUserPage
Display Brew page count on User Page
This commit is contained in:
@@ -196,11 +196,14 @@ const EditPage = createClass({
|
|||||||
|
|
||||||
const transfer = this.state.saveGoogle == _.isNil(this.state.brew.googleId);
|
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(this.state.saveGoogle) {
|
||||||
if(transfer) {
|
if(transfer) {
|
||||||
const res = await request
|
const res = await request
|
||||||
.post('/api/newGoogle/')
|
.post('/api/newGoogle/')
|
||||||
.send(this.state.brew)
|
.send(brew)
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
console.log(err.status === 401
|
console.log(err.status === 401
|
||||||
? 'Not signed in!'
|
? 'Not signed in!'
|
||||||
@@ -211,7 +214,7 @@ const EditPage = createClass({
|
|||||||
if(!res) { return; }
|
if(!res) { return; }
|
||||||
|
|
||||||
console.log('Deleting Local Copy');
|
console.log('Deleting Local Copy');
|
||||||
await request.delete(`/api/${this.state.brew.editId}`)
|
await request.delete(`/api/${brew.editId}`)
|
||||||
.send()
|
.send()
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
console.log('Error deleting Local Copy');
|
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
|
history.replaceState(null, null, `/edit/${this.savedBrew.googleId}${this.savedBrew.editId}`); //update URL to match doc ID
|
||||||
} else {
|
} else {
|
||||||
const res = await request
|
const res = await request
|
||||||
.put(`/api/updateGoogle/${this.state.brew.editId}`)
|
.put(`/api/updateGoogle/${brew.editId}`)
|
||||||
.send(this.state.brew)
|
.send(brew)
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
console.log(err.status === 401
|
console.log(err.status === 401
|
||||||
? 'Not signed in!'
|
? 'Not signed in!'
|
||||||
@@ -236,14 +239,14 @@ const EditPage = createClass({
|
|||||||
} else {
|
} else {
|
||||||
if(transfer) {
|
if(transfer) {
|
||||||
const res = await request.post('/api')
|
const res = await request.post('/api')
|
||||||
.send(this.state.brew)
|
.send(brew)
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
console.log('Error creating Local Copy');
|
console.log('Error creating Local Copy');
|
||||||
this.setState({ errors: err });
|
this.setState({ errors: err });
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
|
|
||||||
await request.get(`/api/removeGoogle/${this.state.brew.googleId}${this.state.brew.editId}`)
|
await request.get(`/api/removeGoogle/${brew.googleId}${brew.editId}`)
|
||||||
.send()
|
.send()
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
console.log('Error Deleting Google Brew');
|
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
|
history.replaceState(null, null, `/edit/${this.savedBrew.editId}`); //update URL to match doc ID
|
||||||
} else {
|
} else {
|
||||||
const res = await request
|
const res = await request
|
||||||
.put(`/api/update/${this.state.brew.editId}`)
|
.put(`/api/update/${brew.editId}`)
|
||||||
.send(this.state.brew)
|
.send(brew)
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
console.log('Error Updating Local Brew');
|
console.log('Error Updating Local Brew');
|
||||||
this.setState({ errors: err });
|
this.setState({ errors: err });
|
||||||
|
|||||||
@@ -161,6 +161,8 @@ const NewPage = createClass({
|
|||||||
brew.text = brew.text.slice(index + 5);
|
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) {
|
if(this.state.saveGoogle) {
|
||||||
const res = await request
|
const res = await request
|
||||||
.post('/api/newGoogle/')
|
.post('/api/newGoogle/')
|
||||||
|
|||||||
@@ -104,26 +104,28 @@ const BrewItem = createClass({
|
|||||||
const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
|
const dateFormatString = 'YYYY-MM-DD HH:mm:ss';
|
||||||
|
|
||||||
return <div className='brewItem'>
|
return <div className='brewItem'>
|
||||||
<h2>{brew.title}</h2>
|
<div className='text'>
|
||||||
<p className='description'>{brew.description}</p>
|
<h2>{brew.title}</h2>
|
||||||
|
<p className='description'>{brew.description}</p>
|
||||||
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<div className='info'>
|
<div className='info'>
|
||||||
<span title={`Authors:\n${brew.authors.join('\n')}`}>
|
|
||||||
<i className='fas fa-user'/> {brew.authors.join(', ')}
|
|
||||||
</span>
|
|
||||||
<span title={`Last viewed: ${moment(brew.lastViewed).local().format(dateFormatString)}`}>
|
<span title={`Last viewed: ${moment(brew.lastViewed).local().format(dateFormatString)}`}>
|
||||||
<i className='fas fa-eye'/> {brew.views}
|
<i className='fas fa-eye'/> {brew.views}
|
||||||
</span>
|
</span>
|
||||||
<span
|
{brew.pageCount &&
|
||||||
title={
|
<span title={`Page count: ${brew.pageCount}`}>
|
||||||
`Created: ${brew.createdAt ? moment(brew.createdAt).local().format(dateFormatString) : 'UNKNOWN'}\n` +
|
<i className='far fa-file' /> {brew.pageCount}
|
||||||
`Last updated: ${brew.updatedAt ? moment(brew.updatedAt).local().format(dateFormatString) : 'UNKNOWN'}`
|
</span>
|
||||||
}>
|
}
|
||||||
<i className='fas fa-sync-alt' />
|
<span>
|
||||||
{moment(brew.updatedAt).fromNow()}
|
<i className='fas fa-sync-alt' /> {moment(brew.updatedAt).fromNow()}
|
||||||
</span>
|
</span>
|
||||||
{this.renderGoogleDriveIcon()}
|
{this.renderGoogleDriveIcon()}
|
||||||
|
<br />
|
||||||
|
<span title={`Authors:\n${brew.authors.join('\n')}`}>
|
||||||
|
<i className='fas fa-user'/> {brew.authors.join(', ')}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='links'>
|
<div className='links'>
|
||||||
|
|||||||
@@ -10,24 +10,28 @@
|
|||||||
min-height : 105px;
|
min-height : 105px;
|
||||||
margin-right : 15px;
|
margin-right : 15px;
|
||||||
margin-bottom : 15px;
|
margin-bottom : 15px;
|
||||||
padding : 5px 15px 5px 8px;
|
padding : 5px 15px 2px 8px;
|
||||||
padding-right : 15px;
|
padding-right : 15px;
|
||||||
border : 1px solid #c9ad6a;
|
border : 1px solid #c9ad6a;
|
||||||
border-radius : 5px;
|
border-radius : 5px;
|
||||||
-webkit-column-break-inside : avoid;
|
-webkit-column-break-inside : avoid;
|
||||||
page-break-inside : avoid;
|
page-break-inside : avoid;
|
||||||
break-inside : avoid;
|
break-inside : avoid;
|
||||||
h4{
|
.text {
|
||||||
margin-bottom : 5px;
|
min-height : 54px;
|
||||||
font-size : 2.2em;
|
h4{
|
||||||
|
margin-bottom : 5px;
|
||||||
|
font-size : 2.2em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.info{
|
.info{
|
||||||
position: absolute;
|
position: initial;
|
||||||
bottom: 0px;
|
bottom: 2px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
font-family : ScalySans;
|
font-family : ScalySans;
|
||||||
font-size : 1.2em;
|
font-size : 1.2em;
|
||||||
&>span{
|
&>span{
|
||||||
|
display : float;
|
||||||
margin-right : 12px;
|
margin-right : 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,24 +109,23 @@ GoogleActions = {
|
|||||||
|
|
||||||
const brews = obj.data.files.map((file)=>{
|
const brews = obj.data.files.map((file)=>{
|
||||||
return {
|
return {
|
||||||
text : '',
|
text : '',
|
||||||
shareId : file.properties.shareId,
|
shareId : file.properties.shareId,
|
||||||
editId : file.properties.editId,
|
editId : file.properties.editId,
|
||||||
createdAt : file.createdTime,
|
createdAt : file.createdTime,
|
||||||
updatedAt : file.modifiedTime,
|
updatedAt : file.modifiedTime,
|
||||||
gDrive : true,
|
gDrive : true,
|
||||||
googleId : file.id,
|
googleId : file.id,
|
||||||
|
pageCount : file.properties.pageCount,
|
||||||
title : file.properties.title,
|
title : file.properties.title,
|
||||||
description : file.description,
|
description : file.description,
|
||||||
views : file.properties.views,
|
views : file.properties.views,
|
||||||
tags : '',
|
tags : '',
|
||||||
published : file.properties.published ? file.properties.published == 'true' : false,
|
published : file.properties.published ? file.properties.published == 'true' : false,
|
||||||
authors : [req.account.username], //TODO: properly save and load authors to google drive
|
authors : [req.account.username], //TODO: properly save and load authors to google drive
|
||||||
systems : []
|
systems : []
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
return brews;
|
return brews;
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -154,13 +153,15 @@ GoogleActions = {
|
|||||||
resource : { name : `${brew.title}.txt`,
|
resource : { name : `${brew.title}.txt`,
|
||||||
description : `${brew.description}`,
|
description : `${brew.description}`,
|
||||||
properties : { title : brew.title,
|
properties : { title : brew.title,
|
||||||
published : brew.published,
|
published : brew.published,
|
||||||
lastViewed : brew.lastViewed,
|
lastViewed : brew.lastViewed,
|
||||||
views : brew.views,
|
views : brew.views,
|
||||||
version : brew.version,
|
version : brew.version,
|
||||||
renderer : brew.renderer,
|
renderer : brew.renderer,
|
||||||
tags : brew.tags,
|
tags : brew.tags,
|
||||||
systems : brew.systems.join() }
|
systems : brew.systems.join(),
|
||||||
|
pageCount : brew.pageCount
|
||||||
|
}
|
||||||
},
|
},
|
||||||
media : { mimeType : 'text/plain',
|
media : { mimeType : 'text/plain',
|
||||||
body : brew.text }
|
body : brew.text }
|
||||||
@@ -191,11 +192,12 @@ GoogleActions = {
|
|||||||
'description' : `${brew.description}`,
|
'description' : `${brew.description}`,
|
||||||
'parents' : [folderId],
|
'parents' : [folderId],
|
||||||
'properties' : { //AppProperties is not accessible
|
'properties' : { //AppProperties is not accessible
|
||||||
'shareId' : nanoid(12),
|
'shareId' : nanoid(12),
|
||||||
'editId' : nanoid(12),
|
'editId' : nanoid(12),
|
||||||
'title' : brew.title,
|
'title' : brew.title,
|
||||||
'views' : '0',
|
'views' : '0',
|
||||||
'renderer' : brew.renderer || 'legacy'
|
'pageCount' : brew.pageCount,
|
||||||
|
'renderer' : brew.renderer || 'legacy'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -230,6 +232,7 @@ GoogleActions = {
|
|||||||
updatedAt : new Date(),
|
updatedAt : new Date(),
|
||||||
gDrive : true,
|
gDrive : true,
|
||||||
googleId : obj.data.id,
|
googleId : obj.data.id,
|
||||||
|
pageCount : fileMetadata.properties.pageCount,
|
||||||
|
|
||||||
title : brew.title,
|
title : brew.title,
|
||||||
description : brew.description,
|
description : brew.description,
|
||||||
@@ -301,6 +304,7 @@ GoogleActions = {
|
|||||||
createdAt : obj.data.createdTime,
|
createdAt : obj.data.createdTime,
|
||||||
updatedAt : obj.data.modifiedTime,
|
updatedAt : obj.data.modifiedTime,
|
||||||
lastViewed : obj.data.properties.lastViewed,
|
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
|
views : parseInt(obj.data.properties.views) || 0, //brews with no view parameter will return undefined
|
||||||
version : parseInt(obj.data.properties.version) || 0,
|
version : parseInt(obj.data.properties.version) || 0,
|
||||||
renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy',
|
renderer : obj.data.properties.renderer ? obj.data.properties.renderer : 'legacy',
|
||||||
|
|||||||
@@ -4,11 +4,12 @@ const _ = require('lodash');
|
|||||||
const zlib = require('zlib');
|
const zlib = require('zlib');
|
||||||
|
|
||||||
const HomebrewSchema = mongoose.Schema({
|
const HomebrewSchema = mongoose.Schema({
|
||||||
shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
shareId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
||||||
editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
editId : { type: String, default: ()=>{return nanoid(12);}, index: { unique: true } },
|
||||||
title : { type: String, default: '' },
|
title : { type: String, default: '' },
|
||||||
text : { type: String, default: '' },
|
text : { type: String, default: '' },
|
||||||
textBin : { type: Buffer },
|
textBin : { type: Buffer },
|
||||||
|
pageCount : { type: Number, default: 1 },
|
||||||
|
|
||||||
description : { type: String, default: '' },
|
description : { type: String, default: '' },
|
||||||
tags : { type: String, default: '' },
|
tags : { type: String, default: '' },
|
||||||
|
|||||||
Reference in New Issue
Block a user