Badge
This commit is contained in:
23
dist/tryton-sao.css
vendored
23
dist/tryton-sao.css
vendored
@@ -11771,6 +11771,29 @@ html[theme="default"] .ag-grid-tree-grouping-panel input[type="checkbox"]:after
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ag-grid-tree-host .ag-grid-badge-cell {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ag-grid-tree-host .ag-grid-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
max-width: 100%;
|
||||||
|
min-height: 22px;
|
||||||
|
padding: 2px 10px;
|
||||||
|
border-radius: 999px;
|
||||||
|
background: #6c757d;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.35;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
.ag-grid-tree-host .ag-grid-right-aligned-header .ag-header-cell-label {
|
.ag-grid-tree-host .ag-grid-right-aligned-header .ag-header-cell-label {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|||||||
126
dist/tryton-sao.js
vendored
126
dist/tryton-sao.js
vendored
@@ -24814,6 +24814,10 @@ function eval_pyson(value){
|
|||||||
if (!params.data.__record) {
|
if (!params.data.__record) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
if (this._is_badge_column(column)) {
|
||||||
|
return this._render_badge_cell(
|
||||||
|
column, params.data.__record);
|
||||||
|
}
|
||||||
return this._render_cell(column, params.data.__record);
|
return this._render_cell(column, params.data.__record);
|
||||||
},
|
},
|
||||||
tooltipValueGetter: params => {
|
tooltipValueGetter: params => {
|
||||||
@@ -26024,6 +26028,127 @@ function eval_pyson(value){
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
_is_badge_column: function(column) {
|
||||||
|
if (!column || !column.attributes) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return column.attributes.widget == 'badge' ||
|
||||||
|
column.attributes.badge ||
|
||||||
|
column.attributes.badge_colors ||
|
||||||
|
column.attributes.badge_color_field ||
|
||||||
|
column.attributes.badge_background_field ||
|
||||||
|
column.attributes.badge_foreground_field ||
|
||||||
|
column.attributes.color_field ||
|
||||||
|
column.attributes.background_color_field;
|
||||||
|
},
|
||||||
|
_parse_badge_colors: function(colors) {
|
||||||
|
var parsed = {};
|
||||||
|
(colors || '').split(',').forEach(item => {
|
||||||
|
var pair = item.split(':');
|
||||||
|
if (pair.length < 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var key = pair.shift().trim();
|
||||||
|
var value = pair.join(':').trim();
|
||||||
|
if (key && value) {
|
||||||
|
parsed[key] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return parsed;
|
||||||
|
},
|
||||||
|
_get_record_field_value: function(record, name) {
|
||||||
|
if (!record || !name) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (record.is_loaded && !record.is_loaded(name)) {
|
||||||
|
record.load(name, true, false);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return record.field_get(name);
|
||||||
|
} catch (error) {
|
||||||
|
if (record._values &&
|
||||||
|
Object.prototype.hasOwnProperty.call(
|
||||||
|
record._values, name)) {
|
||||||
|
return record._values[name];
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
_normalize_badge_color: function(color) {
|
||||||
|
color = color === null || color === undefined ? '' :
|
||||||
|
String(color).trim();
|
||||||
|
var palette = {
|
||||||
|
red: '#dc3545',
|
||||||
|
danger: '#dc3545',
|
||||||
|
orange: '#f59f00',
|
||||||
|
warning: '#f59f00',
|
||||||
|
yellow: '#f1c40f',
|
||||||
|
green: '#28a745',
|
||||||
|
success: '#28a745',
|
||||||
|
blue: '#17a2b8',
|
||||||
|
info: '#17a2b8',
|
||||||
|
gray: '#6c757d',
|
||||||
|
grey: '#6c757d',
|
||||||
|
muted: '#6c757d',
|
||||||
|
};
|
||||||
|
return palette[color.toLowerCase()] || color;
|
||||||
|
},
|
||||||
|
_get_badge_colors: function(column, record, text) {
|
||||||
|
var attributes = column.attributes || {};
|
||||||
|
var color = '';
|
||||||
|
var text_color = '';
|
||||||
|
var mapped = this._parse_badge_colors(attributes.badge_colors);
|
||||||
|
if (Object.prototype.hasOwnProperty.call(mapped, text)) {
|
||||||
|
color = mapped[text];
|
||||||
|
}
|
||||||
|
if (!color && attributes.badge_color_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.badge_color_field);
|
||||||
|
}
|
||||||
|
if (!color && attributes.badge_background_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.badge_background_field);
|
||||||
|
}
|
||||||
|
if (!color && attributes.background_color_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.background_color_field);
|
||||||
|
}
|
||||||
|
if (!color && attributes.color_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.color_field);
|
||||||
|
}
|
||||||
|
if (attributes.badge_foreground_field) {
|
||||||
|
text_color = this._get_record_field_value(
|
||||||
|
record, attributes.badge_foreground_field);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
background: this._normalize_badge_color(color),
|
||||||
|
color: this._normalize_badge_color(text_color),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
_render_badge_cell: function(column, record) {
|
||||||
|
var text = this._get_column_text_value(column, record);
|
||||||
|
var cell = jQuery('<div/>', {
|
||||||
|
'class': 'cell ag-grid-badge-cell',
|
||||||
|
});
|
||||||
|
if (!text) {
|
||||||
|
return cell[0];
|
||||||
|
}
|
||||||
|
var badge = jQuery('<span/>', {
|
||||||
|
'class': 'ag-grid-badge',
|
||||||
|
'text': text,
|
||||||
|
});
|
||||||
|
var colors = this._get_badge_colors(column, record, text);
|
||||||
|
if (colors.background) {
|
||||||
|
badge.css('background-color', colors.background);
|
||||||
|
}
|
||||||
|
if (colors.color) {
|
||||||
|
badge.css('color', colors.color);
|
||||||
|
}
|
||||||
|
cell.append(badge);
|
||||||
|
return cell[0];
|
||||||
|
},
|
||||||
_render_cell: function(column, record) {
|
_render_cell: function(column, record) {
|
||||||
var cell = jQuery('<div/>', {
|
var cell = jQuery('<div/>', {
|
||||||
'class': 'cell',
|
'class': 'cell',
|
||||||
@@ -30044,6 +30169,7 @@ function eval_pyson(value){
|
|||||||
|
|
||||||
Sao.View.TreeXMLViewParser.WIDGETS = {
|
Sao.View.TreeXMLViewParser.WIDGETS = {
|
||||||
'binary': Sao.View.Tree.BinaryColumn,
|
'binary': Sao.View.Tree.BinaryColumn,
|
||||||
|
'badge': Sao.View.Tree.CharColumn,
|
||||||
'boolean': Sao.View.Tree.BooleanColumn,
|
'boolean': Sao.View.Tree.BooleanColumn,
|
||||||
'callto': Sao.View.Tree.URLColumn,
|
'callto': Sao.View.Tree.URLColumn,
|
||||||
'char': Sao.View.Tree.CharColumn,
|
'char': Sao.View.Tree.CharColumn,
|
||||||
|
|||||||
@@ -11771,6 +11771,29 @@ html[theme="default"] .ag-grid-tree-grouping-panel input[type="checkbox"]:after
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ag-grid-tree-host .ag-grid-badge-cell {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ag-grid-tree-host .ag-grid-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
max-width: 100%;
|
||||||
|
min-height: 22px;
|
||||||
|
padding: 2px 10px;
|
||||||
|
border-radius: 999px;
|
||||||
|
background: #6c757d;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.35;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
.ag-grid-tree-host .ag-grid-right-aligned-header .ag-header-cell-label {
|
.ag-grid-tree-host .ag-grid-right-aligned-header .ag-header-cell-label {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|||||||
126
tryton-sao.js
126
tryton-sao.js
@@ -24814,6 +24814,10 @@ function eval_pyson(value){
|
|||||||
if (!params.data.__record) {
|
if (!params.data.__record) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
if (this._is_badge_column(column)) {
|
||||||
|
return this._render_badge_cell(
|
||||||
|
column, params.data.__record);
|
||||||
|
}
|
||||||
return this._render_cell(column, params.data.__record);
|
return this._render_cell(column, params.data.__record);
|
||||||
},
|
},
|
||||||
tooltipValueGetter: params => {
|
tooltipValueGetter: params => {
|
||||||
@@ -26024,6 +26028,127 @@ function eval_pyson(value){
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
_is_badge_column: function(column) {
|
||||||
|
if (!column || !column.attributes) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return column.attributes.widget == 'badge' ||
|
||||||
|
column.attributes.badge ||
|
||||||
|
column.attributes.badge_colors ||
|
||||||
|
column.attributes.badge_color_field ||
|
||||||
|
column.attributes.badge_background_field ||
|
||||||
|
column.attributes.badge_foreground_field ||
|
||||||
|
column.attributes.color_field ||
|
||||||
|
column.attributes.background_color_field;
|
||||||
|
},
|
||||||
|
_parse_badge_colors: function(colors) {
|
||||||
|
var parsed = {};
|
||||||
|
(colors || '').split(',').forEach(item => {
|
||||||
|
var pair = item.split(':');
|
||||||
|
if (pair.length < 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var key = pair.shift().trim();
|
||||||
|
var value = pair.join(':').trim();
|
||||||
|
if (key && value) {
|
||||||
|
parsed[key] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return parsed;
|
||||||
|
},
|
||||||
|
_get_record_field_value: function(record, name) {
|
||||||
|
if (!record || !name) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (record.is_loaded && !record.is_loaded(name)) {
|
||||||
|
record.load(name, true, false);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return record.field_get(name);
|
||||||
|
} catch (error) {
|
||||||
|
if (record._values &&
|
||||||
|
Object.prototype.hasOwnProperty.call(
|
||||||
|
record._values, name)) {
|
||||||
|
return record._values[name];
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
_normalize_badge_color: function(color) {
|
||||||
|
color = color === null || color === undefined ? '' :
|
||||||
|
String(color).trim();
|
||||||
|
var palette = {
|
||||||
|
red: '#dc3545',
|
||||||
|
danger: '#dc3545',
|
||||||
|
orange: '#f59f00',
|
||||||
|
warning: '#f59f00',
|
||||||
|
yellow: '#f1c40f',
|
||||||
|
green: '#28a745',
|
||||||
|
success: '#28a745',
|
||||||
|
blue: '#17a2b8',
|
||||||
|
info: '#17a2b8',
|
||||||
|
gray: '#6c757d',
|
||||||
|
grey: '#6c757d',
|
||||||
|
muted: '#6c757d',
|
||||||
|
};
|
||||||
|
return palette[color.toLowerCase()] || color;
|
||||||
|
},
|
||||||
|
_get_badge_colors: function(column, record, text) {
|
||||||
|
var attributes = column.attributes || {};
|
||||||
|
var color = '';
|
||||||
|
var text_color = '';
|
||||||
|
var mapped = this._parse_badge_colors(attributes.badge_colors);
|
||||||
|
if (Object.prototype.hasOwnProperty.call(mapped, text)) {
|
||||||
|
color = mapped[text];
|
||||||
|
}
|
||||||
|
if (!color && attributes.badge_color_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.badge_color_field);
|
||||||
|
}
|
||||||
|
if (!color && attributes.badge_background_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.badge_background_field);
|
||||||
|
}
|
||||||
|
if (!color && attributes.background_color_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.background_color_field);
|
||||||
|
}
|
||||||
|
if (!color && attributes.color_field) {
|
||||||
|
color = this._get_record_field_value(
|
||||||
|
record, attributes.color_field);
|
||||||
|
}
|
||||||
|
if (attributes.badge_foreground_field) {
|
||||||
|
text_color = this._get_record_field_value(
|
||||||
|
record, attributes.badge_foreground_field);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
background: this._normalize_badge_color(color),
|
||||||
|
color: this._normalize_badge_color(text_color),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
_render_badge_cell: function(column, record) {
|
||||||
|
var text = this._get_column_text_value(column, record);
|
||||||
|
var cell = jQuery('<div/>', {
|
||||||
|
'class': 'cell ag-grid-badge-cell',
|
||||||
|
});
|
||||||
|
if (!text) {
|
||||||
|
return cell[0];
|
||||||
|
}
|
||||||
|
var badge = jQuery('<span/>', {
|
||||||
|
'class': 'ag-grid-badge',
|
||||||
|
'text': text,
|
||||||
|
});
|
||||||
|
var colors = this._get_badge_colors(column, record, text);
|
||||||
|
if (colors.background) {
|
||||||
|
badge.css('background-color', colors.background);
|
||||||
|
}
|
||||||
|
if (colors.color) {
|
||||||
|
badge.css('color', colors.color);
|
||||||
|
}
|
||||||
|
cell.append(badge);
|
||||||
|
return cell[0];
|
||||||
|
},
|
||||||
_render_cell: function(column, record) {
|
_render_cell: function(column, record) {
|
||||||
var cell = jQuery('<div/>', {
|
var cell = jQuery('<div/>', {
|
||||||
'class': 'cell',
|
'class': 'cell',
|
||||||
@@ -30044,6 +30169,7 @@ function eval_pyson(value){
|
|||||||
|
|
||||||
Sao.View.TreeXMLViewParser.WIDGETS = {
|
Sao.View.TreeXMLViewParser.WIDGETS = {
|
||||||
'binary': Sao.View.Tree.BinaryColumn,
|
'binary': Sao.View.Tree.BinaryColumn,
|
||||||
|
'badge': Sao.View.Tree.CharColumn,
|
||||||
'boolean': Sao.View.Tree.BooleanColumn,
|
'boolean': Sao.View.Tree.BooleanColumn,
|
||||||
'callto': Sao.View.Tree.URLColumn,
|
'callto': Sao.View.Tree.URLColumn,
|
||||||
'char': Sao.View.Tree.CharColumn,
|
'char': Sao.View.Tree.CharColumn,
|
||||||
|
|||||||
Reference in New Issue
Block a user