fixed issues 554, 586, and 616
This commit is contained in:
parent
82aacbb9d8
commit
453fcf07e3
5 changed files with 202 additions and 30 deletions
|
@ -26,6 +26,7 @@ function EventManager(options, eventSources) {
|
|||
|
||||
|
||||
// locals
|
||||
var fetchID = 0;
|
||||
var eventStart, eventEnd;
|
||||
var events = [];
|
||||
var loadingLevel = 0;
|
||||
|
@ -64,45 +65,49 @@ function EventManager(options, eventSources) {
|
|||
|
||||
// Fetch from ALL sources. Clear 'events' array and populate
|
||||
function fetchEvents(callback) {
|
||||
var view = getView();
|
||||
events = [];
|
||||
eventStart = cloneDate(view.visStart);
|
||||
eventEnd = cloneDate(view.visEnd);
|
||||
var queued = eventSources.length,
|
||||
sourceDone = function() {
|
||||
fetchEventSources(eventSources, callback);
|
||||
}
|
||||
|
||||
|
||||
// appends to the events array
|
||||
function fetchEventSources(sources, callback) {
|
||||
var savedID = ++fetchID;
|
||||
var queued = sources.length;
|
||||
var view = getView();
|
||||
eventStart = cloneDate(view.visStart); // we don't need to make local copies b/c
|
||||
eventEnd = cloneDate(view.visEnd); // eventStart/eventEnd is only assigned/manipulated here
|
||||
function sourceDone(source, sourceEvents) {
|
||||
if (savedID == fetchID && eventStart >= view.visStart && eventEnd <= view.visEnd) {
|
||||
// same fetchEventSources call, and still in correct date range
|
||||
if ($.inArray(source, eventSources) != -1) { // source hasn't been removed since we started
|
||||
for (var i=0; i<sourceEvents.length; i++) {
|
||||
normalizeEvent(sourceEvents[i]);
|
||||
sourceEvents[i].source = source;
|
||||
}
|
||||
events = events.concat(sourceEvents);
|
||||
}
|
||||
if (!--queued) {
|
||||
if (callback) {
|
||||
callback(events);
|
||||
}
|
||||
}
|
||||
}, i=0;
|
||||
for (; i<eventSources.length; i++) {
|
||||
fetchEventSource(eventSources[i], sourceDone);
|
||||
}
|
||||
}
|
||||
for (var i=0; i<sources.length; i++) {
|
||||
_fetchEventSource(sources[i], sourceDone);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Fetch from a particular source. Append to the 'events' array
|
||||
function fetchEventSource(src, callback) {
|
||||
var prevView = getView(),
|
||||
prevDate = getDate(),
|
||||
reportEvents = function(a) {
|
||||
if (prevView == getView() && +prevDate == +getDate() && // protects from fast switching
|
||||
$.inArray(src, eventSources) != -1) { // makes sure source hasn't been removed
|
||||
for (var i=0; i<a.length; i++) {
|
||||
normalizeEvent(a[i]);
|
||||
a[i].source = src;
|
||||
}
|
||||
events = events.concat(a);
|
||||
if (callback) {
|
||||
callback(a);
|
||||
}
|
||||
}
|
||||
},
|
||||
reportEventsAndPop = function(a) {
|
||||
reportEvents(a);
|
||||
popLoading();
|
||||
};
|
||||
function _fetchEventSource(src, callback) {
|
||||
function reportEvents(a) {
|
||||
callback(src, a);
|
||||
}
|
||||
function reportEventsAndPop(a) {
|
||||
reportEvents(a);
|
||||
popLoading();
|
||||
}
|
||||
if (typeof src == 'string') {
|
||||
var params = {};
|
||||
params[options.startParam] = Math.round(eventStart.getTime() / 1000);
|
||||
|
@ -130,6 +135,11 @@ function EventManager(options, eventSources) {
|
|||
}
|
||||
|
||||
|
||||
function fetchEventSource(src, callback) {
|
||||
fetchEventSources([src], callback);
|
||||
}
|
||||
|
||||
|
||||
function refetchEvents() {
|
||||
fetchEvents(rerenderEvents);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue