kendo.ts 7.23 KB
'use strict';

angular.module("KendoDemos", ["kendo.directives"])
    .controller("MyCtrl", function ($scope, $http) {
        var config = false;
        var devconsole = {
            log: function (text) {
                if (config) {
                    console.log(text)
                };
            }
        }

        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)
                    schedulerStart()
                }

            }, function errorCallback(response) {
                console.error(response)
            });
        }

        getAuthURL()
        $scope.filter = {}
        $scope.data = {}
        $scope.filterEventID = function () {
            devconsole.log("filterEventID")
            $scope.schedulerSmartRMS.dataSource.filter({
                operator: function (task) {
                    return $scope.selectedIds.indexOf(parseInt(task.eventTypeID)) >= 0
                }
            });
        }


        $scope.selectOptions = {
            placeholder: "Select event...",
            dataTextField: "eventName",
            dataValueField: "eventID",
            tagTemplate: '<span class="k-button" style="background-color: #:data.color# "></span> <span>#:data.eventName#</span>',
            valuePrimitive: true,
            autoBind: false,
            dataSource: [{
                eventName: "Type1",
                eventID: 1,
                color: "#f8a398"
            },
            {
                eventName: "Type2",
                eventID: 2,
                color: "#51a0ed"
            },
            {
                eventName: "Type3",
                eventID: 3,
                color: "#56ca85"
            }]
        };
        $scope.selectedIds = [1];

        function scheduler_dataBinding(e) {
            devconsole.log("dataBinding");
        }

        function scheduler_dataBound(e) {
            devconsole.log("dataBound");
        }
        function scheduler_save(e) {
            devconsole.log("save");
            $scope.schedulerSmartRMS.refresh()
        }

        function scheduler_remove(e) {
            devconsole.log("remove");
            $scope.schedulerSmartRMS.refresh()
        }

        function scheduler_cancel(e) {
            devconsole.log("cancel");
        }

        function scheduler_edit(e) {
            devconsole.log("edit");
        }

        function scheduler_add(e) {
            devconsole.log("add");
        }
        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,
                dataBinding: scheduler_dataBinding,
                dataBound: scheduler_dataBound,
                save: scheduler_save,
                remove: scheduler_remove,
                edit: scheduler_edit,
                add: scheduler_add,
                cancel: scheduler_cancel,
                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: 1
                    }
                },
                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" }
                        ]
                    }
                ]
            };
        }
    })