diff --git a/frappe/desk/doctype/event/event.json b/frappe/desk/doctype/event/event.json index 497cdc31d2..2646378d1b 100644 --- a/frappe/desk/doctype/event/event.json +++ b/frappe/desk/doctype/event/event.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_guest_to_view": 0, "allow_import": 1, "allow_rename": 0, "autoname": "EV.#####", @@ -129,6 +130,34 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "repeat_this_event", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Repeat this Event", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -272,8 +301,39 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "repeat_this_event", - "fieldtype": "Check", + "default": "blue", + "fieldname": "color", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Color", + "length": 0, + "no_copy": 0, + "options": "red\ngreen\nblue\nyellow\nskyblue\norange", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "column_break_11", + "fieldtype": "Column Break", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -281,10 +341,10 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Repeat this Event", "length": 0, "no_copy": 0, "permlevel": 0, + "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -301,7 +361,7 @@ "collapsible": 0, "columns": 0, "depends_on": "repeat_this_event", - "fieldname": "section_break_11", + "fieldname": "section_break_13", "fieldtype": "Section Break", "hidden": 0, "ignore_user_permissions": 0, @@ -388,7 +448,7 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "column_break_11", + "fieldname": "column_break_16", "fieldtype": "Column Break", "hidden": 0, "ignore_user_permissions": 0, @@ -795,19 +855,19 @@ "unique": 0 } ], + "has_web_view": 0, "hide_heading": 0, "hide_toolbar": 0, "icon": "fa fa-calendar", "idx": 1, "image_view": 0, "in_create": 1, - "in_dialog": 0, "is_submittable": 0, "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-02-22 16:25:55.420314", - "modified_by": "Administrator", + "modified": "2017-04-05 11:16:04.281342", + "modified_by": "faris@erpnext.com", "module": "Desk", "name": "Event", "owner": "Administrator", diff --git a/frappe/desk/doctype/event/event.py b/frappe/desk/doctype/event/event.py index ade5763d78..33453f86cc 100644 --- a/frappe/desk/doctype/event/event.py +++ b/frappe/desk/doctype/event/event.py @@ -65,7 +65,7 @@ def get_events(start, end, user=None, for_reminder=False): if not user: user = frappe.session.user roles = frappe.get_roles(user) - events = frappe.db.sql("""select name, subject, description, + events = frappe.db.sql("""select name, subject, description, color, starts_on, ends_on, owner, all_day, event_type, repeat_this_event, repeat_on,repeat_till, monday, tuesday, wednesday, thursday, friday, saturday, sunday from tabEvent where (( diff --git a/frappe/desk/doctype/event/event_calendar.js b/frappe/desk/doctype/event/event_calendar.js index c99e9f9334..df474a0258 100644 --- a/frappe/desk/doctype/event/event_calendar.js +++ b/frappe/desk/doctype/event/event_calendar.js @@ -6,6 +6,7 @@ frappe.views.calendar["Event"] = { "allDay": "all_day", "title": "subject", "status": "event_type", + "color": "color" }, style_map: { "Public": "success", diff --git a/frappe/public/js/frappe/views/calendar/calendar.js b/frappe/public/js/frappe/views/calendar/calendar.js index d8df66ceea..f17e48b2e2 100644 --- a/frappe/public/js/frappe/views/calendar/calendar.js +++ b/frappe/public/js/frappe/views/calendar/calendar.js @@ -96,31 +96,10 @@ frappe.views.Calendar = Class.extend({ "end": "end", "allDay": "all_day", }, - styles: { - "standard": { - "color": "#F0F4F7" - }, - "important": { - "color": "#FFDCDC" - }, - "danger": { - "color": "#FFDCDC" - }, - "warning": { - "color": "#FFE6BF", - }, - "success": { - "color": "#E4FFC1", - }, - "info": { - "color": "#E8DDFF" - }, - "inverse": { - "color": "#D9F6FF" - }, - "": { - "color": "#F0F4F7" - } + color_map: { + "danger": "red", + "success": "green", + "warning": "orange" }, get_system_datetime: function(date) { date._offset = moment.user_utc_offset; @@ -146,7 +125,7 @@ frappe.views.Calendar = Class.extend({ args: me.get_args(start, end), callback: function(r) { var events = r.message; - me.prepare_events(events); + events = me.prepare_events(events); callback(events); } }) @@ -168,7 +147,6 @@ frappe.views.Calendar = Class.extend({ if (view.name==="month" && (endDate - startDate)===86400000) { // detect single day click in month view return; - } var event = frappe.model.get_new_doc(me.doctype); @@ -221,7 +199,8 @@ frappe.views.Calendar = Class.extend({ }, prepare_events: function(events) { var me = this; - $.each(events || [], function(i, d) { + + return (events || []).map(d => { d.id = d.name; d.editable = frappe.model.can_write(d.doctype || me.doctype); @@ -243,25 +222,21 @@ frappe.views.Calendar = Class.extend({ me.fix_end_date_for_event_render(d); + let color; if(me.get_css_class) { - $.extend(d, me.styles[me.get_css_class(d)] || {}); - } else if(me.style_map) { - $.extend(d, me.styles[me.style_map[d.status]] || {}); + color = me.color_map[me.get_css_class(d)]; } else { - $.extend(d, me.styles[frappe.utils.guess_style(d.status, "standard")]); + // color field can be set in {doctype}_calendar.js + // see event_calendar.js + color = d.color; } - d["textColor"] = "#36414C"; - }) - - var palette_colors = ['red', 'green', 'blue', 'yellow', 'skyblue', 'orange']; - var index = 0; - - if(events) { - events = events.map(function(event) { - event.className = "fc-bg-" + palette_colors[index]; - index = (index + 1) % palette_colors.length; - }) - } + // if invalid, fallback to blue color + if(!Object.values(me.color_map).includes(color)) { + color = "blue"; + } + d.className = "fc-bg-" + color; + return d; + }); }, update_event: function(event, revertFunc) { var me = this;