Files
odoo_source/addons/project/static/src/js/project.js
T
Kirti Choudhary 36a2bfb9cf [IMP] *: add and improve kanban views for mobile
This commit improves readability in kanban views.
The default view in mobile is kanban and many of them
needed to be improved.

task-33438
closes 17853
2017-09-05 13:21:58 +02:00

96 lines
3.6 KiB
JavaScript

odoo.define('project.update_kanban', function (require) {
'use strict';
var core = require('web.core');
var Dialog = require('web.Dialog');
var KanbanRecord = require('web.KanbanRecord');
var QWeb = core.qweb;
var _t = core._t;
KanbanRecord.include({
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
/**
* @override
* @private
*/
_openRecord: function () {
if (this.modelName === 'project.project' && this.$(".o_project_kanban_boxes a").length) {
this.$('.o_project_kanban_boxes a').first().click();
} else {
this._super.apply(this, arguments);
}
},
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------
/**
* @override
* @private
*/
_onKanbanActionClicked: function (ev) {
var self = this;
if (this.modelName === 'project.task' && $(ev.currentTarget).data('type') === 'set_cover') {
ev.preventDefault();
var domain = [['res_model', '=', 'project.task'], ['res_id', '=', this.id], ['mimetype', 'ilike', 'image']];
this._rpc({
model: 'ir.attachment',
method: 'search_read',
domain: domain,
fields: ['id', 'name'],
})
.then(open_cover_images_dialog);
} else {
this._super.apply(this, arguments, ev);
}
function open_cover_images_dialog(attachment_ids) {
var coverID = self.record.displayed_image_id && self.record.displayed_image_id.raw_value[0];
var $content = $(QWeb.render("project.SetCoverModal", {
cover_id: coverID,
attachment_ids: attachment_ids,
}));
var $imgs = $content.find('img');
var dialog = new Dialog(self, {
title: _t("Set a Cover Image"),
buttons: [{text: _t("Select"), classes: 'btn-primary', close: true, disabled: !coverID, click: function () {
var $img = $imgs.filter('.o_selected');
var data = {
id: $img.data('id'),
display_name: $img.data('name')
};
self._updateRecord({displayed_image_id: data});
}}, {text: _t("Remove Cover Image"), close: true, click: function () {
self._updateRecord({displayed_image_id: false});
}}, {text: _t("Discard"), close: true}],
$content: $content,
});
dialog.opened().then(function () {
var $selectBtn = dialog.$footer.find('.btn-primary');
$content.on('click', 'img', function (ev) {
$imgs.not(ev.currentTarget).removeClass('o_selected');
$selectBtn.prop('disabled', !$(ev.currentTarget).toggleClass('o_selected').hasClass('o_selected'));
});
$content.on('dblclick', 'img', function (ev) {
var $img = $(ev.currentTarget);
var data = {
id: $img.data('id'),
display_name: $img.data('name')
};
self._updateRecord({displayed_image_id: data});
dialog.close();
});
});
dialog.open();
}
},
});
});