Add debounce function to preview list to reduce overhead

This commit is contained in:
Marliana Lara 2018-02-16 10:52:02 -05:00
parent e0cfd18aac
commit b9a2f7a87e
No known key found for this signature in database
GPG Key ID: 38C73B40DFA809EE
3 changed files with 28 additions and 26 deletions

View File

@ -308,6 +308,27 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait',
}
});
}
let previewList = _.debounce(function(req) {
$http.post('/api/v2/schedules/preview/', {'rrule': req})
.then(({data}) => {
$scope.preview_list = data;
for (let tz in data) {
$scope.preview_list.isEmpty = data[tz].length === 0;
$scope.preview_list[tz] = data[tz].map(function(date) {
date = date.replace(/Z/, '');
return moment.parseZone(date).format("MM-DD-YYYY HH:mm:ss");
});
}
});
}, 300);
$scope.$on("setPreviewPane", (event) => {
let rrule = event.currentScope.rrule.toString();
let req = RRuleToAPI(rrule, $scope);
previewList(req);
});
scheduler.inject('form-container', false);
scheduler.injectDetail('occurrences', false);
scheduler.clear();
@ -316,22 +337,6 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait',
$scope.$on("formUpdated", function() {
$rootScope.$broadcast("loadSchedulerDetailPane");
});
$scope.$on("setPreviewPane", (event) => {
let rrule = event.currentScope.rrule.toString();
let req = RRuleToAPI(rrule, $scope);
$http.post('/api/v2/schedules/preview/', {'rrule': req})
.then(({data}) => {
$scope.preview_list = data;
for (let tz in data) {
$scope.preview_list.isEmpty = data[tz].length === 0;
$scope.preview_list[tz] = data[tz].map(function(date) {
date = date.replace(/Z/, '');
return moment.parseZone(date).format("MM-DD-YYYY HH:mm:ss");
});
}
});
});
$scope.$watchGroup(["schedulerName",
"schedulerStartDt",
"schedulerStartHour",

View File

@ -85,10 +85,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment,
callSelect2();
});
$scope.$on("setPreviewPane", (event) => {
let rrule = event.currentScope.rrule.toString();
let req = RRuleToAPI(rrule, $scope);
let previewList = _.debounce(function(req) {
$http.post('/api/v2/schedules/preview/', {'rrule': req})
.then(({data}) => {
$scope.preview_list = data;
@ -100,6 +97,12 @@ function($filter, $state, $stateParams, Wait, $scope, moment,
});
}
});
}, 300);
$scope.$on("setPreviewPane", (event) => {
let rrule = event.currentScope.rrule.toString();
let req = RRuleToAPI(rrule, $scope);
previewList(req);
});
Wait('start');

View File

@ -28,12 +28,6 @@
name="schedulerName"
id="schedulerName"
ng-model="schedulerName" required
ng-model-options="{
'updateOn': 'default blur',
'debounce': {
'default': 300,
'blur': 0
}}"
ng-disabled="!(schedule_obj.summary_fields.user_capabilities.edit || canAdd)"
placeholder="Schedule name">
<div class="error"