carte-server 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 132ae5812e302de8c0d26fa7fc7f976317aadc02
4
- data.tar.gz: f8c1dbf6608dc043567eb942351be1f8d9b60b07
3
+ metadata.gz: 38ff867c838212facdf04eceb6479aba9f084adf
4
+ data.tar.gz: e366d1aefe102821f4a010548f44ea82e22e7685
5
5
  SHA512:
6
- metadata.gz: 379fe71b54212b0a6e5c5a7841ce43429aafea15ae5109488766848566f5a9e400c530f83308c4a02e6430b7274b1dfe3ae59f5f85cb306aec14e09425f93dc5
7
- data.tar.gz: cb3eb492d5e6ad1f97cead588ea87d8593816ff078a743accc4e19eda483aaa2c57cd0566d831592a9990c2748df02599c67553fb0de0da4fd320b971e6d9de4
6
+ metadata.gz: 2076727a9393edaa380e0deee1d8f7342889e4ab45409aec58691fd129c6a3cfa3ba14b1c29a48feba6540c791d3f8f3ca611eddc9b5bf8a68528f36503242e8
7
+ data.tar.gz: 5835726ec6f54293d5cd70f9915c557aabaf1205ca518b7b29e685300634bf5626921a993cf284098c79a3e535c6e24baab5906759e12b27246404ed8de552f1
@@ -3,6 +3,7 @@ path = require 'path'
3
3
  gulp = require 'gulp'
4
4
  gulpUtil = require 'gulp-util'
5
5
  gulpIf = require 'gulp-if'
6
+ gulpGzip = require 'gulp-gzip'
6
7
  sourceStream = require 'vinyl-source-stream'
7
8
  browserify = require 'browserify'
8
9
  watchify = require 'watchify'
@@ -75,4 +76,5 @@ module.exports = class Carte
75
76
  .bundle()
76
77
  .pipe sourceStream file
77
78
  .pipe gulpIf(!@watching, streamify(uglify(compress: {drop_console: !@watching})))
79
+ .pipe gulpIf(!@watching, gulpGzip())
78
80
  .pipe gulp.dest dir
@@ -21,21 +21,19 @@ module.exports = React.createClass
21
21
  @props.router.off "route", @callback
22
22
 
23
23
  render: ->
24
+ console.log '[views/content] render'
24
25
  <div className="carte-content">
25
26
  {
26
27
  switch @props.router.current
27
28
  when "list"
29
+ console.log '[views/content] list', @props
28
30
  cards = new CardCollection()
29
31
  cards.query = $.extend {}, config.default_query, @props.router.query
30
32
  cards.fetching = true
31
33
  cards.fetch success: ()-> cards.fetching = false
32
- #title = []
33
- #for k, v of cards.query
34
- # title.push(String(k).capitalize() + ': ' + v)
35
- #title = title.join(', ')
36
- #title = config.title + ' (' + title + ')'
37
- #document.title = title
38
34
  if cards.query.mode == 'flash'
35
+ cards.query.auto = 'off' if !cards.query.auto
36
+ cards.query.hide = 'none' if !cards.query.hide
39
37
  document.title = config.title + '、スライドショー'
40
38
  <Slideshow key='slideshow' router={@props.router} cards={cards} />
41
39
  else
@@ -63,6 +61,6 @@ module.exports = React.createClass
63
61
  document.title = config.title + '、' + card.get('title')
64
62
  <List key='show' cards={cards} card={card} />
65
63
  else
66
- <div>Loading ...</div>
64
+ null
67
65
  }
68
66
  </div>
@@ -1,31 +1,43 @@
1
1
  # @cjsx React.DOM
2
2
  $ = require('jquery')
3
- Backbone = require('backbone')
4
3
  React = require('react')
5
4
  CardCollection = require('../models/cards')
6
5
  config = require('../config')
7
6
  helpers = require('../helpers')
8
7
  classnames = require('classnames')
9
8
  markdownIt = require('markdown-it')(linkify: true)
9
+ DropdownButton = require('react-bootstrap').DropdownButton
10
+ MenuItem = require('react-bootstrap').MenuItem
11
+ ButtonGroup = require('react-bootstrap').ButtonGroup
12
+ Button = require('react-bootstrap').Button
10
13
 
11
14
  #window.onerror = (error, url, line) -> alert error
12
15
 
13
- Portal = React.createClass
16
+ Flash = React.createClass
14
17
  componentDidMount: ->
15
- console.log '[views/slideshow] Portal#componentDidMount'
16
- @setState currCards: @props.cards
18
+ console.log '[views/flash] componentDidMount', @props
17
19
  $(document).on 'keydown', @onKeyDown
