kendo.js 6.58 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" }
                    ]
                }
            ]
        };
    }
});