timeline_setter 0.1.2 → 0.2.0

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.
@@ -2,9 +2,9 @@
2
2
  <html>
3
3
  <head>
4
4
  <link href="http://propublica.github.com/timeline-setter/public/stylesheets/timeline-setter.css" rel="stylesheet" />
5
- <script src="http://propublica.github.com/timeline-setter/public/javascripts/vendor/jquery-min.js"></script>
6
- <script src="http://propublica.github.com/timeline-setter/public/javascripts/vendor/underscore-min.js"></script>
7
- <script src="http://propublica.github.com/timeline-setter/public/javascripts/timeline-setter.js"></script>
5
+ <script src="../public/javascripts/vendor/jquery-min.js"></script>
6
+ <script src="../public/javascripts/vendor/underscore-min.js"></script>
7
+ <script src="../public/javascripts/timeline-setter.js"></script>
8
8
  <script src="https://github.com/bcherry/twitter-text-js/raw/master/twitter-text.js"></script>
9
9
  <style>
10
10
  #timeline_setter .TS-item_label a {
@@ -49,9 +49,8 @@
49
49
  twitterToTS(data);
50
50
  reqsDone += 1;
51
51
 
52
- if (reqsDone === usernames.length) {
52
+ if (reqsDone === usernames.length)
53
53
  TimelineSetter.Timeline.boot(tsTimeline);
54
- }
55
54
  });
56
55
  };
57
56
 
@@ -122,4 +121,4 @@
122
121
  </div>
123
122
  </script>
124
123
  </body>
125
- </html>
124
+ </html>
@@ -616,7 +616,7 @@ A new instance of CLI
616
616
  </div>
617
617
 
618
618
  <div id="footer">
619
- Generated on Thu Apr 7 13:00:38 2011 by
619
+ Generated on Thu Apr 21 10:33:41 2011 by
620
620
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
621
621
  0.6.5 (ruby-1.8.7).
622
622
  </div>
@@ -276,7 +276,7 @@ Returns the value of attribute events
276
276
  </div>
277
277
 
278
278
  <div id="footer">
279
- Generated on Thu Apr 7 13:00:39 2011 by
279
+ Generated on Thu Apr 21 10:33:42 2011 by
280
280
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
281
281
  0.6.5 (ruby-1.8.7).
282
282
  </div>
@@ -504,7 +504,7 @@ the events hash to JSON to stick into our HTML.
504
504
  </div>
505
505
 
506
506
  <div id="footer">
507
- Generated on Thu Apr 7 13:00:39 2011 by
507
+ Generated on Thu Apr 21 10:33:42 2011 by
508
508
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
509
509
  0.6.5 (ruby-1.8.7).
510
510
  </div>
@@ -90,7 +90,7 @@
90
90
  <dt id="VERSION-constant" class="">VERSION =
91
91
 
92
92
  </dt>
93
- <dd><pre class="code"><span class='string val'>&quot;0.1.1&quot;</span>
93
+ <dd><pre class="code"><span class='string val'>&quot;0.1.2&quot;</span>
94
94
  </pre></dd>
95
95
 
96
96
  </dl>
@@ -103,7 +103,7 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Thu Apr 7 13:00:39 2011 by
106
+ Generated on Thu Apr 21 10:33:42 2011 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
108
  0.6.5 (ruby-1.8.7).
109
109
  </div>
@@ -123,7 +123,7 @@
123
123
  </div>
124
124
 
125
125
  <div id="footer">
126
- Generated on Thu Apr 7 13:00:37 2011 by
126
+ Generated on Thu Apr 21 10:33:40 2011 by
127
127
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
128
128
  0.6.5 (ruby-1.8.7).
129
129
  </div>
@@ -61,7 +61,7 @@
61
61
  </div></div>
62
62
 
63
63
  <div id="footer">
64
- Generated on Thu Apr 7 13:00:37 2011 by
64
+ Generated on Thu Apr 21 10:33:40 2011 by
65
65
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
66
66
  0.6.5 (ruby-1.8.7).
67
67
  </div>
@@ -61,7 +61,7 @@
61
61
  </div></div>
62
62
 
63
63
  <div id="footer">
64
- Generated on Thu Apr 7 13:00:37 2011 by
64
+ Generated on Thu Apr 21 10:33:40 2011 by
65
65
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
66
66
  0.6.5 (ruby-1.8.7).
67
67
  </div>
@@ -79,7 +79,7 @@
79
79
  </div>
80
80
 
