Add initial routing setup for app.

This commit is contained in:
Dorian 2015-06-16 08:48:32 -04:00
parent a8d441f3c7
commit 4f73031cfa
5 changed files with 5705 additions and 1765 deletions

7397
dist/rookeries.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,8 @@
"browserify": "10.1.3", "browserify": "10.1.3",
"coffee-reactify": "3.0.0", "coffee-reactify": "3.0.0",
"font-awesome": "4.3.0", "font-awesome": "4.3.0",
"react-fontawesome": "0.2.5" "react-fontawesome": "0.2.5",
"react-router": "0.13.3"
}, },
"devDependencies": { "devDependencies": {
"chai": "1.9.2", "chai": "1.9.2",
@ -29,7 +30,8 @@
"karma-chai": "0.1.0", "karma-chai": "0.1.0",
"karma-phantomjs-launcher": "0.1.4", "karma-phantomjs-launcher": "0.1.4",
"karma-mocha": "0.1.9", "karma-mocha": "0.1.9",
"karma-coverage": "0.2.6" "karma-coverage": "0.2.6",
"watchify": "3.2.2"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -50,6 +52,7 @@
"browser": "./rookeries/app.cjsx", "browser": "./rookeries/app.cjsx",
"scripts": { "scripts": {
"test": "karma start tests/karma.conf.coffee", "test": "karma start tests/karma.conf.coffee",
"package": "browserify -t coffee-reactify rookeries/app.cjsx -o dist/rookeries.js" "package": "browserify -t coffee-reactify rookeries/app.cjsx -o dist/rookeries.js",
"dev_ci": "watchify -t coffee-reactify rookeries/app.cjsx -o dist/rookeries.js"
} }
} }

View File

@ -14,6 +14,26 @@ JournalMarkdownView = require('./views/journal_markdown_viewer.cjsx')
require('./views/user_login_modal.cjsx') require('./views/user_login_modal.cjsx')
require('./views/theme_switcher.cjsx') require('./views/theme_switcher.cjsx')
React.render(<JournalMarkdownView />, document.getElementById("markdown-target"))
# TODO Add in routing using react-router # TODO Extract routing
Router = require('react-router')
Route = Router.Route
app_routes = (
<Route handler={App}>
<Route path='doc/:id' handler={JournalMarkdownView} />
</Route>
)
App = React.createClass(
render: () ->
console.log('Render Route handler.')
return (
<h1>App</h1>
<RouteHandler />
)
)
Router.run(app_routes, Router.HashLocation, (Root) =>
React.render(<Root />, document.getElementById("markdown-target"))
)

View File

@ -18,9 +18,9 @@ JournalEntryStore = Reflux.createStore(
console.log('Initialize JournalEntryStore.') console.log('Initialize JournalEntryStore.')
@listenTo(JournalEntryActions.loadEntry, @loadEntry) @listenTo(JournalEntryActions.loadEntry, @loadEntry)
loadEntry: () -> loadEntry: (id) ->
console.log('Request loading ') console.log('Request loading ')
request.get('/api/docs/about') request.get("/api/docs/#{id}")
.accept('json') .accept('json')
.end( .end(
(err, res) -> (err, res) ->

View File

@ -11,13 +11,14 @@ Rookeries client - Markdown controller to view a journal entry.
React = require('react') React = require('react')
Reflux = require('reflux') Reflux = require('reflux')
marked = require('marked') marked = require('marked')
Router = require('react-router')
JournalEntryActions = require('../actions/journal_actions.coffee') JournalEntryActions = require('../actions/journal_actions.coffee')
JournalEntryStore = require('../stores/journal_entry_store.coffee') JournalEntryStore = require('../stores/journal_entry_store.coffee')
JournalMarkdownView = React.createClass( JournalMarkdownView = React.createClass(
mixins: [Reflux.ListenerMixin] mixins: [Reflux.ListenerMixin, Router.State]
getInitialState: () -> getInitialState: () ->
console.log('Initialize JournalMarkdownView state.') console.log('Initialize JournalMarkdownView state.')
@ -30,15 +31,16 @@ JournalMarkdownView = React.createClass(
componentDidMount: () -> componentDidMount: () ->
console.log('Mount JournalMarkdownView.') console.log('Mount JournalMarkdownView.')
@listenTo(JournalEntryActions.viewEntry, @onStatusChange) @listenTo(JournalEntryActions.viewEntry, @onStatusChange)
console.log('Trigger JournalEntryAction.loadEntry event.') pageToLoad = @getParams().id
JournalEntryActions.loadEntry() console.log("Trigger JournalEntryAction.loadEntry event - #{pageToLoad}.")
JournalEntryActions.loadEntry(pageToLoad)
render: () -> render: () ->
console.log("Render JournalMarkdownView.") console.log("Render JournalMarkdownView.")
raw_markup = marked(@state.page_content, {sanitized: true}) raw_markup = marked(@state.page_content, {sanitized: true})
return ( return (
<div> <div>
<h1>{ @state.name }</h1> <h1>{ @state.name } - {@getParams().id}</h1>
<span dangerouslySetInnerHTML={{__html: raw_markup}} /> <span dangerouslySetInnerHTML={{__html: raw_markup}} />
</div> </div>
) )