fix(table): remove html for htmlencoding option

This commit is contained in:
bergquist 2016-02-07 20:17:41 +01:00
parent 5775c0a341
commit 7d89cf228c
4 changed files with 19 additions and 31 deletions

View File

@ -103,11 +103,6 @@
<metric-segment-model property="style.dateFormat" options="editor.dateFormats" on-change="editor.render()" custom="true"></metric-segment-model> <metric-segment-model property="style.dateFormat" options="editor.dateFormats" on-change="editor.render()" custom="true"></metric-segment-model>
</li> </li>
</ul> </ul>
<ul class="tight-form-list" ng-if="style.type === 'string'">
<li class="tight-form-item">
<editor-checkbox text="escape html" model="style.escapeHtml" change="editor.render()"></editor-checkbox>
</li>
</ul>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
<div class="tight-form" ng-if="style.type === 'number'"> <div class="tight-form" ng-if="style.type === 'number'">
@ -163,7 +158,6 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -112,7 +112,6 @@ export class TablePanelEditorCtrl {
pattern: '/.*/', pattern: '/.*/',
dateFormat: 'YYYY-MM-DD HH:mm:ss', dateFormat: 'YYYY-MM-DD HH:mm:ss',
thresholds: [], thresholds: [],
escapeHtml: true
}; };
this.panel.styles.push(angular.copy(columnStyleDefaults)); this.panel.styles.push(angular.copy(columnStyleDefaults));

View File

@ -24,16 +24,16 @@ export class TableRenderer {
return _.first(style.colors); return _.first(style.colors);
} }
defaultCellFormater(value) { defaultCellFormater(v) {
if (value === null || value === void 0 || value === undefined) { if (v === null || v === void 0 || v === undefined) {
return ''; return '';
} }
if (_.isArray(value)) { if (_.isArray(v)) {
value = value.join(',&nbsp;'); v = v.join(',&nbsp;');
} }
return value; return v;
} }
createColumnFormater(style) { createColumnFormater(style) {
@ -96,7 +96,7 @@ export class TableRenderer {
renderCell(columnIndex, value, addWidthHack = false) { renderCell(columnIndex, value, addWidthHack = false) {
value = this.formatColumnValue(columnIndex, value); value = this.formatColumnValue(columnIndex, value);
value = encodeHtml(value); value = this.encodeHtml(value);
var style = ''; var style = '';
if (this.colorState.cell) { if (this.colorState.cell) {
style = ' style="background-color:' + this.colorState.cell + ';color: white"'; style = ' style="background-color:' + this.colorState.cell + ';color: white"';
@ -141,16 +141,16 @@ export class TableRenderer {
return html; return html;
} }
}
function encodeHtml(unsafe) { encodeHtml(unsafe) {
return unsafe.replace(/[&<>"']/g, function(m) { return unsafe.replace(/[&<>"']/g, function(m) {
return ({ return ({
'&': '&amp;', '&': '&amp;',
'<': '&lt;', '<': '&lt;',
'>': '&gt;', '>': '&gt;',
'"': '&quot;', '"': '&quot;',
'\'': '&#039;' '\'': '&#039;'
})[m]; })[m];
}); });
}
} }

View File

@ -11,8 +11,7 @@ describe('when rendering table', () => {
{text: 'Value'}, {text: 'Value'},
{text: 'Colored'}, {text: 'Colored'},
{text: 'Undefined'}, {text: 'Undefined'},
{text: 'String'}, {text: 'String'}
{text: 'UnescapedString' }
]; ];
var panel = { var panel = {
@ -41,10 +40,6 @@ describe('when rendering table', () => {
{ {
pattern: 'String', pattern: 'String',
type: 'string', type: 'string',
},
{
pattern: 'UnescapedString',
type: 'string'
} }
] ]
}; };
@ -92,7 +87,7 @@ describe('when rendering table', () => {
}); });
it('undefined formater should return escaped html', () => { it('undefined formater should return escaped html', () => {
var html = renderer.renderCell(4, "&breaking <br /> the <br /> row"); var html = renderer.renderCell(3, "&breaking <br /> the <br /> row");
expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>'); expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
}); });