81
81
  <div id="footer">
82
- Generated on Thu Apr 7 13:00:39 2011 by
82
+ Generated on Thu Apr 21 10:33:42 2011 by
83
83
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
84
84
  0.6.5 (ruby-1.8.7).
85
85
  </div>
data/index.html CHANGED
@@ -82,7 +82,7 @@
82
82
  </head>
83
83
  <body>
84
84
  <a href="http://www.propublica.org" class="propublica">&nbsp;</a>
85
- <h1>TimelineSetter 0.1.1</h1>
85
+ <h1>TimelineSetter 0.1.2</h1>
86
86
 
87
87
  <p>TimelineSetter creates beautiful timelines.</p>
88
88
 
@@ -344,6 +344,7 @@ Feb. 21, 1952 and Jan. 26, 1957, as shown
344
344
  <ul>
345
345
  <li>In the Wild: <a href="http://www.propublica.org/special/tbi-psycho-platoon-timeline">ProPublica: How One Blast Affected Five Soldiers</a></li>
346
346
  <li>In the Wild: <a href="http://www.talkingpointsmemo.com/interactive/2011/04/the-wisconsin-union-struggle-timeline.php">TPM: The Wisconsin Union Struggle Timeline</a></li>
347
+ <li>In the Wild: <a href="http://timelines.latimes.com/bell/">Los Angeles Times: Bell: &lsquo;Corruption on Steroids&rsquo;</a></li>
347
348
  </ul>
348
349
 
349
350
 
@@ -351,7 +352,7 @@ Feb. 21, 1952 and Jan. 26, 1957, as shown
351
352
 
352
353
  <h2>Credits</h2>
353
354
 
354
- <p><a href="http://twitter.com/a_l">Al Shaw</a>, <a href="http://github.com/thejefflarson">Jeff Larson</a>, ProPublica</p>
355
+ <p><a href="http://github.com/ashaw">Al Shaw</a>, <a href="http://github.com/thejefflarson">Jeff Larson</a>, ProPublica, <a href="http://github.com/palewire">Ben Welsh</a>, Los Angeles Times</p>
355
356
 
356
357
  <p><a id="contact"></a></p>
357
358
 
@@ -365,6 +366,15 @@ questions should go to <a href="mailto:opensource@propublica.org">opensource@pro
365
366
 
366
367
  <h2>Change Log</h2>
367
368
 
369
+ <p><a id="release-012"></a></p>
370
+
371
+ <h3>0.1.2</h3>
372
+
373
+ <ul>
374
+ <li>Support for decade and lustrum (five year period) interval notches. <em>Thanks, <a href="http://github.com/palewire">Ben Welsh</a></em></li>
375
+ </ul>
376
+
377
+
368
378
  <p><a id="release-011"></a></p>
369
379
 
370
380
  <h3>0.1.1</h3>
@@ -22,8 +22,8 @@ module TimelineSetter
22
22
  opts.on('-o', '--output OUTPUT', 'Output directory to install timeline into.') do |o|
23
23
  @options[:output] = o
24
24
  end
25
- opts.on('-a', '--with-assets', 'Output timeline supporting assets as well') do |a|
26
- @options[:assets] = a
25
+ opts.on('-a', '--without-assets', 'Output timeline without supporting assets') do |a|
26
+ @options[:no_assets] = a
27
27
  end
28
28
  opts.on('-O', '--open', 'Open generated timeline in a browser') do |o|
29
29
  @options[:open] = o
@@ -31,6 +31,9 @@ module TimelineSetter
31
31
  opts.on('-m', '--min', 'Create a minified one-page version of the timeline') do |m|
32
32
  @options[:min] = m
33
33
  end
34
+ opts.on('-i', '--interval INTERVAL', 'Override automatic interval notches with a custom interval.') do |i|
35
+ @options[:interval] = i
36
+ end
34
37
 
35
38
 
36
39
  opts.on_tail("-h", "--help", "Show this message") do
@@ -57,7 +60,10 @@ module TimelineSetter
57
60
  end
58
61
 
59
62
  def html
60
- TimelineSetter::Timeline.new(events.events).send(@options[:min] ? :timeline_min : :timeline)
63
+ TimelineSetter::Timeline.new({
64
+ :events => events.events,
65
+ :interval => @options[:interval] || ''
66
+ }).send(@options[:min] ? :timeline_min : :timeline)
61
67
  end
62
68
 
63
69
  def outdir
@@ -69,7 +75,7 @@ module TimelineSetter
69
75
  end
