MuK IT GmbH
6 years ago
4 changed files with 120 additions and 1 deletions
-
2muk_web_utils/__manifest__.py
-
5muk_web_utils/doc/changelog.rst
-
113muk_web_utils/static/src/js/fields/path.js
-
1muk_web_utils/template/assets.xml
@ -0,0 +1,113 @@ |
|||
/********************************************************************************** |
|||
* |
|||
* Copyright (C) 2017 MuK IT GmbH |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Affero General Public License as |
|||
* published by the Free Software Foundation, either version 3 of the |
|||
* License, or (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Affero General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Affero General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
* |
|||
**********************************************************************************/ |
|||
|
|||
odoo.define('muk_web_utils.path', function (require) { |
|||
"use strict"; |
|||
|
|||
var core = require('web.core'); |
|||
var fields = require('web.basic_fields'); |
|||
var registry = require('web.field_registry'); |
|||
var colorpicker = require('web.colorpicker'); |
|||
|
|||
var AbstractField = require('web.AbstractField'); |
|||
|
|||
var _t = core._t; |
|||
var QWeb = core.qweb; |
|||
|
|||
var FieldPathNames = fields.FieldChar.extend({ |
|||
init: function(parent, name, record) { |
|||
this._super.apply(this, arguments); |
|||
this.max_width = this.nodeOptions.width || 500; |
|||
}, |
|||
_renderReadonly: function() { |
|||
var show_value = this._formatValue(this.value); |
|||
var text_witdh = $.fn.textWidth(show_value); |
|||
if(text_witdh >= this.max_width) { |
|||
var ratio_start = (1 - (this.max_width / text_witdh)) * show_value.length; |
|||
show_value = ".." + show_value.substring(ratio_start, show_value.length); |
|||
} |
|||
this.$el.text(show_value); |
|||
}, |
|||
}); |
|||
|
|||
var FieldPathJson = fields.FieldText.extend({ |
|||
events: _.extend({}, fields.FieldText.prototype.events, { |
|||
'click a' : '_onNodeClicked', |
|||
}), |
|||
init: function(parent, name, record) { |
|||
this._super.apply(this, arguments); |
|||
this.max_width = this.nodeOptions.width || 500; |
|||
this.seperator = this.nodeOptions.seperator || "/"; |
|||
this.prefix = this.nodeOptions.prefix || false; |
|||
this.suffix = this.nodeOptions.suffix || false; |
|||
}, |
|||
_renderReadonly: function() { |
|||
this.$el.empty(); |
|||
this._renderPath(); |
|||
}, |
|||
_renderPath: function() { |
|||
var text_width_measure = ""; |
|||
var path = JSON.parse(this.value || "[]"); |
|||
$.each(_.clone(path).reverse(), function(index, element) { |
|||
text_width_measure += element.name + "/"; |
|||
if($.fn.textWidth(text_width_measure) >= this.max_width) { |
|||
this.$el.prepend($('<span/>').text("..")); |
|||
} else { |
|||
if (index == 0) { |
|||
if(this.suffix) { |
|||
this.$el.prepend($('<span/>').text(this.seperator)); |
|||
} |
|||
this.$el.prepend($('<span/>').text(element.name)); |
|||
this.$el.prepend($('<span/>').text(this.seperator)); |
|||
} else { |
|||
this.$el.prepend($('<a/>', { |
|||
'class': 'oe_form_uri', |
|||
'data-model': element.model, |
|||
'data-id': element.id, |
|||
'href': "javascript:void(0);", |
|||
'text': element.name, |
|||
})); |
|||
if (index != path.length - 1) { |
|||
this.$el.prepend($('<span/>').text(this.seperator)); |
|||
} else if (this.prefix) { |
|||
this.$el.prepend($('<span/>').text(this.seperator)); |
|||
} |
|||
} |
|||
} |
|||
return ($.fn.textWidth(text_width_measure) < this.max_width); |
|||
}.bind(this)); |
|||
}, |
|||
_onNodeClicked : function(event) { |
|||
this.do_action({ |
|||
type: 'ir.actions.act_window', |
|||
res_model: $(event.currentTarget).data('model'), |
|||
res_id: $(event.currentTarget).data('id'), |
|||
views: [[false, 'form']], |
|||
target: 'current', |
|||
context: {}, |
|||
}); |
|||
} |
|||
}); |
|||
|
|||
registry.add('path_names', FieldPathNames); |
|||
registry.add('path_json', FieldPathJson); |
|||
|
|||
return FieldColor; |
|||
|
|||
}); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue