- 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_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", | |||
@@ -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 (( | |||
@@ -6,6 +6,7 @@ frappe.views.calendar["Event"] = { | |||
"allDay": "all_day", | |||
"title": "subject", | |||
"status": "event_type", | |||
"color": "color" | |||
}, | |||
style_map: { | |||
"Public": "success", | |||
@@ -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; | |||