fullcalendar-rails 2.6.0.0 → 2.6.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 24dff1fc7d27884cc83873d9e69120f9ea90b328
4
- data.tar.gz: b2562d2a652b005ed1639be3d2c126aef97d54c6
3
+ metadata.gz: c8b6f7ceba490bcaee40675f5231556b0b58eb58
4
+ data.tar.gz: ce31a06b8322051b0927702b710d10988261e9a9
5
5
  SHA512:
6
- metadata.gz: fafacac80fe48dea72bc7fb3727cb9c094244c3902aa49b9028378c7d3deddc7dd0f52fbee705925be20ca244154a0f7c0bb707b9d5defbdc3c50546c0425f63
7
- data.tar.gz: b03cc1d86d493cce8709b7fc135bb335803a5d03882af06d230255df0408563beb176e3ef69cbbbfbead59d291e5ffbf5c9f3cbdaab62cff56fe2e39e3efdc44
6
+ metadata.gz: 9a08956c7cbd276bf35e0ea4d098e6f85eb66e36b87469c3852f61fd4e75bda3f6f2be7d46d85dbf9164506078c9677cc6314518ddbe25a5a361b89af20d3bfc
7
+ data.tar.gz: fb4f8fcce54c9388d955d7b1f6f2299a7a5821ba0df39b1a8c6be83b15884e3a1e85ea49f5726c043debe4deecc268c7d8cd95d1261e0f3509c94738b18806ef
@@ -1,5 +1,5 @@
1
1
  module Fullcalendar
2
2
  module Rails
3
- VERSION = "2.6.0.0"
3
+ VERSION = "2.6.1.0"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.6.0
2
+ * FullCalendar v2.6.1
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2015 Adam Shaw
5
5
  */
@@ -19,8 +19,8 @@
19
19
  ;;
20
20
 
21
21
  var FC = $.fullCalendar = {
22
- version: "2.6.0",
23
- internalApiVersion: 2
22
+ version: "2.6.1",
23
+ internalApiVersion: 3
24
24
  };
25
25
  var fcViews = FC.views = {};
26
26
 
