summaryrefslogtreecommitdiff
path: root/addons/calendar/static/src
diff options
context:
space:
mode:
authorPariket Trivedi <ptr@openerp.com>2014-06-20 15:42:26 +0530
committerRichard Mathot <rim@openerp.com>2014-06-23 15:03:29 +0200
commitf0765121c6d62be945b3bc577be5d3ff1fcb4daa (patch)
tree5d0ea2e3240918a03ff8c80691ad874ac1b26d52 /addons/calendar/static/src
parent5c0804eaef81c237043844382d6456656070fb9f (diff)
[IMP] calendar: favorite contacts list
Improved calendar's favorite meeting list and added a input box to directly insert the partner in favorite list and 'X' to remove the partner's name from the favorite meeting list in calendar view.
Diffstat (limited to 'addons/calendar/static/src')
-rw-r--r--addons/calendar/static/src/css/calendar.css10
-rw-r--r--addons/calendar/static/src/js/base_calendar.js129
-rw-r--r--addons/calendar/static/src/xml/base_calendar.xml9
3 files changed, 147 insertions, 1 deletions
diff --git a/addons/calendar/static/src/css/calendar.css b/addons/calendar/static/src/css/calendar.css
index a22fa2344ad..7e43b37a317 100644
--- a/addons/calendar/static/src/css/calendar.css
+++ b/addons/calendar/static/src/css/calendar.css
@@ -72,3 +72,13 @@ span.no-wrap {
.cal_tab {
margin: 20 0 20 0;
}
+.openerp .oe_remove_follower {
+ cursor: pointer;
+ position: absolute;
+ right: 0px;
+ line-height: 20px;
+ color: #D3D3D3;
+}
+.openerp .oe_add_input_box > div > input{
+ width: 200px;
+} \ No newline at end of file
diff --git a/addons/calendar/static/src/js/base_calendar.js b/addons/calendar/static/src/js/base_calendar.js
index 37669840818..a4459157f2d 100644
--- a/addons/calendar/static/src/js/base_calendar.js
+++ b/addons/calendar/static/src/js/base_calendar.js
@@ -1,9 +1,136 @@
openerp.calendar = function(instance) {
- var _t = instance.web._t;
+ var _t = instance.web._t,
+ _lt = instance.web._lt;
var QWeb = instance.web.qweb;
instance.calendar = {};
+function reload_favorite_list(result) {
+ var self = current = result;
+ if (result.view) {
+ self = result.view;
+ }
+ new instance.web.Model("res.users").query(["partner_id"]).filter([["id", "=",self.dataset.context.uid]]).first()
+ .done(
+ function(result) {
+ var sidebar_items = {};
+ var filter_value = result.partner_id[0];
+ var filter_item = {
+ value: filter_value,
+ label: result.partner_id[1] + _lt(" [Me]"),
+ color: self.get_color(filter_value),
+ avatar_model: self.avatar_model,
+ is_checked: true,
+ is_remove: false,
+ };
+
+ sidebar_items[0] = filter_item ;
+ filter_item = {
+ value: -1,
+ label: _lt("Everybody's calendars"),
+ color: self.get_color(-1),
+ avatar_model: self.avatar_model,
+ is_checked: false
+ };
+ sidebar_items[-1] = filter_item ;
+ //Get my coworkers/contacts
+ new instance.web.Model("calendar.contacts").query(["partner_id"]).filter([["user_id", "=",self.dataset.context.uid]]).all().then(function(result) {
+ _.each(result, function(item) {
+ filter_value = item.partner_id[0];
+ filter_item = {
+ value: filter_value,
+ label: item.partner_id[1],
+ color: self.get_color(filter_value),
+ avatar_model: self.avatar_model,
+ is_checked: true
+ };
+ sidebar_items[filter_value] = filter_item ;
+ });
+ self.all_filters = sidebar_items;
+ self.now_filter_ids = $.map(self.all_filters, function(o) { return o.value; });
+
+ self.sidebar.filter.events_loaded(self.all_filters);
+ self.sidebar.filter.set_filters();
+ self.sidebar.filter.set_distroy_filters();
+ self.sidebar.filter.addInputBox();
+ self.sidebar.filter.destroy_filter();
+ }).done(function () {
+ self.$calendar.fullCalendar('refetchEvents');
+ if (current.ir_model_m2o) {
+ current.ir_model_m2o.set_value(false);
+ }
+ });
+ });
+ }
+ instance.web_calendar.CalendarView.include({
+ extraSideBar: function(){
+ this._super();
+ if (this.useContacts){
+ new reload_favorite_list(this);
+ }
+ }
+ });
+
+ instance.web_calendar.SidebarFilter.include({
+ set_distroy_filters: function() {
+ var self = this;
+ // When mouse-enter the favorite list it will show the 'X' for removing partner from the favorite list.
+ if (self.view.useContacts){
+ self.$('.oe_calendar_all_responsibles').on('mouseenter mouseleave', function(e) {
+ self.$('.oe_remove_follower').toggleClass('hidden', e.type == 'mouseleave');
+ });
+ }
+ },
+ addInputBox: function() {
+ var self = this;
+ if (this.dfm)
+ return;
+ this.dfm = new instance.web.form.DefaultFieldManager(self);
+ this.dfm.extend_field_desc({
+ partner_id: {
+ relation: "res.partner",
+ },
+ });
+ this.ir_model_m2o = new instance.web.form.FieldMany2One(self.dfm, {
+ attrs: {
+ class: 'oe_add_input_box',
+ name: "partner_id",
+ type: "many2one",
+ options: '{"no_open": True}',
+ placeholder: _t("Select Favorite Calendar"),
+ },
+ });
+ this.ir_model_m2o.insertAfter($('div.oe_calendar_filter'));
+ this.ir_model_m2o.on('change:value', self, function() {
+ self.add_filter();
+ });
+ },
+ add_filter: function() {
+ var self = this;
+ new instance.web.Model("res.users").query(["partner_id"]).filter([["id", "=",this.view.dataset.context.uid]]).first().done(function(result){
+ $.map(self.ir_model_m2o.display_value, function(element,index) {
+ if (result.partner_id[0] != index){
+ self.ds_message = new instance.web.DataSetSearch(self, 'calendar.contacts');
+ self.ds_message.call("create", [{'partner_id': index}]);
+ }
+ });
+ });
+ new reload_favorite_list(this);
+ },
+ destroy_filter: function(e) {
+ var self= this;
+ this.$(".oe_remove_follower").on('click', function(e) {
+ self.ds_message = new instance.web.DataSetSearch(self, 'calendar.contacts');
+ if (! confirm(_t("Do you really want to delete this filter from favorite?"))) { return false; }
+ var id = $(e.currentTarget)[0].dataset.id;
+ self.ds_message.call('search', [[['partner_id', '=', parseInt(id)]]]).then(function(record){
+ return self.ds_message.unlink(record);
+ }).done(function() {
+ new reload_favorite_list(self);
+ });
+ });
+ },
+ });
instance.web.WebClient = instance.web.WebClient.extend({
diff --git a/addons/calendar/static/src/xml/base_calendar.xml b/addons/calendar/static/src/xml/base_calendar.xml
index 20da2cebf48..0939d65b609 100644
--- a/addons/calendar/static/src/xml/base_calendar.xml
+++ b/addons/calendar/static/src/xml/base_calendar.xml
@@ -73,4 +73,13 @@
</div>
</div>
</t>
+
+ <t t-extend="CalendarView.sidebar.responsible">
+ <t t-jquery="span#color_filter" t-operation="after">
+ <t t-if="(filters_value.value != -1) &amp;&amp; (filters_value.is_remove != false)">
+ <span class="oe_remove_follower oe_e hidden" title="Remove this favorite from the list" t-att-data-id="filters_value.value">X</span>
+ </t>
+ </t>
+ </t>
+
</template>