- Can be set using a field (Event) - Can be set using custom logic (see sales_order_calendar.js)version-14
@@ -1,5 +1,6 @@ | |||||
{ | { | ||||
"allow_copy": 0, | "allow_copy": 0, | ||||
"allow_guest_to_view": 0, | |||||
"allow_import": 1, | "allow_import": 1, | ||||
"allow_rename": 0, | "allow_rename": 0, | ||||
"autoname": "EV.#####", | "autoname": "EV.#####", | ||||
@@ -129,6 +130,34 @@ | |||||
"set_only_once": 0, | "set_only_once": 0, | ||||
"unique": 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, | "allow_on_submit": 0, | ||||
"bold": 0, | "bold": 0, | ||||
@@ -272,8 +301,39 @@ | |||||
"bold": 0, | "bold": 0, | ||||
"collapsible": 0, | "collapsible": 0, | ||||
"columns": 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, | "hidden": 0, | ||||
"ignore_user_permissions": 0, | "ignore_user_permissions": 0, | ||||
"ignore_xss_filter": 0, | "ignore_xss_filter": 0, | ||||
@@ -281,10 +341,10 @@ | |||||
"in_global_search": 0, | "in_global_search": 0, | ||||
"in_list_view": 0, | "in_list_view": 0, | ||||
"in_standard_filter": 0, | "in_standard_filter": 0, | ||||
"label": "Repeat this Event", | |||||
"length": 0, | "length": 0, | ||||
"no_copy": 0, | "no_copy": 0, | ||||
"permlevel": 0, | "permlevel": 0, | ||||
"precision": "", | |||||
"print_hide": 0, | "print_hide": 0, | ||||
"print_hide_if_no_value": 0, | "print_hide_if_no_value": 0, | ||||
"read_only": 0, | "read_only": 0, | ||||
@@ -301,7 +361,7 @@ | |||||
"collapsible": 0, | "collapsible": 0, | ||||
"columns": 0, | "columns": 0, | ||||
"depends_on": "repeat_this_event", | "depends_on": "repeat_this_event", | ||||
"fieldname": "section_break_11", | |||||
"fieldname": "section_break_13", | |||||
"fieldtype": "Section Break", | "fieldtype": "Section Break", | ||||
"hidden": 0, | "hidden": 0, | ||||
"ignore_user_permissions": 0, | "ignore_user_permissions": 0, | ||||
@@ -388,7 +448,7 @@ | |||||
"bold": 0, | "bold": 0, | ||||
"collapsible": 0, | "collapsible": 0, | ||||
"columns": 0, | "columns": 0, | ||||
"fieldname": "column_break_11", | |||||
"fieldname": "column_break_16", | |||||
"fieldtype": "Column Break", | "fieldtype": "Column Break", | ||||
"hidden": 0, | "hidden": 0, | ||||
"ignore_user_permissions": 0, | "ignore_user_permissions": 0, | ||||
@@ -795,19 +855,19 @@ | |||||
"unique": 0 | "unique": 0 | ||||
} | } | ||||
], | ], | ||||
"has_web_view": 0, | |||||
"hide_heading": 0, | "hide_heading": 0, | ||||
"hide_toolbar": 0, | "hide_toolbar": 0, | ||||
"icon": "fa fa-calendar", | "icon": "fa fa-calendar", | ||||
"idx": 1, | "idx": 1, | ||||
"image_view": 0, | "image_view": 0, | ||||
"in_create": 1, | "in_create": 1, | ||||
"in_dialog": 0, | |||||
"is_submittable": 0, | "is_submittable": 0, | ||||
"issingle": 0, | "issingle": 0, | ||||
"istable": 0, | "istable": 0, | ||||
"max_attachments": 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", | "module": "Desk", | ||||
"name": "Event", | "name": "Event", | ||||
"owner": "Administrator", | "owner": "Administrator", | ||||
@@ -65,7 +65,7 @@ def get_events(start, end, user=None, for_reminder=False): | |||||
if not user: | if not user: | ||||
user = frappe.session.user | user = frappe.session.user | ||||
roles = frappe.get_roles(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, | starts_on, ends_on, owner, all_day, event_type, repeat_this_event, repeat_on,repeat_till, | ||||
monday, tuesday, wednesday, thursday, friday, saturday, sunday | monday, tuesday, wednesday, thursday, friday, saturday, sunday | ||||
from tabEvent where (( | from tabEvent where (( | ||||
@@ -6,6 +6,7 @@ frappe.views.calendar["Event"] = { | |||||
"allDay": "all_day", | "allDay": "all_day", | ||||
"title": "subject", | "title": "subject", | ||||
"status": "event_type", | "status": "event_type", | ||||
"color": "color" | |||||
}, | }, | ||||
style_map: { | style_map: { | ||||
"Public": "success", | "Public": "success", | ||||
@@ -96,31 +96,10 @@ frappe.views.Calendar = Class.extend({ | |||||
"end": "end", | "end": "end", | ||||
"allDay": "all_day", | "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) { | get_system_datetime: function(date) { | ||||
date._offset = moment.user_utc_offset; | date._offset = moment.user_utc_offset; | ||||
@@ -146,7 +125,7 @@ frappe.views.Calendar = Class.extend({ | |||||
args: me.get_args(start, end), | args: me.get_args(start, end), | ||||
callback: function(r) { | callback: function(r) { | ||||
var events = r.message; | var events = r.message; | ||||
me.prepare_events(events); | |||||
events = me.prepare_events(events); | |||||
callback(events); | callback(events); | ||||
} | } | ||||
}) | }) | ||||
@@ -168,7 +147,6 @@ frappe.views.Calendar = Class.extend({ | |||||
if (view.name==="month" && (endDate - startDate)===86400000) { | if (view.name==="month" && (endDate - startDate)===86400000) { | ||||
// detect single day click in month view | // detect single day click in month view | ||||
return; | return; | ||||
} | } | ||||
var event = frappe.model.get_new_doc(me.doctype); | var event = frappe.model.get_new_doc(me.doctype); | ||||
@@ -221,7 +199,8 @@ frappe.views.Calendar = Class.extend({ | |||||
}, | }, | ||||
prepare_events: function(events) { | prepare_events: function(events) { | ||||
var me = this; | var me = this; | ||||
$.each(events || [], function(i, d) { | |||||
return (events || []).map(d => { | |||||
d.id = d.name; | d.id = d.name; | ||||
d.editable = frappe.model.can_write(d.doctype || me.doctype); | 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); | me.fix_end_date_for_event_render(d); | ||||
let color; | |||||
if(me.get_css_class) { | 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 { | } 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) { | update_event: function(event, revertFunc) { | ||||
var me = this; | var me = this; | ||||