@@ -2064,6 +2064,14 @@ var CoordCache = FC.CoordCache = Class.extend({
2064
2064
  },
2065
2065
 
2066
2066
 
2067
+ // When called, if coord caches aren't built, builds them
2068
+ ensureBuilt: function() {
2069
+ if (!this.origin) {
2070
+ this.build();
2071
+ }
2072
+ },
2073
+
2074
+
2067
2075
  // Compute and return what the elements' bounding rectangle is, from the user's perspective.
2068
2076
  // Right now, only returns a rectangle if constrained by an overflow:scroll element.
2069
2077
  queryBoundingRect: function() {
@@ -2116,6 +2124,8 @@ var CoordCache = FC.CoordCache = Class.extend({
2116
2124
  // Given a left offset (from document left), returns the index of the el that it horizontally intersects.
2117
2125
  // If no intersection is made, or outside of the boundingRect, returns undefined.
2118
2126
  getHorizontalIndex: function(leftOffset) {
2127
+ this.ensureBuilt();
2128
+
2119
2129
  var boundingRect = this.boundingRect;
2120
2130
  var lefts = this.lefts;
2121
2131
  var rights = this.rights;
@@ -2135,6 +2145,8 @@ var CoordCache = FC.CoordCache = Class.extend({
2135
2145
  // Given a top offset (from document top), returns the index of the el that it vertically intersects.
2136
2146
  // If no intersection is made, or outside of the boundingRect, returns undefined.
2137
2147
  getVerticalIndex: function(topOffset) {
2148
+ this.ensureBuilt();
2149
+
2138
2150
  var boundingRect = this.boundingRect;
2139
2151
  var tops = this.tops;
2140
2152
  var bottoms = this.bottoms;
@@ -2153,12 +2165,14 @@ var CoordCache = FC.CoordCache = Class.extend({
2153
2165
 
2154
2166
  // Gets the left offset (from document left) of the element at the given index
2155
2167
  getLeftOffset: function(leftIndex) {
2168
+ this.ensureBuilt();
2156
2169
  return this.lefts[leftIndex];
2157
2170
  },
2158
2171
 
2159
2172
 
2160
2173
  // Gets the left position (from offsetParent left) of the element at the given index
2161
2174
  getLeftPosition: function(leftIndex) {
2175
+ this.ensureBuilt();
2162
2176
  return this.lefts[leftIndex] - this.origin.left;
2163
2177
  },
2164
2178
 
@@ -2166,6 +2180,7 @@ var CoordCache = FC.CoordCache = Class.extend({
2166
2180
  // Gets the right offset (from document left) of the element at the given index.
2167
2181
  // This value is NOT relative to the document's right edge, like the CSS concept of "right" would be.
2168
2182
  getRightOffset: function(leftIndex) {
2183
+ this.ensureBuilt();
2169
2184
  return this.rights[leftIndex];
2170
2185
  },
2171
2186
 
@@ -2173,30 +2188,35 @@ var CoordCache = FC.CoordCache = Class.extend({
2173
2188
  // Gets the right position (from offsetParent left) of the element at the given index.
2174
2189
  // This value is NOT relative to the offsetParent's right edge, like the CSS concept of "right" would be.
2175
2190
  getRightPosition: function(leftIndex) {
2191
+ this.ensureBuilt();
2176
2192
  return this.rights[leftIndex] - this.origin.left;
2177
2193
  },
2178
2194
 
2179
2195
 
2180
2196
  // Gets the width of the element at the given index
2181
2197
  getWidth: function(leftIndex) {
2198
+ this.ensureBuilt();
2182
2199
  return this.rights[leftIndex] - this.lefts[leftIndex];
2183
2200
  },
2184
2201
 
2185
2202
 
2186
2203
  // Gets the top offset (from document top) of the element at the given index
2187
2204
  getTopOffset: function(topIndex) {
2205
+ this.ensureBuilt();
2188
2206
  return this.tops[topIndex];
2189
2207
  },
2190
2208
 
2191
2209
 
2192
2210
  // Gets the top position (from offsetParent top) of the element at the given position
2193
2211
  getTopPosition: function(topIndex) {
2212
+ this.ensureBuilt();
2194
2213
  return this.tops[topIndex] - this.origin.top;
2195
2214
  },
2196
2215
 
2197
2216
  // Gets the bottom offset (from the document top) of the element at the given index.
2198
2217
  // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be.
2199
2218
  getBottomOffset: function(topIndex) {
2219
+ this.ensureBuilt();
2200
2220
  return this.bottoms[topIndex];
2201
2221
  },
2202
2222
 
@@ -2204,12 +2224,14 @@ var CoordCache = FC.CoordCache = Class.extend({
2204
2224
  // Gets the bottom position (from the offsetParent top) of the element at the given index.
2205
2225
  // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be.
2206
2226
  getBottomPosition: function(topIndex) {
2227
+ this.ensureBuilt();
2207
2228
  return this.bottoms[topIndex] - this.origin.top;
2208
2229
  },
2209
2230
 
2210
2231
 
2211
2232
  // Gets the height of the element at the given index
2212
2233
  getHeight: function(topIndex) {
2234
+ this.ensureBuilt();
2213
2235
  return this.bottoms[topIndex] - this.tops[topIndex];
2214
2236
  }
2215
2237
 
@@ -3727,20 +3749,9 @@ Grid.mixin({
3727
3749
 
3728
3750
  // Generates a semicolon-separated CSS string to be used for the default rendering of a background event.
3729
3751
  // Called by the fill system.
3730
- // TODO: consolidate with getEventSkinCss?
3731
3752
  bgEventSegCss: function(seg) {
3732
- var view = this.view;
3733
- var event = seg.event;
3734
- var source = event.source || {};
3735
-
3736
3753
  return {
3737
- 'background-color':
3738
- event.backgroundColor ||
3739
- event.color ||
3740
- source.backgroundColor ||
3741
- source.color ||
3742
- view.opt('eventBackgroundColor') ||
3743
- view.opt('eventColor')
3754
+ 'background-color': this.getSegSkinCss(seg)['background-color']
3744
3755
  };
3745
3756
  },
3746
3757
 
@@ -4323,7 +4334,8 @@ Grid.mixin({
4323
4334
 
4324
4335
 
4325
4336
  // Utility for generating event skin-related CSS properties
4326
- getEventSkinCss: function(event) {
4337
+ getSegSkinCss: function(seg) {
4338
+ var event = seg.event;
4327
4339
  var view = this.view;
4328
4340
  var source = event.source || {};
4329
4341
  var eventColor = event.color;
@@ -5546,7 +5558,7 @@ DayGrid.mixin({
5546
5558
  var isResizableFromEnd = !disableResizing && event.allDay &&
5547
5559
  seg.isEnd && view.isEventResizableFromEnd(event);
5548
5560
  var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);
5549
- var skinCss = cssToStr(this.getEventSkinCss(event));
5561
+ var skinCss = cssToStr(this.getSegSkinCss(seg));
5550
5562
  var timeHtml = '';
5551
5563
  var timeText;
5552
5564
  var titleHtml;
@@ -6902,7 +6914,7 @@ TimeGrid.mixin({
6902
6914
  var isResizableFromStart = !disableResizing && seg.isStart && view.isEventResizableFromStart(event);
6903
6915
  var isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventResizableFromEnd(event);
6904
6916
  var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);
6905
- var skinCss = cssToStr(this.getEventSkinCss(event));
6917
+ var skinCss = cssToStr(this.getSegSkinCss(seg));
6906
6918
  var timeText;
6907
6919
  var fullTimeText; // more verbose time text. for the print stylesheet
6908
6920
  var startTimeText; // just the start time text
@@ -7313,9 +7325,12 @@ var View = FC.View = Class.extend({
7313
7325
  // document handlers, bound to `this` object
7314
7326
  documentMousedownProxy: null, // TODO: doesn't work with touch
7315
7327
 
7316
- // for refresh timing of now indicator
7317
- nowIndicatorTimeoutID: null,
7318
- nowIndicatorIntervalID: null,
7328
+ // now indicator
7329
+ isNowIndicatorRendered: null,
7330
+ initialNowDate: null, // result first getNow call
7331
+ initialNowQueriedMs: null, // ms time the getNow was called
7332
+ nowIndicatorTimeoutID: null, // for refresh timing of now indicator
7333
+ nowIndicatorIntervalID: null, // "
7319
7334
 
7320
7335
 
7321
7336
  constructor: function(calendar, type, options, intervalDuration) {
@@ -7585,22 +7600,6 @@ var View = FC.View = Class.extend({
7585
7600
  },
7586
7601
 
7587
7602
 
7588
- // If the view has already been displayed, tears it down and displays it again.
7589
- // Will re-render the events if necessary, which display/clear DO NOT do.
7590
- // TODO: make behavior more consistent.
7591
- redisplay: function() {
7592
- if (this.isSkeletonRendered) {
7593
- var wasEventsRendered = this.isEventsRendered;
7594
- this.clearEvents(); // won't trigger handlers if events never rendered
7595
- this.clearView();
7596
- this.displayView();
7597
- if (wasEventsRendered) { // only render and trigger handlers if events previously rendered
7598
- this.displayEvents(this.calendar.getEventCache());
7599
- }
7600
- }
7601
- },
7602
-
7603
-
7604
7603
  // Displays the view's non-event content, such as date-related content or anything required by events.
7605
7604
  // Renders the view's non-content skeleton if necessary.
7606
7605
  // Can be asynchronous and return a promise.
@@ -7618,10 +7617,7 @@ var View = FC.View = Class.extend({
7618
7617
  this.renderDates();
7619
7618
  this.updateSize();
7620
7619
  this.renderBusinessHours(); // might need coordinates, so should go after updateSize()
7621
-
7622
- if (this.opt('nowIndicator')) {
7623
- this.startNowIndicator();
7624
- }
7620
+ this.startNowIndicator();
7625
7621
  },
7626
7622
 
7627
7623
 
@@ -7723,34 +7719,42 @@ var View = FC.View = Class.extend({
7723
7719
  // TODO: somehow do this for the current whole day's background too
7724
7720
  startNowIndicator: function() {
7725
7721
  var _this = this;
7726
- var unit = this.getNowIndicatorUnit();
7727
- var initialNow; // result first getNow call
7728
- var initialNowQueried; // ms time of then getNow was called
7722
+ var unit;
7723
+ var update;
7729
7724
  var delay; // ms wait value
7730
7725
 
7731
- // rerenders the now indicator, computing the new current time from the amount of time that has passed
7732
- // since the initial getNow call.
7733
- function update() {
7734
- _this.unrenderNowIndicator();
7735
- _this.renderNowIndicator(
7736
- initialNow.clone().add(new Date() - initialNowQueried) // add ms
7737
- );
7726
+ if (this.opt('nowIndicator')) {
7727
+ unit = this.getNowIndicatorUnit();
7728
+ if (unit) {
7729
+ update = proxy(this, 'updateNowIndicator'); // bind to `this`
7730
+
7731
+ this.initialNowDate = this.calendar.getNow();
7732
+ this.initialNowQueriedMs = +new Date();
7733
+ this.renderNowIndicator(this.initialNowDate);
7734
+ this.isNowIndicatorRendered = true;
7735
+
7736
+ // wait until the beginning of the next interval
7737
+ delay = this.initialNowDate.clone().startOf(unit).add(1, unit) - this.initialNowDate;
7738
+ this.nowIndicatorTimeoutID = setTimeout(function() {
7739
+ _this.nowIndicatorTimeoutID = null;
7740
+ update();
7741
+ delay = +moment.duration(1, unit);
7742
+ delay = Math.max(100, delay); // prevent too frequent
7743
+ _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval
7744
+ }, delay);
7745
+ }
7738
7746
  }
7747
+ },
7739
7748
 
7740
- if (unit) {
7741
- initialNow = this.calendar.getNow();
7742
- initialNowQueried = +new Date();
7743
- this.renderNowIndicator(initialNow);
7744
7749
 
7745
- // wait until the beginning of the next interval
7746
- delay = initialNow.clone().startOf(unit).add(1, unit) - initialNow;
7747
- this.nowIndicatorTimeoutID = setTimeout(function() {
7748
- this.nowIndicatorTimeoutID = null;
7749
- update();
7750
- delay = +moment.duration(1, unit);
7751
- delay = Math.max(100, delay); // prevent too frequent
7752
- this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval
7753
- }, delay);
7750
+ // rerenders the now indicator, computing the new current time from the amount of time that has passed
7751
+ // since the initial getNow call.
7752
+ updateNowIndicator: function() {
7753
+ if (this.isNowIndicatorRendered) {
7754
+ this.unrenderNowIndicator();
7755
+ this.renderNowIndicator(
7756
+ this.initialNowDate.clone().add(new Date() - this.initialNowQueriedMs) // add ms
7757
+ );
7754
7758
  }
7755
7759
  },
7756
7760
 
@@ -7758,19 +7762,19 @@ var View = FC.View = Class.extend({
7758
7762
  // Immediately unrenders the view's current time indicator and stops any re-rendering timers.
7759
7763
  // Won't cause side effects if indicator isn't rendered.
7760
7764
  stopNowIndicator: function() {
7761
- var cleared = false;
7765
+ if (this.isNowIndicatorRendered) {
7762
7766
 
7763
- if (this.nowIndicatorTimeoutID) {
7764
- clearTimeout(this.nowIndicatorTimeoutID);
7765
- cleared = true;
7766
- }
7767
- if (this.nowIndicatorIntervalID) {
7768
- clearTimeout(this.nowIndicatorIntervalID);
7769
- cleared = true;
7770
- }
7767
+ if (this.nowIndicatorTimeoutID) {
7768
+ clearTimeout(this.nowIndicatorTimeoutID);
7769
+ this.nowIndicatorTimeoutID = null;
7770
+ }
7771
+ if (this.nowIndicatorIntervalID) {
7772
+ clearTimeout(this.nowIndicatorIntervalID);
7773
+ this.nowIndicatorIntervalID = null;
7774
+ }
7771
7775
 
7772
- if (cleared) { // is the indicator currently display?
7773
7776
  this.unrenderNowIndicator();
7777
+ this.isNowIndicatorRendered = false;
7774
7778
  }
7775
7779
  },
7776
7780
 
@@ -7808,6 +7812,7 @@ var View = FC.View = Class.extend({
7808
7812
 
7809
7813
  this.updateHeight(isResize);
7810
7814
  this.updateWidth(isResize);
7815
+ this.updateNowIndicator();
7811
7816
 
7812
7817
  if (isResize) {
7813
7818
  this.setScroll(scrollState);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.6.0 Google Calendar Plugin
2
+ * FullCalendar v2.6.1 Google Calendar Plugin
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2015 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.6.0 Stylesheet
2
+ * FullCalendar v2.6.1 Stylesheet
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2015 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.6.0 Print Stylesheet
2
+ * FullCalendar v2.6.1 Print Stylesheet
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2015 Adam Shaw
5
5
  */
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fullcalendar-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0.0
4
+ version: 2.6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bokmann
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-09 00:00:00.000000000 Z
12
+ date: 2016-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jquery-rails
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  version: '0'
168
168
  requirements: []
169
169
  rubyforge_project:
170
- rubygems_version: 2.5.1
170
+ rubygems_version: 2.4.8
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: A simple asset pipeline bundling for Ruby on Rails of the FullCalendar jQuery