[英]Angular Kendo Scheduler Filter
I'm using the kendo scheduler here in my project, my angular controller make a call to the server to get data, but when i try to filter the events dynamically, the events don't disapear, does anyone have any suggestions on how I can filter my Scheduler data dynamically? 我在项目中使用kendo调度程序,我的角度控制器调用服务器获取数据,但是当我尝试动态过滤事件时,事件不会消失,有人对我如何提出任何建议可以动态过滤我的Scheduler数据? Here is my controller
这是我的控制器
$scope.exercises = data.Data;
$scope.result = new kendo.data.ObservableArray([]);
$scope.transformData = function (response) {
var event;
for (var idx = 0, length = response.length; idx < length; idx++) {
event = response[idx];
$scope.result.push(new kendo.data.SchedulerEvent({
id: event.TaskID,
taskId: event.TaskID,
ownerId: event.OwnerID,
start: kendo.parseDate(event.start),
end: kendo.parseDate(event.end),
title: event.Title,
description: event.Description,
isAllDay: event.IsAllDay
}));
}
};
$scope.schedulerOptions = {
showWorkHours: false,
editable: false,
views: [
"day",
"workWeek",
"week",
{type: "month", selected: true},
],
resources: [
{
field: "ownerId",
title: "Owner",
dataSource: [
{value: "sazonalidade_padrao", color: "red" },
{value: "volumetrica_anual", color: "green" },
{value: "flexibilidade_mensal", color: "yellow"},
{value: "volumetrica_mensal", color: "orange"}
]
}
],
dataSource: {
data: $scope.result,
filter: {
logic: "or",
filters: [
{ field: "ownerId", operator: "eq", value: "sazonalidade_padrao" },
{ field: "ownerId", operator: "eq", value: "volumetrica_anual" },
{ field: "ownerId", operator: "eq", value: "flexibilidade_mensal" },
{ field: "ownerId", operator: "eq", value: "volumetrica_mensal" }
]
}
}
};
$scope.generateObjToScheduler = function() {
var i = 0;
var resultado = [];
angular.forEach($scope.exercises, function (exercise) {
if (exercise.Operation.generalStatus == 'aprovado') {
i++;
var dateStart = moment(exercise.dueDate, 'YYYY-MM-DD').format('x');
var dateEnd = moment(exercise.dueDate, 'YYYY-MM-DD').format('x');
var response = {
"TaskID": i,
"OwnerID": exercise.OperationFlexibility.type,
"Title": exercise.Operation.code+'-'+exercise.OperationFlexibility.name,
"Description": exercise.OperationFlexibility.name,
"IsAllDay": true,
"start": "/Date(" + dateStart + ")/",
"end": "/Date(" + dateEnd + ")/"
};
resultado.push(response);
}
});
$scope.transformData(resultado);
};
$scope.generateObjToScheduler();
$scope.filterFlexibility = function() {
$scope.schedulerOptions.dataSource.filter.filters.splice(0,1);
};
}
]);
I fire filterFlexibility function from a checkbox 我从复选框触发filterFlexibility函数
I will answer my own question, i find the solution, when you splice an item from a kendo.data.ObservableArray, kendo reorganize all the index of this array, so here is my solution to filter the itens 我将回答我自己的问题,找到解决方案,当您从kendo.data.ObservableArray拼接项目时,kendo会重新组织此数组的所有索引,因此这是我过滤itens的解决方案
$scope.exercises = data.Data;
var i = 0;
$scope.result = new kendo.data.ObservableArray([]);
$scope.transformData = function (response) {
var event;
for (var idx = 0, length = response.length; idx < length; idx++) {
event = response[idx];
$scope.result.push(new kendo.data.SchedulerEvent({
id: event.TaskID,
taskId: event.TaskID,
ownerId: event.OwnerID,
start: kendo.parseDate(event.start),
end: kendo.parseDate(event.end),
title: event.Title,
description: event.Description,
isAllDay: event.IsAllDay
}));
}
};
$scope.schedulerOptions = {
showWorkHours: false,
views: [
"day",
"workWeek",
"week",
{type: "month", selected: true}
],
resources: [
{
field: "ownerId",
title: "Owner",
dataSource: [
{text: "sazonalidade_padrao",value: "sazonalidade_padrao", color: "red" },
{text: "volumetrica_anual",value: "volumetrica_anual", color: "green" },
{text: "flexibilidade_mensal",value: "flexibilidade_mensal", color: "yellow"},
{text: "volumetrica_mensal",value: "volumetrica_mensal", color: "orange"}
]
}
],
dataSource: {
data: $scope.result
}
};
$scope.generateObjToScheduler = function() {
var resultado = [];
angular.forEach($scope.exercises, function (exercise) {
if (exercise.Operation.generalStatus == 'aprovado') {
i++;
var dateStart = moment(exercise.dueDate, 'YYYY-MM-DD').format('x');
var dateEnd = moment(exercise.dueDate, 'YYYY-MM-DD').format('x');
var response = {
"TaskID": i,
"OwnerID": exercise.OperationFlexibility.type,
"id": exercise.dOperationFlexibilityId,
"Title": exercise.Operation.code+'-'+exercise.OperationFlexibility.name,
"Description": exercise.OperationFlexibility.name,
"IsAllDay": true,
"start": "/Date(" + dateStart + ")/",
"end": "/Date(" + dateEnd + ")/"
};
resultado.push(response);
}
});
$scope.transformData(resultado);
};
$scope.generateObjToScheduler();
$scope.filterFlexibility = function(flexibility) {
var a = 0;
var j = 0;
var inArray = false;
while(a < $scope.result.length){
if($scope.result[a].ownerId == flexibility){
inArray = true;
$scope.result.splice(a, 1);
a=0;
}else{
a++
}
}
if(inArray == false) {
for (j; j < $scope.exercises.length; j++) {
if ($scope.exercises[j].type == flexibility) {
i++;
$scope.result.push(new kendo.data.SchedulerEvent({
id: i,
taskId: i,
ownerId: flexibility,
start: kendo.parseDate("/Date(" + moment($scope.exercises[j].dueDate, 'YYYY-MM-DD').format('x') + ")/"),
end: kendo.parseDate("/Date(" + moment($scope.exercises[j].dueDate, 'YYYY-MM-DD').format('x') + ")/"),
title: $scope.exercises[j].Operation.code + '-' + $scope.exercises[j].OperationFlexibility.name,
description: $scope.exercises[j].OperationFlexibility.name,
isAllDay: true
}));
}
}
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.