1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-10-31 00:07:48 +02:00

Added NoteText component

This commit is contained in:
Laurent Cozic
2017-11-04 23:27:13 +00:00
parent ec259f866f
commit cc277018b7
4 changed files with 69 additions and 15 deletions

View File

@@ -39,24 +39,17 @@ class ElectronAppWrapper {
} }
createWindow() { createWindow() {
// Create the browser window.
this.win_ = new BrowserWindow({width: 800, height: 600}) this.win_ = new BrowserWindow({width: 800, height: 600})
// and load the index.html of the app.
this.win_.loadURL(url.format({ this.win_.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'), pathname: path.join(__dirname, 'index.html'),
protocol: 'file:', protocol: 'file:',
slashes: true slashes: true
})) }))
// Open the DevTools.
this.win_.webContents.openDevTools() this.win_.webContents.openDevTools()
// Emitted when the window is closed.
this.win_.on('closed', () => { this.win_.on('closed', () => {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
this.win_ = null this.win_ = null
}) })
@@ -97,7 +90,6 @@ class ElectronAppWrapper {
this.createWindow(); this.createWindow();
// Quit when all windows are closed.
this.electronApp_.on('window-all-closed', () => { this.electronApp_.on('window-all-closed', () => {
// On macOS it is common for applications and their menu bar // On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q // to stay active until the user quits explicitly with Cmd + Q

View File

@@ -3,9 +3,16 @@ const { ItemList } = require('./ItemList.min.js');
class NoteListComponent extends React.Component { class NoteListComponent extends React.Component {
itemRenderer(index, item) { itemRenderer(index, item) {
const onClick = () => {
this.props.dispatch({
type: 'NOTES_SELECT',
noteId: item.id,
});
}
let classes = ['item']; let classes = ['item'];
classes.push(index % 2 === 0 ? 'even' : 'odd'); classes.push(index % 2 === 0 ? 'even' : 'odd');
return <div onClick={() => {console.info(item)}} className={classes.join(' ')} key={index}>{item.title}</div> return <div onClick={() => { onClick() }} className={classes.join(' ')} key={index}>{item.title}</div>
} }
render() { render() {
@@ -16,19 +23,19 @@ class NoteListComponent extends React.Component {
className={"note-list"} className={"note-list"}
items={this.props.notes} items={this.props.notes}
itemRenderer={ (index, item) => { return this.itemRenderer(index, item) } } itemRenderer={ (index, item) => { return this.itemRenderer(index, item) } }
/> ></ItemList>
); );
} }
} }
const mapStateToProps = (state) => { const mapStateToProps = (state) => {
let notes = []; //let notes = [];
for (let i = 0; i < 100; i++) notes.push({ title: "Note " + i }); //for (let i = 0; i < 100; i++) notes.push({ title: "Note " + i });
return { return {
//notes: state.notes, notes: state.notes,
notes: notes, //notes: notes,
}; };
}; };

View File

@@ -0,0 +1,44 @@
//const { BaseModel } = require('lib/base-model.js');
class NoteTextComponent extends React.Component {
componentWillMount() {
this.setState({
note: null,
});
}
componentWillReceiveProps(nextProps) {
if (nextProps.noteId) this.reloadNote();
}
async reloadNote() {
const note = this.props.noteId ? await Note.load(this.props.noteId) : null;
this.setState({
note: note,
});
}
render() {
const note = this.state.note;
const body = note ? note.body : 'no note';
return (
<div style={this.props.style}>
{ body }
</div>
);
}
}
const mapStateToProps = (state) => {
return {
noteId: state.selectedNoteId,
notes: state.notes,
};
};
const NoteText = connect(mapStateToProps)(NoteTextComponent);
module.exports = { NoteText };

View File

@@ -4,6 +4,7 @@ const { createStore } = require('redux');
const { connect, Provider } = require('react-redux'); const { connect, Provider } = require('react-redux');
const { NoteList } = require('./gui/NoteList.min.js'); const { NoteList } = require('./gui/NoteList.min.js');
const { NoteText } = require('./gui/NoteText.min.js');
const { app } = require('electron').remote.require('./app'); const { app } = require('electron').remote.require('./app');
@@ -16,13 +17,23 @@ class ReactRootComponent extends React.Component {
}; };
const noteListStyle = { const noteListStyle = {
width: this.props.size.width, width: Math.floor(this.props.size.width / 2),
height: this.props.size.height, height: this.props.size.height,
display: 'inline-block',
verticalAlign: 'top',
};
const noteTextStyle = {
width: this.props.size.width - noteListStyle.width,
height: this.props.size.height,
display: 'inline-block',
verticalAlign: 'top',
}; };
return ( return (
<div style={style}> <div style={style}>
<NoteList itemHeight={40} style={noteListStyle}></NoteList> <NoteList itemHeight={40} style={noteListStyle}></NoteList>
<NoteText style={noteTextStyle}></NoteText>
</div> </div>
); );
} }