diff --git a/app/controllers/home.controller.js b/app/controllers/home.controller.js index a99276c..8d10290 100644 --- a/app/controllers/home.controller.js +++ b/app/controllers/home.controller.js @@ -37,7 +37,7 @@ function ggToKendo(data) { for (var n = 0; n < data.items.length; n++) { dataToArr.push({ "TaskID": data.items[n].id, - "OwnerID": 2, + "EventTypeID": checkObjEmpty(data.items[n].extendedProperties, 'private'), "Title": data.items[n].summary, "Description": data.items[n].description, "StartTimezone": "Asia/Bangkok", @@ -125,14 +125,19 @@ function eventCreate(req, res) { payload = payload.models[0] } - let summary = payload.summary - let description = payload.description - let email = payload.email - let startDate = payload.startDate - let startTimezone = payload.startTimezone - let endDate = payload.endDate - let endTimezone = payload.endTimezone - let extendedProperties = payload.extendedProperties + // let summary = payload.summary + // let description = payload.description + // let email = payload.email + // let startDate = payload.startDate + // let startTimezone = payload.startTimezone + // let endDate = payload.endDate + // let endTimezone = payload.endTimezone + // // let extendedProperties = payload.extendedProperties + // payload.extendedProperties = { + // "private": { + // "eventTypeID": payload.EventTypeID + // } + // } lib.authorize((err, auth) => { let options = lib.eventBuilder(payload) @@ -225,6 +230,16 @@ function eventUpdate(req, res) { }) } +function checkObjEmpty(obj, parm) { + if (obj) { + if (Object.getOwnPropertyNames(obj)) { + return obj[parm].eventTypeID + } + } else { + return + } + +} module.exports.index = index module.exports.events = events diff --git a/app/lib/index.js b/app/lib/index.js index 0118d61..4e9f8a9 100644 --- a/app/lib/index.js +++ b/app/lib/index.js @@ -156,7 +156,8 @@ module.exports = { calendar.events.update({ auth: options.auth, calendarId: CALENDAR_ID || 'primary', - eventId: options.eventId + eventId: options.eventId, + resource: options }, (err, response) => { if (err) return callback(err); @@ -192,8 +193,12 @@ module.exports = { ] } } - if (payload.extendedProperties) { - buildPayload.extendedProperties = payload.extendedProperties + if (payload.EventTypeID) { + buildPayload.extendedProperties = { + "private": { + "eventTypeID": payload.EventTypeID + } + } } } catch (error) { console.error(error.message) @@ -243,6 +248,13 @@ module.exports = { ] } } + if (payload.EventTypeID) { + buildPayload.extendedProperties = { + "private": { + "eventTypeID": payload.EventTypeID + } + } + } if (payload.extendedProperties) { buildPayload.extendedProperties = payload.extendedProperties } diff --git a/app/routes/home.routes.js b/app/routes/home.routes.js index 375b830..53b76ca 100644 --- a/app/routes/home.routes.js +++ b/app/routes/home.routes.js @@ -3,7 +3,7 @@ var express = require('express') var router = express.Router() var home = require('../controllers/home.controller') -router.get('/', home.index) +router.get('/', home.home) router.get('/home', home.home) router.get('/events', home.events) diff --git a/public/js/controllers/kendo.js b/public/js/controllers/kendo.js index 53a7e68..f4d4963 100644 --- a/public/js/controllers/kendo.js +++ b/public/js/controllers/kendo.js @@ -1,5 +1,10 @@ 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") } @@ -19,7 +24,7 @@ angular.module("KendoDemos", ["kendo.directives"]) } } else { console.info(response) - schedulerStart() + schedulerOptions2() } }, function errorCallback(response) { @@ -27,17 +32,39 @@ angular.module("KendoDemos", ["kendo.directives"]) }); } 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 AM"), + startTime: new Date("2016/10/12 07:00"), + majorTimeHeaderTemplate: kendo.template("#=kendo.toString(date, 'HH:mm')# น."), + 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: { @@ -83,32 +110,144 @@ angular.module("KendoDemos", ["kendo.directives"]) recurrenceId: { from: "RecurrenceID" }, recurrenceRule: { from: "RecurrenceRule" }, recurrenceException: { from: "RecurrenceException" }, - ownerId: { from: "OwnerID", defaultValue: 1 }, + eventTypeID: { from: "EventTypeID" }, isAllDay: { type: "boolean", from: "IsAllDay" } } } }, filter: { - logic: "or", - filters: [ - { field: "ownerId", operator: "eq", value: 1 }, - { field: "ownerId", operator: "eq", value: 2 } - ] + field: "eventTypeID", operator: "eq", value: parseInt($scope.data.value) } }, editable: true, resources: [ { - field: "ownerId", - title: "Owner", + field: "eventTypeID", + title: "EventType", dataSource: [ - { text: "Alex", value: 1, color: "#f8a398" }, - { text: "Bob", value: 2, color: "#51a0ed" }, - { text: "Charlie", value: 3, color: "#56ca85" } + { 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("#=kendo.toString(date, 'HH:mm')# น."), + 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; + } + }); + }); + }); + } }) diff --git a/public/views/index.html b/public/views/index.html index 3495715..3353d70 100644 --- a/public/views/index.html +++ b/public/views/index.html @@ -7,9 +7,9 @@ - + - + @@ -29,10 +29,29 @@