18
- @props.cards.on 'sync', =>
19
- @setState currCard: @props.cards.at(0)
20
- @loadNextCards()
21
- @loadPrevCards()
22
- @forceUpdate.bind(@, null)
20
+
21
+ @setState currCards: @props.cards
22
+
23
+ if @props.cards.at(0)
24
+ @setState currCard: @props.cards.at(0), =>
25
+ @loadNextCards()
26
+ @loadPrevCards()
27
+ @forceUpdate.bind(@, null)
28
+ else
29
+ @props.cards.on 'sync', =>
30
+ @setState currCard: @props.cards.at(0), =>
31
+ @loadNextCards()
32
+ @loadPrevCards()
33
+ @forceUpdate.bind(@, null)
23
34
 
24
35
  componentWillUnmount: ->
25
36
  $(document).off 'keydown', @onKeyDown
26
37
 
27
38
  onKeyDown: (event)->
28
39
  switch event.keyCode
40
+ when 27 then @props.router.navigate(@closeLink())
29
41
  when 37 then @onClickPrev()
30
42
  when 39 then @onClickNext()
31
43
 
@@ -34,8 +46,9 @@ Portal = React.createClass
34
46
  currCards: null
35
47
  nextCards: null
36
48
  prevCards: null
37
- hideValue: 'none'
38
49
  hiding: true
50
+ showTools: false
51
+ menuOpen: false
39
52
 
40
53
  prevCard: ->
41
54
  _prevCard = @state.currCards.at(@currCardIndex() - 1)
@@ -100,7 +113,7 @@ Portal = React.createClass
100
113
  @onClickPrev()
101
114
 
102
115
  onClickNext: ->
103
- if @state.hideValue != 'none' && @state.hiding
116
+ if @props.cards.query.hide != 'none' && @state.hiding
104
117
  @setState hiding: false
105
118
  else
106
119
  @setState hiding: true
@@ -113,7 +126,7 @@ Portal = React.createClass
113
126
  @loadNextCards()
114
127
 
115
128
  onClickPrev: ->
116
- if @state.hideValue != 'none' && @state.hiding
129
+ if @props.cards.query.hide != 'none' && @state.hiding
117
130
  @setState hiding: false
118
131
  else
119
132
  @setState hiding: true
@@ -128,19 +141,52 @@ Portal = React.createClass
128
141
  closeLink: ->
129
142
  params = $.extend {}, @props.cards.query
130
143
  delete params.mode
144
+ delete params.auto
145
+ delete params.hide
131
146
  '#/?' + $.param(params)
132
147
 
133
148
  onChangeHide: (event)->
134
149
  @setState hideValue: event.target.value
135
150
 
151
+ onMouseOverTools: ()->
152
+ @setState showTools: true
153
+
154
+ onMouseLeaveTools: ()->
155
+ @setState showTools: false
156
+
157
+ onClick: ->
158
+ @setState showTools: !@state.showTools
159
+
160
+ queryParam: (query)->
161
+ query = $.extend {}, @props.cards.query, query
162
+ $.param(query)
163
+
136
164
  render: ->
137
- <div className="carte-slideshow" onTouchStart={@onTouchStart} onTouchEnd={@onTouchEnd}>
165
+ <div onClick={@onClick} onTouchStart={@onTouchStart} onTouchEnd={@onTouchEnd} style={overflow:'hidden'}>
166
+ <div style={position:'absolute',bottom:0,width:'100%',padding:'47px 0px 0px 0px'} onMouseOver={@onMouseOverTools} onMouseLeave={@onMouseLeaveTools}>
167
+ <span className={classnames("pull-right":true, 'carte-hidden': !@state.showTools)}>
168
+ <ButtonGroup>
169
+ <DropdownButton bsSize='large' bsStyle='default' title={'Auto: ' + @props.cards.query.auto} dropup pullRight className={classnames('open': @state.menuOpen)}>
170
+ <MenuItem href={'#/?' + @queryParam(auto: "off")} eventKey='1'>off</MenuItem>
171
+ <MenuItem href={'#/?' + @queryParam(auto: "fast")} eventKey='2'>fast</MenuItem>
172
+ <MenuItem href={'#/?' + @queryParam(auto: "normal")} eventKey='3'>normal</MenuItem>
173
+ <MenuItem href={'#/?' + @queryParam(auto: "slow")} eventKey='4'>slow</MenuItem>
174
+ </DropdownButton>
175
+ <DropdownButton bsSize='large' bsStyle='default' title={'Hide: ' + @props.cards.query.hide} dropup pullRight className={classnames('open': @state.menuOpen)}>
176
+ <MenuItem href={'#/?' + @queryParam(hide: "none")} eventKey='1'>none</MenuItem>
177
+ <MenuItem href={'#/?' + @queryParam(hide: "title")} eventKey='2'>title</MenuItem>
178
+ <MenuItem href={'#/?' + @queryParam(hide: "content")} eventKey='3'>content</MenuItem>
179
+ </DropdownButton>
180
+ <Button bsSize='large' href={@closeLink()}><strong>&times;</strong></Button>
181
+ </ButtonGroup>
182
+ </span>
183
+ </div>
138
184
  <div style={fontSize:'10vh',padding:'1vh 5vh',overflow:'hidden'}>
