Calendar colors enhancement (#3013)
- Can be set using a field (Event) - Can be set using custom logic (see sales_order_calendar.js)
This commit is contained in:
parent
e3c0a8d1ee
commit
ebeea52c3c
4 changed files with 89 additions and 53 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue