timeline_setter 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+