Skip to content

Commit 7a4d650

Browse files
author
Mikail Bayram
authored
Let user know if the iCal feed is too big to load (#88)
1 parent 324dc08 commit 7a4d650

5 files changed

Lines changed: 37 additions & 8 deletions

File tree

control/content/controllers/content.home.controller.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
ContentHome.validLinkSuccess = false;
2626
ContentHome.validLinkFailure = false;
2727
ContentHome.validLinkNoEvents = false;
28+
ContentHome.largePayload = false;
2829
var tmrDelay = null;
2930

3031
var updateMasterItem = function (data) {
@@ -111,6 +112,7 @@
111112
ContentHome.validateCalUrl = function () {
112113
function successCallback(resp) {
113114
Buildfire.spinner.hide();
115+
ContentHome.largePayload = false;
114116
if (resp && resp.events) {
115117
ContentHome.validLinkSuccess = true;
116118
$timeout(function () {
@@ -158,6 +160,18 @@
158160
* */
159161
init();
160162

163+
buildfire.messaging.onReceivedMessage = function(message) {
164+
switch(message.cmd) {
165+
case "PAYLOAD_TOO_LARGE":
166+
$timeout(function () {
167+
ContentHome.largePayload = true;
168+
},0);
169+
return;
170+
default:
171+
return;
172+
}
173+
}
174+
161175
/*
162176
* watch for changes in data and trigger the saveDataWithDelay function on change
163177
* */

control/content/templates/home.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
ng-change="ContentHome.clearData()"/>
1010
</div>
1111
<div class="col-md-4 pull-right">
12-
<button class="btn btn-primary pull-right stretch"
12+
<button class="btn btn-success pull-right stretch"
1313
ng-click="ContentHome.validateCalUrl()"
1414
ng-disabled="!ContentHome.calUrl">Validate
1515
</button>
@@ -29,5 +29,8 @@
2929
>There is
3030
an error with this feed. Please check and try again.
3131
</div>
32+
<div class="alert alert-sm alert-warning margin-top-ten" ng-show="ContentHome.largePayload">
33+
Warning: Your calendar feed seems to be very large and will load slowly for your users. Please consider deleting old and redundant events to prevent longer load times
34+
</div>
3235
</div>
3336
</div>

widget/app.services.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
};
7575
var getFeedEvents = function (url, date, offset, refreshData, requestType) {
7676
console.log("start getFeedEvents: " + new Date());
77+
var requestStart = +new Date();
7778
var deferred = $q.defer();
7879
if (!url) {
7980
deferred.reject(new Error('Undefined feed url'));
@@ -102,6 +103,7 @@
102103
return e;
103104
}).then(function (r) {
104105
postObj.offset = i;
106+
buildfire.spinner.show();
105107
return $http({
106108
method: "post",
107109
url: getProxyServerUrl() + '/events',
@@ -134,6 +136,15 @@
134136
//duplicated events - filter
135137

136138
deferred.resolve(finalResults);
139+
var requestEnd = +new Date() - requestStart;
140+
buildfire.spinner.hide();
141+
142+
// if it took longer than 3s to load
143+
if(requestEnd > 3000) {
144+
buildfire.messaging.sendMessageToControl({
145+
cmd: "PAYLOAD_TOO_LARGE",
146+
});
147+
}
137148
console.log("end getFeedEvents: " + new Date());
138149
});
139150
});

widget/controllers/widget.feed.controller.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -574,13 +574,15 @@
574574
$scope.today();
575575

576576
$scope.getDayClass = function (date, mode) {
577-
var dayToCheck = new Date(date).setHours(0, 0, 0, 0);
577+
var dayToCheck = new Date(date ? date : new Date()).setHours(0, 0, 0, 0);
578578
var currentDay;
579-
for (var i = 0; i < WidgetFeed.eventsAll.length; i++) {
580-
currentDay = new Date(WidgetFeed.eventsAll[i].startDate).setHours(0, 0, 0, 0);
581-
if (dayToCheck === currentDay) {
582-
return 'eventDate avoid-clicks-none';
583-
}
579+
if(WidgetFeed.eventsAll) {
580+
for (var i = 0; i < WidgetFeed.eventsAll.length; i++) {
581+
currentDay = new Date(WidgetFeed.eventsAll[i].startDate).setHours(0, 0, 0, 0);
582+
if (dayToCheck === currentDay) {
583+
return 'eventDate avoid-clicks-none';
584+
}
585+
}
584586
}
585587
};
586588

widget/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
<div
5353
ng-class="{'eventDateNew button span:after': !WidgetFeed.eventClassToggle}" ng-style="deviceWidth ? {'min-height': (9 * deviceWidth / 11) + 'px' }:{'min-height': (9 * 320 / 11) + 'px' }">
5454
<datepicker ng-model="dt" show-weeks="false" max-mode="day"
55-
ng-if="WidgetFeed.eventsAll"
5655
class="calendar-day" show-year="false"
5756
custom-class="getDayClass(date, mode)"
5857
ng-click="WidgetFeed.getEventDate(dt)">

0 commit comments

Comments
 (0)