mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-05 18:52:38 +00:00
Merge pull request #4458 from naturalcrit/new/edit/home_commonSaveButton
Make the renderSaveButton() function common between edit/new/home
This commit is contained in:
@@ -46,8 +46,8 @@ const STYLEKEY = 'HB_newPage_style';
|
|||||||
const SNIPKEY = 'HB_newPage_snippets';
|
const SNIPKEY = 'HB_newPage_snippets';
|
||||||
const METAKEY = 'HB_newPage_meta';
|
const METAKEY = 'HB_newPage_meta';
|
||||||
|
|
||||||
|
|
||||||
const useLocalStorage = false;
|
const useLocalStorage = false;
|
||||||
|
const neverSaved = false;
|
||||||
|
|
||||||
const EditPage = (props)=>{
|
const EditPage = (props)=>{
|
||||||
props = {
|
props = {
|
||||||
@@ -309,14 +309,18 @@ const EditPage = (props)=>{
|
|||||||
|
|
||||||
// #3 - Unsaved changes exist, click to save, show SAVE NOW
|
// #3 - Unsaved changes exist, click to save, show SAVE NOW
|
||||||
if(unsavedChanges)
|
if(unsavedChanges)
|
||||||
return <Nav.item className='save' onClick={()=>trySave(true)} color='blue' icon='fas fa-save'>Save Now</Nav.item>;
|
return <Nav.item className='save' onClick={()=>trySave(true)} color='blue' icon='fas fa-save'>save now</Nav.item>;
|
||||||
|
|
||||||
// #4 - No unsaved changes, autosave is ON, show AUTO-SAVED
|
// #4 - No unsaved changes, autosave is ON, show AUTO-SAVED
|
||||||
if(autoSaveEnabled)
|
if(autoSaveEnabled)
|
||||||
return <Nav.item className='save saved'>auto-saved.</Nav.item>;
|
return <Nav.item className='save saved'>auto-saved</Nav.item>;
|
||||||
|
|
||||||
|
// #5 - No unsaved changes, and has never been saved, hide the button
|
||||||
|
if(neverSaved)
|
||||||
|
return <Nav.item className='save neverSaved'>save now</Nav.item>;
|
||||||
|
|
||||||
// DEFAULT - No unsaved changes, show SAVED
|
// DEFAULT - No unsaved changes, show SAVED
|
||||||
return <Nav.item className='save saved'>saved.</Nav.item>;
|
return <Nav.item className='save saved'>saved</Nav.item>;
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleAutoSave = ()=>{
|
const toggleAutoSave = ()=>{
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ const SNIPKEY = 'homebrewery-new-snippets';
|
|||||||
const METAKEY = 'homebrewery-new-meta';
|
const METAKEY = 'homebrewery-new-meta';
|
||||||
|
|
||||||
const useLocalStorage = false;
|
const useLocalStorage = false;
|
||||||
|
const neverSaved = true;
|
||||||
|
|
||||||
const HomePage =(props)=>{
|
const HomePage =(props)=>{
|
||||||
props = {
|
props = {
|
||||||
@@ -122,6 +123,41 @@ const HomePage =(props)=>{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const renderSaveButton = ()=>{
|
||||||
|
// #1 - Currently saving, show SAVING
|
||||||
|
if(isSaving)
|
||||||
|
return <Nav.item className='save' icon='fas fa-spinner fa-spin'>saving...</Nav.item>;
|
||||||
|
|
||||||
|
// #2 - Unsaved changes exist, autosave is OFF and warning timer has expired, show AUTOSAVE WARNING
|
||||||
|
// if(unsavedChanges && warnUnsavedChanges) {
|
||||||
|
// resetWarnUnsavedTimer();
|
||||||
|
// const elapsedTime = Math.round((new Date() - lastSavedTime) / 1000 / 60);
|
||||||
|
// const text = elapsedTime === 0
|
||||||
|
// ? 'Autosave is OFF.'
|
||||||
|
// : `Autosave is OFF, and you haven't saved for ${elapsedTime} minutes.`;
|
||||||
|
|
||||||
|
// return <Nav.item className='save error' icon='fas fa-exclamation-circle'>
|
||||||
|
// Reminder...
|
||||||
|
// <div className='errorContainer'>{text}</div>
|
||||||
|
// </Nav.item>;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// #3 - Unsaved changes exist, click to save, show SAVE NOW
|
||||||
|
if(unsavedChanges)
|
||||||
|
return <Nav.item className='save' onClick={save} color='blue' icon='fas fa-save'>save now</Nav.item>;
|
||||||
|
|
||||||
|
// #4 - No unsaved changes, autosave is ON, show AUTO-SAVED
|
||||||
|
if(autoSaveEnabled)
|
||||||
|
return <Nav.item className='save saved'>auto-saved</Nav.item>;
|
||||||
|
|
||||||
|
// #5 - No unsaved changes, and has never been saved, hide the button
|
||||||
|
if(neverSaved)
|
||||||
|
return <Nav.item className='save neverSaved'>save now</Nav.item>;
|
||||||
|
|
||||||
|
// DEFAULT - No unsaved changes, show SAVED
|
||||||
|
return <Nav.item className='save saved'>saved</Nav.item>;
|
||||||
|
};
|
||||||
|
|
||||||
const clearError = ()=>{
|
const clearError = ()=>{
|
||||||
setError(null);
|
setError(null);
|
||||||
setIsSaving(false);
|
setIsSaving(false);
|
||||||
@@ -130,10 +166,9 @@ const HomePage =(props)=>{
|
|||||||
const renderNavbar = ()=>{
|
const renderNavbar = ()=>{
|
||||||
return <Navbar ver={props.ver}>
|
return <Navbar ver={props.ver}>
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
{error ?
|
{error
|
||||||
<ErrorNavItem error={error} clearError={clearError}></ErrorNavItem> :
|
? <ErrorNavItem error={error} clearError={clearError} />
|
||||||
null
|
: renderSaveButton()}
|
||||||
}
|
|
||||||
<NewBrewItem />
|
<NewBrewItem />
|
||||||
<PrintNavItem />
|
<PrintNavItem />
|
||||||
<HelpNavItem />
|
<HelpNavItem />
|
||||||
|
|||||||
@@ -34,7 +34,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.navItem.save {
|
.navItem.save {
|
||||||
|
.fadeInRight();
|
||||||
|
.transition(opacity);
|
||||||
background-color : @orange;
|
background-color : @orange;
|
||||||
&:hover { background-color : @green; }
|
&:hover { background-color : @green; }
|
||||||
|
&.neverSaved {
|
||||||
|
.fadeOutRight();
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ const METAKEY = 'HB_newPage_metadata';
|
|||||||
const SNIPKEY = 'HB_newPage_snippets';
|
const SNIPKEY = 'HB_newPage_snippets';
|
||||||
const SAVEKEYPREFIX = 'HB_editor_defaultSave_';
|
const SAVEKEYPREFIX = 'HB_editor_defaultSave_';
|
||||||
|
|
||||||
|
|
||||||
const useLocalStorage = true;
|
const useLocalStorage = true;
|
||||||
|
const neverSaved = true;
|
||||||
|
|
||||||
const NewPage = (props) => {
|
const NewPage = (props) => {
|
||||||
props = {
|
props = {
|
||||||
@@ -96,6 +96,7 @@ const NewPage = (props) => {
|
|||||||
const saveStorage = localStorage.getItem(SAVEKEY) || 'HOMEBREWERY';
|
const saveStorage = localStorage.getItem(SAVEKEY) || 'HOMEBREWERY';
|
||||||
|
|
||||||
setCurrentBrew(brew);
|
setCurrentBrew(brew);
|
||||||
|
lastSavedBrew.current = brew;
|
||||||
setSaveGoogle(saveStorage == 'GOOGLE-DRIVE' && saveGoogle);
|
setSaveGoogle(saveStorage == 'GOOGLE-DRIVE' && saveGoogle);
|
||||||
|
|
||||||
localStorage.setItem(BREWKEY, brew.text);
|
localStorage.setItem(BREWKEY, brew.text);
|
||||||
@@ -169,15 +170,38 @@ const NewPage = (props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const renderSaveButton = ()=>{
|
const renderSaveButton = ()=>{
|
||||||
if(isSaving){
|
// #1 - Currently saving, show SAVING
|
||||||
return <Nav.item icon='fas fa-spinner fa-spin' className='save'>
|
if(isSaving)
|
||||||
save...
|
return <Nav.item className='save' icon='fas fa-spinner fa-spin'>saving...</Nav.item>;
|
||||||
</Nav.item>;
|
|
||||||
} else {
|
// #2 - Unsaved changes exist, autosave is OFF and warning timer has expired, show AUTOSAVE WARNING
|
||||||
return <Nav.item icon='fas fa-save' className='save' onClick={save}>
|
// if(unsavedChanges && warnUnsavedChanges) {
|
||||||
save
|
// resetWarnUnsavedTimer();
|
||||||
</Nav.item>;
|
// const elapsedTime = Math.round((new Date() - lastSavedTime) / 1000 / 60);
|
||||||
}
|
// const text = elapsedTime === 0
|
||||||
|
// ? 'Autosave is OFF.'
|
||||||
|
// : `Autosave is OFF, and you haven't saved for ${elapsedTime} minutes.`;
|
||||||
|
|
||||||
|
// return <Nav.item className='save error' icon='fas fa-exclamation-circle'>
|
||||||
|
// Reminder...
|
||||||
|
// <div className='errorContainer'>{text}</div>
|
||||||
|
// </Nav.item>;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// #3 - Unsaved changes exist, click to save, show SAVE NOW
|
||||||
|
if(unsavedChanges)
|
||||||
|
return <Nav.item className='save' onClick={save} color='blue' icon='fas fa-save'>save now</Nav.item>;
|
||||||
|
|
||||||
|
// #4 - No unsaved changes, autosave is ON, show AUTO-SAVED
|
||||||
|
if(autoSaveEnabled)
|
||||||
|
return <Nav.item className='save saved'>auto-saved</Nav.item>;
|
||||||
|
|
||||||
|
// #5 - No unsaved changes, and has never been saved, hide the button
|
||||||
|
if(neverSaved)
|
||||||
|
return <Nav.item className='save neverSaved'>save now</Nav.item>;
|
||||||
|
|
||||||
|
// DEFAULT - No unsaved changes, show SAVED
|
||||||
|
return <Nav.item className='save saved'>saved</Nav.item>;
|
||||||
};
|
};
|
||||||
|
|
||||||
const clearError = ()=>{
|
const clearError = ()=>{
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
.newPage {
|
.newPage {
|
||||||
.navItem.save {
|
.navItem.save {
|
||||||
|
.fadeInRight();
|
||||||
|
.transition(opacity);
|
||||||
background-color : @orange;
|
background-color : @orange;
|
||||||
&:hover { background-color : @green; }
|
&:hover { background-color : @green; }
|
||||||
|
&.neverSaved {
|
||||||
|
.fadeOutRight();
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user