70
76
 
71
77
  def compile!
72
- if @options[:assets]
78
+ if !@options[:no_assets] || !@options[:min]
73
79
  FileUtils.cp_r(Dir.glob("#{TimelineSetter::ROOT}/public/*"), outdir)
74
80
  end
75
81
 
@@ -3,8 +3,9 @@ module TimelineSetter
3
3
  attr_reader :timeline
4
4
  # Instantiate a new timeline from an events
5
5
  # array created in Parser#initialize
6
- def initialize(events)
7
- @events = events
6
+ def initialize(opts = {})
7
+ @events = opts[:events]
8
+ @interval = opts[:interval] || ''
8
9
  end
9
10
 
10
11
  # Convert human dates to timestamps, sort the hash by timestamp, and
@@ -13,6 +14,10 @@ module TimelineSetter
13
14
  @events.each {|r| r[:timestamp] = Time.parse(r[:date]).to_i * 1000 }
14
15
  @events.to_json
15
16
  end
17
+
18
+ def interval_json
19
+ {"interval" => "#{@interval}"}.to_json
20
+ end
16
21
 
17
22
  def timeline_markup
18
23
  tmpl("timeline-markup.erb")
@@ -1,3 +1,3 @@
1
1
  module TimelineSetter
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -168,10 +168,18 @@
168
168
 
169
169
  // `Intervals` is a particularly focused class to calculate even breaks based
170
170
  // on the passed in `Bounds`.
171
- var Intervals = function(bounds) {
171
+ var Intervals = function(bounds, interval) {
172
172
  this.max = bounds.max;
173
173
  this.min = bounds.min;
174
- this.setMaxInterval();
174
+
175
+ if(!interval || !this.INTERVALS[interval]) {
176
+ var i = this.computeMaxInterval();
177
+ this.maxInterval = this.INTERVAL_ORDER[i];
178
+ this.idx = i;
179
+ } else {
180
+ this.maxInterval = interval;
181
+ this.idx = _.indexOf(this.INTERVAL_ORDER, interval);
182
+ }
175
183
  };
176
184
 
177
185
  // An object containing human translations for date indexes.
@@ -199,6 +207,8 @@
199
207
  return dYear;
200
208
  case "Month":
201
209
  return dMonth + ', ' + dYear;
210
+ case "Week":
211
+ return dDate;
202
212
  case "Date":
203
213
  return dDate;
204
214
  case "Hours":
@@ -217,6 +227,7 @@
217
227
  Lustrum : 157680000000,
218
228
  FullYear : 31536000000,
219
229
  Month : 2592000000,
230
+ Week : 604800000,
220
231
  Date : 86400000,
221
232
  Hours : 3600000,
222
233
  Minutes : 60000,
@@ -224,7 +235,7 @@
224
235
  },
225
236
 
226
237
  // The order used when testing where exactly a timespan falls.
227
- INTERVAL_ORDER : ['Seconds','Minutes','Hours','Date','Month','FullYear', 'Lustrum', 'Decade'],
238
+ INTERVAL_ORDER : ['Seconds','Minutes','Hours','Date','Week','Month','FullYear','Lustrum','Decade'],
228
239
 
229
240
  // A test to find the appropriate range of intervals, for example if a range of
230
241
  // timestamps only spans hours this will return true when called with `"Hours"`.
@@ -233,12 +244,10 @@
233
244
  },
234
245
 
235
246
  // Find the maximum interval we should use based on the estimates in `INTERVALS`.
