[IMP] show suggested threads
bzr revid: mat@openerp.com-20130418103229-xkyu6qyzdola03hn
This commit is contained in:
parent
5c082c36a7
commit
06159a516a
|
@ -131,7 +131,7 @@ class gamification_goal_plan(osv.Model):
|
|||
help='Group of users whose members will automatically be added to the users'),
|
||||
|
||||
'proposed_user_ids': fields.many2many('res.users', 'proposed_user_ids',
|
||||
string="Propose to users"),
|
||||
string="Suggest to users"),
|
||||
|
||||
'planline_ids': fields.one2many('gamification.goal.planline', 'plan_id',
|
||||
string='Planline',
|
||||
|
|
|
@ -30,7 +30,7 @@ class res_users_gamification_group(osv.Model):
|
|||
all_goals_info = []
|
||||
plan_obj = self.pool.get('gamification.goal.plan')
|
||||
|
||||
plan_ids = plan_obj.search(cr, uid, [('user_ids', 'in', uid)], context=context)
|
||||
plan_ids = plan_obj.search(cr, uid, [('user_ids', 'in', uid), ('state', '=', 'inprogress')], context=context)
|
||||
for plan in plan_obj.browse(cr, uid, plan_ids, context=context):
|
||||
# serialize goals info to be able to use it in javascript
|
||||
serialized_goals_info = {
|
||||
|
@ -103,6 +103,20 @@ class res_users_gamification_group(osv.Model):
|
|||
all_goals_info.append(serialized_goals_info)
|
||||
return all_goals_info
|
||||
|
||||
def get_challenge_suggestions(self, cr, uid, context=None):
|
||||
"""Return the list of goal plans suggested to the user"""
|
||||
if context is None: context = {}
|
||||
plan_info = []
|
||||
plan_ids = self.pool.get('gamification.goal.plan').search(cr, uid, [('proposed_user_ids', 'in', uid), ('state', '=', 'inprogress')], context=context)
|
||||
for plan in self.pool.get('gamification.goal.plan').browse(cr, uid, plan_ids, context=context):
|
||||
values = {
|
||||
'id': plan.id,
|
||||
'name': plan.name,
|
||||
'description': plan.description,
|
||||
}
|
||||
plan_info.append(values)
|
||||
return plan_info
|
||||
|
||||
|
||||
class res_groups_gamification_group(osv.Model):
|
||||
""" Update of res.groups class
|
||||
|
|
|
@ -58,30 +58,23 @@
|
|||
}
|
||||
|
||||
/* Mail Sidebar */
|
||||
|
||||
.openerp .oe_mail_wall .oe_mail_wall_aside {
|
||||
margin-left: 20px;
|
||||
margin-top: 20px;
|
||||
margin-top: 15px;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 300px;
|
||||
width: 260px;
|
||||
}
|
||||
.openerp .oe_mail_wall_aside .oe_gamification_goal {
|
||||
.openerp .oe_mail_wall .oe_mail_wall_aside {
|
||||
position: relative;
|
||||
vertical-align: top;
|
||||
background: #EDEDF6;
|
||||
height: auto;
|
||||
padding: 15px;
|
||||
border: solid 1px rgba(0,0,0,0.03);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/*.openerp .oe_gamification_goal .oe_goal_reached:before {
|
||||
content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QMSCREbCamR5gAAAXhJREFUOMuV0z9rlEEQBvDf7htFFIwQBCvRQuFAJSJooY29VrH0E1hcCqNign8SYzAxRfTA0nyAg3wBK1GCKSwTK8G7j6AgiHl3LbLmwOQu8Wl2mZ15Zp6ZnWC/GMcrjBvBdTRkX4P/QdNZrGKkWN7sn+CuE5IvsqOyKFnRMhb3DJwsZ2VV5ZgoCt5qGdsyD8ITzGJSW3BVkAUdlZsu++0T/SU8xxQeuyj7LKEWJKcs6Px16y9harv0NVEQBZWmBR33e26Dm/hMW3BLLUvW/XJBlM31XIZMlNsi7pWa5jGjIbiBXBLd8UL+N0e0WIInvMNp8+Wltqx2SBJk06Z98HRnkUHTOZWPomEVojOiUZV26foP2XkHdD3aSRBxXDIsSRKyddmyGklQa5vRtbl7myprvrnisOBa0TuEgyBhziXwfneCrTG+9kDSkgQJSbaJ2ix42H9QYXvTakdEG4KThfanoKHS9XIvgt7KjspW8F2wIbhtSRr0Vf4AD6Nod0TaN4kAAAAASUVORK5CYII=);
|
||||
margin-left:-20px;
|
||||
.openerp .oe_mail_wall_aside > div {
|
||||
background: #EDEDF6;
|
||||
padding: 5px 0 0 15px;
|
||||
}
|
||||
.openerp .oe_gamification_goal .oe_goal_failed:before {
|
||||
content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QMVECkXmaDBcAAAAUxJREFUKM+N0jFrVEEUhuFnV1KICS7ExcLCSgiCYJXCxt5C8B+ohYVgYeUfMJBCUIydkCpRLG3EThSxU0ypxMZKYQkSzd7cO3dmLJxNNhckGTgMfHPe+c6ZOZ7Sb7gauOIIq+V2wwVjFjNtYhS4dgh0L1EnvhtzKbGdyQW+8R/ofmJc8r64Ra/hYuJHEbda7nSgB1PQRsVpc2j+xfnEZjncjtz9zLHIw0SdyZH3uwx/wmDq5oaFyKeJc2QzsVOgVzXDveRBp5fAucjbTJ5E5EWYhtDvPkJiC1878rdEdUAZHHQ7FVkrpdaJ35lQXJ8EZveST5a9Zr7lZYFS5HHF2cjztF/ys11OgDP0auYjbwrURFZGzMAvjkfW077z6z/MGjGMfCxQFXnU7fsdvcjq5FsSH1RcnkAty4eM3EqiyTTW6AeuB5aOOOTLgZt/AfLdvLh74DfrAAAAAElFTkSuQmCC);
|
||||
margin-left:-20px;
|
||||
}*/
|
||||
.openerp .oe_mail_wall_aside .oe_gamification_goal .oe_goal_reached,
|
||||
.openerp .oe_mail_wall_aside .oe_gamification_goal .oe_goal_failed {
|
||||
text-decoration: line-through;
|
||||
|
|
|
@ -9,6 +9,7 @@ openerp.gamification = function(instance) {
|
|||
this.deferred = $.Deferred();
|
||||
this.res_user = new instance.web.DataSetSearch(this, 'res.users');
|
||||
this.goals_info = {};
|
||||
this.challenge_suggestions = {};
|
||||
},
|
||||
events: {
|
||||
'click a.oe_update_goal': function(event) {
|
||||
|
@ -45,6 +46,7 @@ openerp.gamification = function(instance) {
|
|||
var self = this;
|
||||
this._super.apply(this, arguments);
|
||||
self.get_goal_todo_info();
|
||||
self.get_challenge_suggestions();
|
||||
},
|
||||
render_template: function(target,template) {
|
||||
var self = this;
|
||||
|
@ -65,6 +67,22 @@ openerp.gamification = function(instance) {
|
|||
self.render_money_fields(self.goals_info.info[0].currency);
|
||||
self.render_progress_bars();
|
||||
self.render_piechars();
|
||||
} else {
|
||||
self.$el.filter(".oe_gamification_goal").hide();
|
||||
}
|
||||
});
|
||||
},
|
||||
get_challenge_suggestions: function() {
|
||||
var self = this;
|
||||
var challenge_suggestions = this.res_user.call('get_challenge_suggestions', {}).then(function(res) {
|
||||
self.challenge_suggestions['info'] = res;
|
||||
console.log(res);
|
||||
});
|
||||
$.when(challenge_suggestions).done(function() {
|
||||
if(self.challenge_suggestions.info.length > 0){
|
||||
self.render_template_replace(self.$el.filter(".oe_gamification_suggestion"),'gamification.challenge_suggestions');
|
||||
} else {
|
||||
self.$el.filter(".oe_gamification_suggestion").hide();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -128,6 +146,7 @@ openerp.gamification = function(instance) {
|
|||
var rendering = this._super();
|
||||
var self = this;
|
||||
|
||||
// add gauge in goal kanban views
|
||||
$.when(rendering).done(function() {
|
||||
if (self.view.dataset.model === 'gamification.goal' && self.$el.find('.oe_goal_gauge').length == 1) {
|
||||
var unique_id = _.uniqueId("goal_gauge_");
|
||||
|
@ -140,16 +159,6 @@ openerp.gamification = function(instance) {
|
|||
max: self.record.target_goal.raw_value,
|
||||
relativeGaugeSize: true,
|
||||
humanFriendly: true,
|
||||
// add space between value and symbol
|
||||
// textRenderer: function(value) {
|
||||
// symbol = self.record.type_suffix.raw_value;
|
||||
// humannbr = humanFriendlyNumber(value, 0)
|
||||
// if ((humannbr + symbol).length > 6) {
|
||||
// return humannbr;
|
||||
// } else {
|
||||
// return humannbr + " " + symbol;
|
||||
// }
|
||||
// },
|
||||
label: self.record.type_suffix.raw_value,
|
||||
levelColors: [
|
||||
"#ff0000",
|
||||
|
@ -160,6 +169,7 @@ openerp.gamification = function(instance) {
|
|||
}
|
||||
});
|
||||
},
|
||||
// open related goals when clicking on challenge kanban view
|
||||
on_card_clicked: function() {
|
||||
if (this.view.dataset.model === 'gamification.goal.plan') {
|
||||
this.$('.oe_kanban_project_list a').first().click();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<templates>
|
||||
<t t-name="gamification.user_wall_sidebar" class="oe_gamification_user_wall_sidebar">
|
||||
<div class="oe_gamification_suggestion"><em>No challenge suggestions</em></div>
|
||||
<div class="oe_gamification_goal"><em>Your goal list is empty</em></div>
|
||||
</t>
|
||||
<t t-name="gamification.goal_list_to_do">
|
||||
|
@ -63,4 +64,17 @@
|
|||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="gamification.challenge_suggestions">
|
||||
<h3>Suggested challenges</h3>
|
||||
<div t-foreach="widget.challenge_suggestions.info" t-as="challenge" class="oe_challenge">
|
||||
<p>
|
||||
<strong><t t-esc="challenge.name"/></strong> <a class="oe_challenge_reply">reply</a>
|
||||
<t t-if="challenge.description.value">
|
||||
<br/>
|
||||
<em><t t-esc="challenge.description.value"/></em>
|
||||
</t>
|
||||
</p>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
|
|
Loading…
Reference in New Issue