kendo.js 10.7 KB
angular.module("KendoDemos", ["kendo.directives"])
    .controller("MyCtrl", function ($scope, $http) {
        $scope.monthPickerConfig = {
            start: "year",
            depth: "year",
            format: "MMMM yyyy"
        };
        $scope.update = function () {
            console.log("update")
        }

        $scope.create = function () {
            console.log("create")
        }
        function getAuthURL() {
            $http({
                method: 'get',
                url: '/events'
            }).then(function successCallback(response) {
                var res = response.data
                if (res.result) {
                    if (res.result.status == "redirect") {
                        window.open(res.result.data, '_self')
                    }
                } else {
                    console.info(response)
                    schedulerOptions2()
                }

            }, function errorCallback(response) {
                console.error(response)
            });
        }
        getAuthURL()
        $scope.filter = {}
        $scope.data = {}
        $scope.test = function () {
            console.log($scope.operation)
        }

        function schedulerStart() {
            $scope.schedulerOptions = {
                date: new Date("2016/10/12"),
                startTime: new Date("2016/10/12 07:00"),
                majorTimeHeaderTemplate: kendo.template("<strong>#=kendo.toString(date, 'HH:mm')#</strong><sup> น.</sup>"),
                minorTickCount: 1,
                toolbar: ["pdf"],
                messages: {
                    cancel: "Cancel",
                    save: "Save",
                    deleteWindowTitle: "Remove event",
                    pdf: "PDF Export",
                    editable: {
                        confirmation: "Are you sure you want to delete this event?"
                    },
                    editor: {
                        description: "Description"
                    }
                },
                height: 600,
                views: [
                    "day",
                    { type: "workWeek", selected: true },
                    "week",
                    "month",
                    "agenda",
                    "timeline"
                ],
                timezone: "Asia/Bangkok",
                dataSource: {
                    batch: true,
                    transport: {
                        read: {
                            url: "//localhost:3001/events",
                            dataType: "jsonp",
                            type: "GET"
                        },
                        update: {
                            url: "//localhost:3001/events",
                            dataType: "jsonp",
                            type: "PUT"
                        },
                        create: {
                            url: "//localhost:3001/events",
                            dataType: "jsonp",
                            type: "POST"
                        },
                        destroy: {
                            url: "//localhost:3001/events",
                            dataType: "jsonp",
                            type: "DELETE"
                        },
                        parameterMap: function (options, operation) {
                            if (operation !== "read" && options.models) {
                                return { models: kendo.stringify(options.models) };
                            }
                        }
                    },
                    schema: {
                        model: {
                            id: "taskId",
                            fields: {
                                taskId: { from: "TaskID" },
                                title: { from: "Title", defaultValue: "No title", validation: { required: true } },
                                start: { type: "datetime", from: "Start" },
                                end: { type: "datetime", from: "End" },
                                startTimezone: { from: "StartTimezone", defaultValue: "Asia/Bangkok" },
                                endTimezone: { from: "EndTimezone", defaultValue: "Asia/Bangkok" },
                                description: { from: "Description" },
                                recurrenceId: { from: "RecurrenceID" },
                                recurrenceRule: { from: "RecurrenceRule" },
                                recurrenceException: { from: "RecurrenceException" },
                                eventTypeID: { from: "EventTypeID" },
                                isAllDay: { type: "boolean", from: "IsAllDay" }
                            }
                        }
                    },
                    filter: {
                        field: "eventTypeID", operator: "eq", value: parseInt($scope.data.value)
                    }
                },
                editable: true,
                resources: [
                    {
                        field: "eventTypeID",
                        title: "EventType",
                        dataSource: [
                            { text: "Type1", value: 1, color: "#f8a398" },
                            { text: "Type2", value: 2, color: "#51a0ed" },
                            { text: "Type3", value: 3, color: "#56ca85" }
                        ]
                    }
                ]
            };
        }


        function schedulerOptions2() {
            $(function () {
                $("#scheduler").kendoScheduler({
                    date: new Date("2016/10/12"),
                    startTime: new Date("2016/10/12 07:00"),
                    majorTimeHeaderTemplate: kendo.template("<strong>#=kendo.toString(date, 'HH:mm')#</strong><sup> น.</sup>"),
                    minorTickCount: 1,
                    toolbar: ["pdf"],
                    messages: {
                        cancel: "Cancel",
                        save: "Save",
                        deleteWindowTitle: "Remove event",
                        pdf: "PDF Export",
                        editable: {
                            confirmation: "Are you sure you want to delete this event?"
                        },
                        editor: {
                            description: "Description"
                        }
                    },
                    height: 600,
                    views: [
                        "day",
                        { type: "workWeek", selected: true },
                        "week",
                        "month",
                        "agenda",
                        "timeline"
                    ],
                    timezone: "Asia/Bangkok",
                    dataSource: {
                        batch: true,
                        transport: {
                            read: {
                                url: "//localhost:3001/events",
                                dataType: "jsonp",
                                type: "GET"
                            },
                            update: {
                                url: "//localhost:3001/events",
                                dataType: "jsonp",
                                type: "PUT"
                            },
                            create: {
                                url: "//localhost:3001/events",
                                dataType: "jsonp",
                                type: "POST"
                            },
                            destroy: {
                                url: "//localhost:3001/events",
                                dataType: "jsonp",
                                type: "DELETE"
                            },
                            parameterMap: function (options, operation) {
                                if (operation !== "read" && options.models) {
                                    return { models: kendo.stringify(options.models) };
                                }
                            }
                        },
                        schema: {
                            model: {
                                id: "taskId",
                                fields: {
                                    taskId: { from: "TaskID" },
                                    title: { from: "Title", defaultValue: "No title", validation: { required: true } },
                                    start: { type: "datetime", from: "Start" },
                                    end: { type: "datetime", from: "End" },
                                    startTimezone: { from: "StartTimezone", defaultValue: "Asia/Bangkok" },
                                    endTimezone: { from: "EndTimezone", defaultValue: "Asia/Bangkok" },
                                    description: { from: "Description" },
                                    recurrenceId: { from: "RecurrenceID" },
                                    recurrenceRule: { from: "RecurrenceRule" },
                                    recurrenceException: { from: "RecurrenceException" },
                                    eventTypeID: { from: "EventTypeID" },
                                    isAllDay: { type: "boolean", from: "IsAllDay" }
                                }
                            }
                        },
                        filter: {
                            logic: "or",
                            filters: [
                                { field: "eventTypeID", operator: "eq", value: 1 },
                                { field: "eventTypeID", operator: "eq", value: 2 }
                            ]
                        }
                    },
                    editable: true,
                    resources: [
                        {
                            field: "eventTypeID",
                            title: "EventType",
                            dataSource: [
                                { text: "Type1", value: 1, color: "#f8a398" },
                                { text: "Type2", value: 2, color: "#51a0ed" },
                                { text: "Type3", value: 3, color: "#56ca85" }
                            ]
                        }
                    ]
                });

                $("#people :checkbox").change(function (e) {
                    var checked = $.map($("#people :checked"), function (checkbox) {
                        return parseInt($(checkbox).val());
                    });

                    var scheduler = $("#scheduler").data("kendoScheduler");

                    scheduler.dataSource.filter({
                        operator: function (task) {
                            return $.inArray(task.eventTypeID, checked) >= 0;
                        }
                    });
                });
            });
        }
    })