diff --git a/browser/components/TodoListPercentage.styl b/browser/components/TodoListPercentage.styl
new file mode 100644
index 00000000..f33309c2
--- /dev/null
+++ b/browser/components/TodoListPercentage.styl
@@ -0,0 +1,13 @@
+.percentageBar
+ position absolute
+ background-color #bcbcbc
+ height 20px
+ width 100%
+
+.progressBar
+ background-color #52d8a5
+ height 20px
+ text-align center
+
+.progressBar p
+ color white
diff --git a/browser/components/TodolistPercentage.js b/browser/components/TodolistPercentage.js
new file mode 100644
index 00000000..05a1d9d3
--- /dev/null
+++ b/browser/components/TodolistPercentage.js
@@ -0,0 +1,29 @@
+/**
+ * @fileoverview Percentage of todo achievement.
+ */
+
+import React, { PropTypes } from 'react'
+import CSSModules from 'browser/lib/CSSModules'
+import styles from './TodoListPercentage.styl'
+
+/**
+ * @param {number} percentageOfTodo
+ */
+
+const TodoListPercentage = ({
+ percentageOfTodo
+}) => (
+
+
+
{percentageOfTodo + '%'}
+
+
+)
+
+
+TodoListPercentage.propTypes = {
+ percentageOfTodo: PropTypes.number.isRequired
+}
+
+export default CSSModules(TodoListPercentage, styles)
diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js
index 6cb0a473..59e7c559 100644
--- a/browser/main/Detail/MarkdownNoteDetail.js
+++ b/browser/main/Detail/MarkdownNoteDetail.js
@@ -2,6 +2,7 @@ import React, { PropTypes } from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './MarkdownNoteDetail.styl'
import MarkdownEditor from 'browser/components/MarkdownEditor'
+import TodoListPercentage from 'browser/components/TodoListPercentage'
import StarButton from './StarButton'
import TagSelect from './TagSelect'
import FolderSelect from './FolderSelect'
@@ -95,6 +96,24 @@ class MarkdownNoteDetail extends React.Component {
return title
}
+ getPercentageOfCompleteTodo (value) {
+ let splitted = value.split('\n')
+ let numberOfTodo = 0
+ let numberOfCompletedTodo = 0
+
+ for (let i = 0; i < splitted.length; i++) {
+ let trimmedLine = splitted[i].trim()
+ if (trimmedLine.match(/^- \[\s|x\] ./)) {
+ numberOfTodo++
+ }
+ if (trimmedLine.match(/^- \[x\] ./)) {
+ numberOfCompletedTodo++
+ }
+ }
+
+ return Math.floor(numberOfCompletedTodo / numberOfTodo * 100)
+ }
+
handleChange (e) {
let { note } = this.state
@@ -263,6 +282,9 @@ class MarkdownNoteDetail extends React.Component {
value={this.state.note.tags}
onChange={(e) => this.handleChange(e)}
/>
+
{(() => {