139
185
  <div>
140
186
  <strong>
141
187
  {
142
188
  if @state.currCard
143
- if @state.hideValue == 'title' && @state.hiding == true
189
+ if @props.cards.query.hide == 'title' && @state.hiding == true
144
190
  '?????'
145
191
  else
146
192
  @state.currCard.get('title')
@@ -148,22 +194,11 @@ Portal = React.createClass
148
194
  <i className="glyphicon glyphicon-refresh glyphicon-refresh-animate" />
149
195
  }
150
196
  </strong>
151
- <span className="pull-right tools" style={fontSize:'0.5em'}>
152
- hide:
153
- <select value={@state.hideValue} onChange={@onChangeHide}>
154
- <option value="none">none</option>
155
- <option value="title">title</option>
156
- <option value="content">content</option>
157
- </select>
158
- <a href={@closeLink()}>
159
- <strong>&times;</strong>
160
- </a>
161
- </span>
162
197
  </div>
163
- <div style={paddingTop:'5vh'}>
198
+ <div style={paddingTop:'5vh',overflow:'hidden'}>
164
199
  {
165
200
  if @state.currCard
166
- if @state.hideValue == 'content' && @state.hiding == true
201
+ if @props.cards.query.hide == 'content' && @state.hiding == true
167
202
  '???????'
168
203
  else
169
204
  <div dangerouslySetInnerHTML={__html: markdownIt.render @state.currCard.get('content')} />
@@ -174,14 +209,13 @@ Portal = React.createClass
174
209
  </div>
175
210
  </div>
176
211
 
177
- MyPortal = React.createFactory Portal
212
+ flash = React.createFactory Flash
178
213
 
179
214
  module.exports = React.createClass
180
- displayName: 'Slideshow'
215
+ displayName: 'FlashWrapper'
181
216
 
182
217
  componentDidMount: ->
183
218
  console.log '[views/slideshow] componentDidMount'
184
- @props.cards.on 'sync', @forceUpdate.bind(@, null)
185
219
  @node = document.createElement('div')
186
220
  @node.className = 'carte-slideshow'
187
221
  document.body.appendChild(@node)
@@ -189,15 +223,18 @@ module.exports = React.createClass
189
223
 
190
224
  componentWillReceiveProps: (nextProps)->
191
225
  console.log '[views/slideshow] componentWillReceiveProps', nextProps
192
- nextProps.cards.on 'sync', @forceUpdate.bind(@, null)
226
+ document.body.removeChild(@node) if @node
227
+ @node = document.createElement('div')
228
+ @node.className = 'carte-slideshow'
229
+ document.body.appendChild(@node)
230
+ React.render(flash(nextProps), @node)
193
231
 
194
232
  componentWillUnmount: ->
195
233
  console.log '[views/slideshow] componentWillUnmount'
196
234
  document.body.removeChild(@node)
197
235
 
198
236
  renderSlideshow: ->
199
- React.render(MyPortal(@props), @node)
237
+ React.render(flash(@props), @node)
200
238
 
201
239
  render: ->
202
- console.log '[views/slideshow] render', @props
203
240
  null
data/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "carte-client",
3
3
  "description": "something like dictionary, wiki, or information card",
4
- "version": "1.0.1",
4
+ "version": "1.0.2",
5
5
  "main": "lib/carte.coffee",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -30,6 +30,7 @@
30
30
  "font-awesome": "^4.3.0",
31
31
  "fs-extra": "^0.18.2",
32
32
  "gulp": "^3.8.11",
33
+ "gulp-gzip": "^1.1.0",
33
34
  "gulp-if": "^1.2.5",
34
35
  "gulp-jade": "^1.0.0",
35
36
  "gulp-rename": "^1.2.2",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carte-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tily
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-14 00:00:00.000000000 Z
11
+ date: 2015-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler