From 33cb1723eeaa5727e585cade26ea0585b4fd689a Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 15 Feb 2016 22:14:24 -0500 Subject: [PATCH] Display category colors on calendar --- admin/calendar.php | 6 +++--- internal-api/dao/calendar_dao.php | 5 ++++- js/calendar/mods-for-hesk-calendar.js | 28 +++++++++++++++++++++++++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/admin/calendar.php b/admin/calendar.php index d96269cb..4bec0989 100644 --- a/admin/calendar.php +++ b/admin/calendar.php @@ -50,7 +50,7 @@ hesk_isLoggedIn(); define('MFH_CALENDAR', 1); // Get categories for the dropdown -$rs = hesk_dbQuery("SELECT `id`, `name` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` ORDER BY `cat_order`"); +$rs = hesk_dbQuery("SELECT `id`, `name`, `color` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "categories` ORDER BY `cat_order`"); $categories = []; while ($row = hesk_dbFetchAssoc($rs)) { $categories[] = $row; @@ -127,7 +127,7 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); echo ''; } foreach ($categories as $category): ?> - @@ -264,7 +264,7 @@ require_once(HESK_PATH . 'inc/show_admin_nav.inc.php'); echo ''; } foreach ($categories as $category): ?> - diff --git a/internal-api/dao/calendar_dao.php b/internal-api/dao/calendar_dao.php index 83c2a780..30218987 100644 --- a/internal-api/dao/calendar_dao.php +++ b/internal-api/dao/calendar_dao.php @@ -1,7 +1,8 @@ = FROM_UNIXTIME(" . hesk_dbEscape($start) @@ -21,6 +22,7 @@ function get_events($start, $end, $hesk_settings) { $event['comments'] = $row['comments']; $event['categoryId'] = $row['category']; $event['categoryName'] = $row['category_name']; + $event['categoryColor'] = $row['category_color']; $events[] = $event; } @@ -41,6 +43,7 @@ function get_events($start, $end, $hesk_settings) { $event['url'] = $hesk_settings['hesk_url'] . '/' . $hesk_settings['admin_dir'] . '/admin_ticket.php?track=' . $event['trackingId']; $event['categoryId'] = $row['category']; $event['categoryName'] = $row['category_name']; + $event['categoryColor'] = 'green'; $events[] = $event; } diff --git a/js/calendar/mods-for-hesk-calendar.js b/js/calendar/mods-for-hesk-calendar.js index 47978f0b..ee643529 100644 --- a/js/calendar/mods-for-hesk-calendar.js +++ b/js/calendar/mods-for-hesk-calendar.js @@ -203,7 +203,8 @@ $(document).ready(function() { comments: $('#create-form textarea[name="comments"]').val(), categoryId: $('#create-form select[name="category"]').val(), action: 'create', - type: 'CALENDAR' + type: 'CALENDAR', + categoryColor: $('#create-form select[name="category"] :selected').attr('data-color') }; $.ajax({ @@ -303,10 +304,33 @@ function buildEvent(id, dbObject) { location: dbObject.location, type: dbObject.type, categoryId: dbObject.categoryId, - categoryName: dbObject.categoryName + categoryName: dbObject.categoryName, + color: dbObject.categoryColor, + textColor: calculateTextColor(dbObject.categoryColor) }; } +function calculateTextColor(color) { + var red = 0; + var green = 0; + var blue = 0; + + // If hex value is 3 characters, take each value and concatenate it to itself + if (color.length === 3) { + red = parseInt(color.substring(1, 2), 16); + green = parseInt(color.substring(2, 3), 16); + blue = parseInt(color.substring(3, 4), 16); + } else { + red = parseInt(color.substring(1, 3), 16); + green = parseInt(color.substring(3, 5), 16); + blue = parseInt(color.substring(5, 7), 16); + } + + var gray = red * 0.299 + green * 0.587 + blue * 0.114; + + return gray > 186 ? 'black' : 'white'; +} + function displayCreateModal(date, viewName) { var $form = $('#create-form'); $form.find('input[name="name"]').val('').end()