Ver código fonte

Calendar colors enhancement (#3013)

- Can be set using a field (Event)
- Can be set using custom logic (see sales_order_calendar.js)
version-14
Faris Ansari 8 anos atrás
committed by Rushabh Mehta
pai
commit
ebeea52c3c
4 arquivos alterados com 89 adições e 53 exclusões
  1. +68
    -8
      frappe/desk/doctype/event/event.json
  2. +1
    -1
      frappe/desk/doctype/event/event.py
  3. +1
    -0
      frappe/desk/doctype/event/event_calendar.js
  4. +19
    -44
      frappe/public/js/frappe/views/calendar/calendar.js

+ 68
- 8
frappe/desk/doctype/event/event.json Ver arquivo

@@ -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",


+ 1
- 1
frappe/desk/doctype/event/event.py Ver arquivo

@@ -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 ((


+ 1
- 0
frappe/desk/doctype/event/event_calendar.js Ver arquivo

@@ -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",


+ 19
- 44
frappe/public/js/frappe/views/calendar/calendar.js Ver arquivo

@@ -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;


Carregando…
Cancelar
Salvar