mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge branch 'master' of github.com:grafana/grafana
This commit is contained in:
@@ -177,7 +177,8 @@ export class DashboardGrid extends React.Component<DashboardGridProps, any> {
|
||||
for (const panel of this.dashboard.panels) {
|
||||
const panelClasses = classNames({ panel: true, 'panel--fullscreen': panel.fullscreen });
|
||||
panelElements.push(
|
||||
<div key={panel.id.toString()} className={panelClasses}>
|
||||
/** panel-id is set for html bookmarks */
|
||||
<div key={panel.id.toString()} className={panelClasses} id={`panel-${panel.id.toString()}`}>
|
||||
<DashboardPanel panel={panel} getPanelContainer={this.props.getPanelContainer} />
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -44,15 +44,15 @@ export default class PostgresQuery {
|
||||
}
|
||||
|
||||
quoteIdentifier(value) {
|
||||
return '"' + value.replace(/"/g, '""') + '"';
|
||||
return '"' + String(value).replace(/"/g, '""') + '"';
|
||||
}
|
||||
|
||||
quoteLiteral(value) {
|
||||
return "'" + value.replace(/'/g, "''") + "'";
|
||||
return "'" + String(value).replace(/'/g, "''") + "'";
|
||||
}
|
||||
|
||||
escapeLiteral(value) {
|
||||
return value.replace(/'/g, "''");
|
||||
return String(value).replace(/'/g, "''");
|
||||
}
|
||||
|
||||
hasTimeGroup() {
|
||||
@@ -187,7 +187,8 @@ export default class PostgresQuery {
|
||||
case 'increase':
|
||||
curr = query;
|
||||
prev = 'lag(' + curr + ') OVER (' + over + ')';
|
||||
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev + ' ELSE ' + curr + ' END)';
|
||||
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev;
|
||||
query += ' WHEN ' + prev + ' IS NULL THEN NULL ELSE ' + curr + ' END)';
|
||||
break;
|
||||
case 'rate':
|
||||
let timeColumn = this.target.timeColumn;
|
||||
@@ -197,7 +198,8 @@ export default class PostgresQuery {
|
||||
|
||||
curr = query;
|
||||
prev = 'lag(' + curr + ') OVER (' + over + ')';
|
||||
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev + ' ELSE ' + curr + ' END)';
|
||||
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev;
|
||||
query += ' WHEN ' + prev + ' IS NULL THEN NULL ELSE ' + curr + ' END)';
|
||||
query += '/extract(epoch from ' + timeColumn + ' - lag(' + timeColumn + ') OVER (' + over + '))';
|
||||
break;
|
||||
default:
|
||||
@@ -279,6 +281,9 @@ export default class PostgresQuery {
|
||||
query += this.buildGroupClause();
|
||||
|
||||
query += '\nORDER BY 1';
|
||||
if (this.hasMetricColumn()) {
|
||||
query += ',2';
|
||||
}
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
@@ -72,7 +72,9 @@ describe('PostgresQuery', () => {
|
||||
{ type: 'window', params: ['increase'] },
|
||||
];
|
||||
expect(query.buildValueColumn(column)).toBe(
|
||||
'(CASE WHEN v >= lag(v) OVER (ORDER BY time) THEN v - lag(v) OVER (ORDER BY time) ELSE v END) AS "a"'
|
||||
'(CASE WHEN v >= lag(v) OVER (ORDER BY time) ' +
|
||||
'THEN v - lag(v) OVER (ORDER BY time) ' +
|
||||
'WHEN lag(v) OVER (ORDER BY time) IS NULL THEN NULL ELSE v END) AS "a"'
|
||||
);
|
||||
});
|
||||
|
||||
@@ -96,7 +98,9 @@ describe('PostgresQuery', () => {
|
||||
{ type: 'window', params: ['increase'] },
|
||||
];
|
||||
expect(query.buildValueColumn(column)).toBe(
|
||||
'(CASE WHEN v >= lag(v) OVER (PARTITION BY host ORDER BY time) THEN v - lag(v) OVER (PARTITION BY host ORDER BY time) ELSE v END) AS "a"'
|
||||
'(CASE WHEN v >= lag(v) OVER (PARTITION BY host ORDER BY time) ' +
|
||||
'THEN v - lag(v) OVER (PARTITION BY host ORDER BY time) ' +
|
||||
'WHEN lag(v) OVER (PARTITION BY host ORDER BY time) IS NULL THEN NULL ELSE v END) AS "a"'
|
||||
);
|
||||
column = [
|
||||
{ type: 'column', params: ['v'] },
|
||||
@@ -106,7 +110,8 @@ describe('PostgresQuery', () => {
|
||||
];
|
||||
expect(query.buildValueColumn(column)).toBe(
|
||||
'(CASE WHEN max(v) >= lag(max(v)) OVER (PARTITION BY host ORDER BY time) ' +
|
||||
'THEN max(v) - lag(max(v)) OVER (PARTITION BY host ORDER BY time) ELSE max(v) END) AS "a"'
|
||||
'THEN max(v) - lag(max(v)) OVER (PARTITION BY host ORDER BY time) ' +
|
||||
'WHEN lag(max(v)) OVER (PARTITION BY host ORDER BY time) IS NULL THEN NULL ELSE max(v) END) AS "a"'
|
||||
);
|
||||
});
|
||||
|
||||
@@ -149,7 +154,7 @@ describe('PostgresQuery', () => {
|
||||
expect(query.buildQuery()).toBe(result);
|
||||
|
||||
query.target.metricColumn = 'm';
|
||||
result = 'SELECT\n t AS "time",\n m AS metric,\n value\nFROM table\nORDER BY 1';
|
||||
result = 'SELECT\n t AS "time",\n m AS metric,\n value\nFROM table\nORDER BY 1,2';
|
||||
expect(query.buildQuery()).toBe(result);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user