236
- setMaxInterval : function() {
247
+ computeMaxInterval : function() {
237
248
  for (var i = 0; i < this.INTERVAL_ORDER.length; i++)
238
249
  if (!this.isAtLeastA(this.INTERVAL_ORDER[i])) break;
239
-
240
- this.maxInterval = this.INTERVAL_ORDER[i - 1];
241
- this.idx = i - 1;
250
+ return i - 1;
242
251
  },
243
252
 
244
253
  // Return the calculated `maxInterval`.
@@ -252,35 +261,59 @@
252
261
  // with year one. For example, the current decade runs from 2010-2019.
253
262
  // And if you pass in the year 2010 or 2015 you'll get 2010 back.
254
263
  getDecade : function(date) {
255
- return (date.getFullYear() / 10 | 0) * 10;
264
+ return (date.getFullYear() / 10 | 0) * 10;
256
265
  },
257
-
266
+
258
267
  // Returns the first year of the five year "lustrum" a Date belongs to
259
268
  // as an integer. A lustrum is a fancy Roman word for a "five-year period."
260
269
  // You can read more about it [here](http://en.wikipedia.org/wiki/Lustrum).
261
270
  // This all means that if you pass in the year 2011 you'll get 2010 back.
262
271
  // And if you pass in the year 1997 you'll get 1995 back.
263
272
  getLustrum : function(date) {
264
- return (date.getFullYear() / 5 | 0) * 5;
273
+ return (date.getFullYear() / 5 | 0) * 5;
274
+ },
275
+
276
+ // Return a Date object rounded down to the previous Sunday, a.k.a. the first day of the week.
277
+ getWeekFloor: function(date) {
278
+ thisDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
279
+ thisDate.setDate(date.getDate() - date.getDay());
280
+ return thisDate;
265
281
  },
266
-
282
+
283
+ // Return a Date object rounded up to the next Sunday, a.k.a. the start of the next week.
284
+ getWeekCeil: function(date) {
285
+ thisDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
286
+ thisDate.setDate(thisDate.getDate() + (7 - date.getDay()));
287
+ return thisDate;
288
+ },
289
+
267
290
  // Zero out a date from the current interval down to seconds.
268
291
  floor : function(ts){
269
- var idx = this.idx;
270
- var date = new Date(ts);
292
+ var date = new Date(ts);
293
+ var intvl = this.INTERVAL_ORDER[this.idx];
294
+ var idx = this.idx > _.indexOf(this.INTERVAL_ORDER,'FullYear') ?
295
+ _.indexOf(this.INTERVAL_ORDER,'FullYear') :
296
+ idx;
297
+
298
+ // Zero the special extensions, and adjust as idx necessary.
299
+ switch(intvl){
300
+ case 'Decade':
301
+ date.setFullYear(this.getDecade(date));
302
+ break;
303
+ case 'Lustrum':
304
+ date.setFullYear(this.getLustrum(date));
305
+ break;
306
+ case 'Week':
307
+ date.setDate(this.getWeekFloor(date).getDate());
308
+ idx = _.indexOf(this.INTERVAL_ORDER, 'Week');
309
+ }
310
+
311
+ // Zero out the rest
271
312
  while(idx--){
272
313
  var intvl = this.INTERVAL_ORDER[idx];
273
- switch(intvl){
274
- case 'Lustrum':
275
- date["setFullYear"](this.getDecade(date));
276
- break;
277
- case 'FullYear':
278
- date["setFullYear"](this.getLustrum(date));
279
- break;
280
- default:
281
- date["set" + intvl](intvl === "Date" ? 1 : 0);
282
- }
314
+ if(intvl !== 'Week') date["set" + intvl](intvl === "Date" ? 1 : 0);
283
315
  }
316
+
284
317
  return date.getTime();
285
318
  },
286
319
 
@@ -290,10 +323,13 @@
290
323
  var intvl = this.INTERVAL_ORDER[this.idx];
291
324
  switch(intvl){
292
325
  case 'Decade':
293
- date["setFullYear"](this.getDecade(date) + 10);
326
+ date.setFullYear(this.getDecade(date) + 10);
294
327
  break;
295
328
  case 'Lustrum':
296
- date["setFullYear"](this.getLustrum(date) + 5);
329
+ date.setFullYear(this.getLustrum(date) + 5);
330
+ break;
331
+ case 'Week':
332
+ date.setTime(this.getWeekCeil(date).getTime());
297
333
  break;
298
334
  default:
299
335
  date["set" + intvl](date["get" + intvl]() + 1);
@@ -367,7 +403,7 @@
367
403
 
368
404
  // Every new `Series` gets new color. If there are too many series
369
405
  // the remaining series will be a simple gray.
370
-
406
+
371
407
  // These colors can be styled like such in
372
408
  // timeline-setter.css, where the numbers 1-9 cycle through in that order:
373
409
  //
@@ -404,16 +440,16 @@
404
440
  // takes a json array of card representations and then builds series, calculates
405
441
  // intervals `sync`s the `Bar` and `CardContainer` objects and triggers the
406
442
  // `render` event.
407
- var Timeline = TimelineSetter.Timeline = function(data) {
443
+ var Timeline = TimelineSetter.Timeline = function(data, config) {
408
444
  data = data.sort(function(a, b){ return a.timestamp - b.timestamp; });
409
445
  this.bySid = {};
410
446
  this.series = [];
447
+ this.config = (config || {});
411
448
  this.bounds = new Bounds();
412
449
  this.bar = new Bar(this);
413
450
  this.cardCont = new CardScroller(this);
414
451
  this.createSeries(data);
415
-
416
- var range = new Intervals(this.bounds);
452
+ var range = new Intervals(this.bounds, config.interval);
417
453
  this.intervals = range.getRanges();
418
454
  this.bounds.extend(this.bounds.min - range.getMaxInterval() / 2);
419
455
  this.bounds.extend(this.bounds.max + range.getMaxInterval() / 2);
@@ -442,7 +478,7 @@
442
478
  }
443
479
  var series = this.bySid[card.series];
444
480
  series.add(card);
445
-
481
+
446
482
  this.bounds.extend(series.max());
447
483
  this.bounds.extend(series.min());
448
484
  }
@@ -610,7 +646,7 @@
610
646
  this.timestamp = card.timestamp;
611
647
  this.attributes = card;
612
648
  this.attributes.topcolor = series.color;
613
-
649
+
614
650
  this.template = template("#TS-card_tmpl");
615
651
  this.ntemplate = template("#TS-notch_tmpl");
616
652
  _.bindAll(this, "render", "activate", "flip", "setPermalink", "toggleNotch");
@@ -657,7 +693,7 @@
657
693
  var margin = this.el.css("margin-left") === this.originalMargin;
658
694
  var flippable = this.$(".TS-item").width() < $("#timeline_setter").width() / 2;
659
695
  var offTimeline = this.el.position().left - this.$(".TS-item").width() < 0;
660
-
696
+
661
697
  // If the card's right edge is more than the timeline's right edge and
662
698
  // it's never been flipped before and it won't go off the timeline when
663
699
  // flipped. We'll flip it.
@@ -692,14 +728,14 @@
692
728
  this.el.show().addClass(("TS-card_active"));
693
729
  this.notch.addClass("TS-notch_active");
694
730
  this.setWidth();
695
-
731
+
696
732
  // In the case that the card is outside the bounds the wrong way when
697
733
  // it's flipped, we'll take care of it here before we move the actual
698
- // card.
734
+ // card.
699
735
  this.flip($.Event("move"));
700
736
  this.move();
701
737
  },
702
-
738
+
703
739
  // For Internet Explorer each card sets the width of` .TS-item_label` to
704
740
  // the maximum width of the card's children, or if that is less than the
705
741
  // `.TS-item_year` element's width, `.TS-item_label` gets `.TS-item_year`s
@@ -833,11 +869,10 @@
833
869
  // In the default install of TimelineSetter, Boot is called in the generated
834
870
  // HTML. We'll kick everything off by creating a `Timeline`, some `Controls`
835
871
  // and binding to `"keydown"`.
836
- Timeline.boot = function(data) {
872
+ Timeline.boot = function(data, config) {
837
873
  $(function(){
838
-
839
- TimelineSetter.timeline = new Timeline(data);
840
-
874
+
875
+ TimelineSetter.timeline = new Timeline(data, config || {});
841
876
  new Zoom("in");
842
877
  new Zoom("out");
843
878
  var chooseNext = new Chooser("next");
@@ -7,19 +7,34 @@ describe "TimelineSetter core" do
7
7
 
8
8
  it 'should create json from an events hash' do
9
9
  events = TimelineSetter::Parser.new(TEST_CSV)
10
- j = TimelineSetter::Timeline.new(events.events).to_json
10
+ j = TimelineSetter::Timeline.new({
11
+ :events => events.events
12
+ }).to_json
11
13
  JSON.parse(j)[0]['date'].should eql "Feb. 18, 2003"
12
14
  end
13
15
 
14
16
  it 'should create html from an events hash' do
15
17
  events = TimelineSetter::Parser.new(TEST_CSV)
16
- html = TimelineSetter::Timeline.new(events.events).timeline.to_s
18
+ html = TimelineSetter::Timeline.new({
19
+ :events => events.events
20
+ }).timeline.to_s
17
21
  html.should =~ /"timestamp":1045544400/
18
22
  end
19
23
 
24
+ it 'should create custom intervals' do
25
+ events = TimelineSetter::Parser.new(TEST_CSV)
26
+ html = TimelineSetter::Timeline.new({
27
+ :events => events.events,
28
+ :interval => "FullYear"
29
+ }).timeline.to_s
30
+ html.should =~ /"interval":"FullYear"/
31
+ end
32
+
20
33
  it 'should create minified timelines' do
21
34
  events = TimelineSetter::Parser.new(TEST_CSV)
22
- html = TimelineSetter::Timeline.new(events.events).timeline_min.to_s
35
+ html = TimelineSetter::Timeline.new({
36
+ :events => events.events
37
+ }).timeline_min.to_s
23
38
 
24
39
  # test to see we've compiled all the assets
25
40
 
@@ -39,7 +54,7 @@ end
39
54
  describe "TimelineSetter CLI" do
40
55
  it 'should drop just timeline.html into tmp' do
41
56
  `mkdir /tmp/ts_test_1`
42
- %x[ #{TS_BINARY} -c #{TEST_CSV_PATH} -o /tmp/ts_test_1/ ]
57
+ %x[ #{TS_BINARY} -c #{TEST_CSV_PATH} -o /tmp/ts_test_1/ -a ]
43
58
  Dir.glob("/tmp/ts_test_1/*").should include("/tmp/ts_test_1/timeline.html")
44
59
  file = File.open("/tmp/ts_test_1/timeline.html").read
45
60
  file.should =~ /"timestamp":1045544400/
@@ -47,7 +62,7 @@ describe "TimelineSetter CLI" do
47
62
 
48
63
  it 'should drop timeline.html and associated assets into tmp' do
49
64
  `mkdir /tmp/ts_test_2`
50
- %x[ #{TS_BINARY} -c #{TEST_CSV_PATH} -o /tmp/ts_test_2/ -a ]
65
+ %x[ #{TS_BINARY} -c #{TEST_CSV_PATH} -o /tmp/ts_test_2/ ]
51
66
  Dir.glob("/tmp/ts_test_2/*").should include("/tmp/ts_test_2/timeline.html")
52
67
  Dir.glob("/tmp/ts_test_2/javascripts/*").should include("/tmp/ts_test_2/javascripts/timeline-setter.js")
53
68
  Dir.glob("/tmp/ts_test_2/javascripts/vendor/*").should include("/tmp/ts_test_2/javascripts/vendor/jquery-min.js")
@@ -73,6 +88,9 @@ describe "TimelineSetter CLI" do
73
88
  file.should =~ /jQuery JavaScript Library/
74
89
  # test timeline-setter.js
75
90
  file.should =~ /INTERVAL_ORDER/
91
+
92
+ # check to see that we DID NOT generate the assets
93
+ Dir.glob("/tmp/ts_test_3/*").should_not include("/tmp/ts_test_3/javascripts/timeline-setter.js")
76
94
  end
77
95
 
78
96
  after :all do
@@ -21,7 +21,7 @@
21
21
  </div>
22
22
 
23
23
  <script type="text/javascript">
24
- TimelineSetter.Timeline.boot(<%= self.to_json %>);
24
+ TimelineSetter.Timeline.boot(<%= self.to_json %>, <%= self.interval_json %>);
25
25
  </script>
26
26
  <script id="TS-year_notch_tmpl" type="text/jst">
27
27
  <div class="TS-year_notch TS-year_notch_<%%= timestamp %>">
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{timeline_setter}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Al Shaw", "Jeff Larson"]
12
- s.date = %q{2011-04-08}
12
+ s.date = %q{2011-07-11}
13
13
  s.default_executable = %q{timeline-setter}
14
14
  s.description = %q{TimelineSetter is a tool to create HTML timelines from spreadsheets of events.}
15
15
  s.email = %q{almshaw@gmail.com}
@@ -71,10 +71,6 @@ Gem::Specification.new do |s|
71
71
  s.require_paths = ["lib"]
72
72
  s.rubygems_version = %q{1.3.7}
73
73
  s.summary = %q{TimelineSetter is a tool to create HTML timelines from spreadsheets of events.}
74
- s.test_files = [
75
- "spec/spec_helper.rb",
76
- "spec/timeline_setter_spec.rb"
77
- ]
78
74
 
79
75
  if s.respond_to? :specification_version then
80
76
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timeline_setter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Al Shaw
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-04-08 00:00:00 -04:00
19
+ date: 2011-07-11 00:00:00 -04:00
20
20
  default_executable: timeline-setter
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -184,6 +184,5 @@ rubygems_version: 1.3.7
184
184
  signing_key:
185
185
  specification_version: 3
186
186
  summary: TimelineSetter is a tool to create HTML timelines from spreadsheets of events.
187
- test_files:
188
- - spec/spec_helper.rb
189
- - spec/timeline_setter_spec.rb
187
+ test_files: []
188
+