diff --git a/browser/components/FolderMark.js b/browser/components/FolderMark.js
deleted file mode 100644
index dd6708b9..00000000
--- a/browser/components/FolderMark.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import React, { PropTypes } from 'react'
-
-const BLUE = '#3460C7'
-const LIGHTBLUE = '#2BA5F7'
-const ORANGE = '#FF8E00'
-const YELLOW = '#E8D252'
-const GREEN = '#3FD941'
-const DARKGREEN = '#1FAD85'
-const RED = '#E10051'
-const PURPLE = '#B013A4'
-
-function getColorByIndex (index) {
- switch (index % 8) {
- case 0:
- return RED
- case 1:
- return ORANGE
- case 2:
- return YELLOW
- case 3:
- return GREEN
- case 4:
- return DARKGREEN
- case 5:
- return LIGHTBLUE
- case 6:
- return BLUE
- case 7:
- return PURPLE
- default:
- return DARKGREEN
- }
-}
-
-export default class FolderMark extends React.Component {
- render () {
- let color = getColorByIndex(this.props.color)
- let className = 'FolderMark fa fa-square fa-fw'
- if (this.props.className != null) {
- className += ' active'
- }
-
- return (
-
- )
- }
-}
-
-FolderMark.propTypes = {
- color: PropTypes.number,
- className: PropTypes.string
-}
diff --git a/browser/lib/Repository.js b/browser/lib/Repository.js
index 9c583b4b..b23e497d 100644
--- a/browser/lib/Repository.js
+++ b/browser/lib/Repository.js
@@ -87,7 +87,6 @@ let repositories = []
* ##### `note.cson`
*
* ```cson
- * name: String
* tags: [String] // tags
* folder: String // hash key of folder
* mode: String // syntax mode
@@ -151,7 +150,7 @@ class Repository {
let noteNames = fs.readdirSync(dataPath)
let notes = noteNames
.map((noteName) => {
- let notePath = path.join(dataPath, noteNames)
+ let notePath = path.join(dataPath, noteName)
return new Promise(function (resolve, reject) {
CSON.readFile(notePath, function (err, obj) {
@@ -218,7 +217,9 @@ class Repository {
this.isMount = true
// Put in `repositories` array if it isn't in.
- let targetIndex = _.findIndex(repositories, {cached: {key: this.cached.key}})
+ let targetIndex = _.findIndex(repositories, (repo) => {
+ this.cached.key === repo.cached.key
+ })
if (targetIndex < 0) {
repositories.push(this)
}
@@ -241,7 +242,9 @@ class Repository {
this.isMount = false
// Discard from `repositories` array if it is in.
- let targetIndex = _.findIndex(repositories, {cached: {key: this.cached.key}})
+ let targetIndex = _.findIndex(repositories, (repo) => {
+ this.cached.key === repo.cached.key
+ })
if (targetIndex > -1) {
repositories.splice(targetIndex, 1)
}
@@ -586,6 +589,7 @@ class Repository {
}
static saveAllCached (allCached) {
+ console.info('cach updated > ', allCached)
localStorage.setItem('repositories', JSON.stringify(allCached))
}
diff --git a/browser/main/Main.js b/browser/main/Main.js
index ee8f12e6..c3489f87 100644
--- a/browser/main/Main.js
+++ b/browser/main/Main.js
@@ -84,18 +84,35 @@ class Main extends React.Component {
-
+
-
+
this.handleSlideMouseDown(e)}
draggable='false'
- />
+ >
+
+
{
+ return sum.concat(repository.notes
+ .map((note) => {
+ note._repository = repository
+ return note
+ }))
+ }, [])
+ }
+
+ let repository = _.find(repositories, {key: repositoryKey})
+ if (repository == null) return []
+
+ let folder = _.find(repository.folders, {key: folderKey})
+ if (folder == null) {
+ return repository.notes
+ .map((note) => {
+ note._repository = repository
+ return note
+ })
+ }
+
+ return repository.notes
+ .filter((note) => note.folder === folderKey)
+ .map((note) => {
+ note._repository = repository
+ return note
+ })
+ }
+
+ handleNoteClick (key) {
+ return (e) => {
+ console.log(key)
+ }
+ }
+
render () {
- let articleElements = []
+ let notes = this.getNotes()
+ let noteElements = notes.map((note) => {
+ let folder = _.find(note._repository.folders, {key: note.folder})
+ let tagElements = note.tags.map((tag) => {
+ return {tag}
+ })
+ let key = `${note._repository.key}/${note.key}`
+
+ return (
+ this.handleNoteClick(key)(e)}
+ >
+
+
+
+ {folder.name}
+
+
+
+ {moment(note.createdAt).fromNow()}
+
+
+
+
+
{note.title}
+
+
{tagElements.length > 0 ? tagElements : Not tagged yet}
+
+
+ )
+ })
return (
this.handleNoteListKeyDown(e)}
style={this.props.style}
>
- {articleElements}
+ {noteElements}
)
}
}
+NoteList.contextTypes = {
+ router: PropTypes.shape([])
+}
NoteList.propTypes = {
dispatch: PropTypes.func,
diff --git a/browser/main/SideNav/FolderItem.styl b/browser/main/SideNav/FolderItem.styl
index bf64366b..e138c160 100644
--- a/browser/main/SideNav/FolderItem.styl
+++ b/browser/main/SideNav/FolderItem.styl
@@ -61,6 +61,8 @@
border-radius 5px
border $ui-border
outline none
+ background-color white
+ z-index 1
&:focus
border-color $ui-input--focus-borderColor
&:disabled
diff --git a/browser/main/TopBar/index.js b/browser/main/TopBar/index.js
index 3aa89aee..e1071520 100644
--- a/browser/main/TopBar/index.js
+++ b/browser/main/TopBar/index.js
@@ -1,8 +1,9 @@
import React, { PropTypes } from 'react'
-import { connect } from 'react-redux'
import CSSModules from 'browser/lib/CSSModules'
import styles from './TopBar.styl'
import activityRecord from 'browser/lib/activityRecord'
+import Repository from 'browser/lib/Repository'
+import _ from 'lodash'
const OSX = window.process.platform === 'darwin'
@@ -30,23 +31,56 @@ class TopBar extends React.Component {
this.searchInput.blur()
}
- handleSearchChange (e) {
- }
-
- handleSearchClearButton (e) {
- this.searchInput.value = ''
- this.focusInput()
- }
-
handleNewPostButtonClick (e) {
activityRecord.emit('ARTICLE_CREATE')
+
+ let { params, repositories } = this.props
+
+ let folderKey = params.folderKey
+ let repositoryKey = params.repositoryKey
+ if (folderKey == null) {
+ let repository = _.find(repositories, {key: repositoryKey})
+ if (repository == null) {
+ repository = repositories[0]
+ }
+ if (repository != null) {
+ repositoryKey = repository.key
+ folderKey = repository.folders[0] != null && repository.folders[0].key
+ }
+ if (folderKey == null) throw new Error('no folder exists')
+ }
+
+ let newNote = {
+ title: 'New Note',
+ content: '',
+ folder: folderKey,
+ tags: [],
+ mode: 'markdown'
+ }
+
+ Repository
+ .find(repositoryKey)
+ .then((repo) => {
+ console.log(repo)
+ return repo.addNote(newNote)
+ })
+ .then((note) => {
+ let { dispatch } = this.props
+ dispatch({
+ type: 'ADD_NOTE',
+ repository: repositoryKey,
+ note: note
+ })
+ })
+ .catch((err) => {
+ console.error(err)
+ })
}
handleTutorialButtonClick (e) {
}
handleLinksButton (e) {
-
}
render () {
@@ -112,4 +146,4 @@ TopBar.propTypes = {
})
}
-export default connect((x) => x)(CSSModules(TopBar, styles))
+export default CSSModules(TopBar, styles)
diff --git a/browser/main/index.js b/browser/main/index.js
index 718fc3b2..fedef081 100644
--- a/browser/main/index.js
+++ b/browser/main/index.js
@@ -76,7 +76,7 @@ ipc.on('open-finder', function () {
let el = document.getElementById('content')
const history = syncHistoryWithStore(hashHistory, store)
-history.listen((location) => console.info(location))
+
ReactDOM.render((
diff --git a/browser/main/store.js b/browser/main/store.js
index 012e9de6..3b315308 100644
--- a/browser/main/store.js
+++ b/browser/main/store.js
@@ -105,6 +105,16 @@ function repositories (state = initialRepositories, action) {
targetRepo.folders.splice(targetFolderIndex, 1)
}
+ return repos
+ }
+ case 'ADD_NOTE':
+ {
+ let repos = state.slice()
+ let targetRepo = _.find(repos, {key: action.repository})
+
+ if (targetRepo == null) return state
+ targetRepo.notes.push(action.note)
+
return repos
}
}
diff --git a/index.js b/index.js
index fe56a62e..7a1fdf7b 100644
--- a/index.js
+++ b/index.js
@@ -1,6 +1,6 @@
function isFinderCalled () {
var argv = process.argv.slice(1)
- return argv.some(arg => arg.match(/--finder/))
+ return argv.some((arg) => arg.match(/--finder/))
}
if (isFinderCalled()) {