ryan %!s(int64=6) %!d(string=hai) anos
pai
achega
c38000d445

+ 1 - 1
packages/grafana-ui/src/components/Gauge/Gauge.tsx

@@ -112,7 +112,7 @@ export class Gauge extends PureComponent<Props> {
       },
     };
 
-    const plotSeries = { data: [[0, value]] };
+    const plotSeries = { data: [[0, value.numeric]] };
 
     try {
       $.plot(this.canvasElement, [plotSeries], options);

+ 4 - 15
public/app/features/explore/Logs.tsx

@@ -64,7 +64,7 @@ interface Props {
 interface State {
   deferLogs: boolean;
   renderAll: boolean;
-  showLabels: boolean | null; // Tristate: null means auto
+  showLabels: boolean;
   showLocalTime: boolean;
   showUtc: boolean;
 }
@@ -76,7 +76,7 @@ export default class Logs extends PureComponent<Props, State> {
   state = {
     deferLogs: true,
     renderAll: false,
-    showLabels: null,
+    showLabels: false,
     showLocalTime: true,
     showUtc: false,
   };
@@ -166,12 +166,11 @@ export default class Logs extends PureComponent<Props, State> {
       return null;
     }
 
-    const { deferLogs, renderAll, showLocalTime, showUtc } = this.state;
-    let { showLabels } = this.state;
+    const { deferLogs, renderAll, showLabels, showLocalTime, showUtc } = this.state;
     const { dedupStrategy } = this.props;
     const hasData = data && data.rows && data.rows.length > 0;
-    const showDuplicates = dedupStrategy !== LogsDedupStrategy.none;
     const dedupCount = dedupedData.rows.reduce((sum, row) => sum + row.duplicates, 0);
+    const showDuplicates = dedupStrategy !== LogsDedupStrategy.none && dedupCount > 0;
     const meta = [...data.meta];
 
     if (dedupStrategy !== LogsDedupStrategy.none) {
@@ -186,16 +185,6 @@ export default class Logs extends PureComponent<Props, State> {
     const processedRows = dedupedData.rows;
     const firstRows = processedRows.slice(0, PREVIEW_LIMIT);
     const lastRows = processedRows.slice(PREVIEW_LIMIT);
-
-    // Check for labels
-    if (showLabels === null) {
-      if (hasData) {
-        showLabels = data.rows.some(row => _.size(row.uniqueLabels) > 0);
-      } else {
-        showLabels = true;
-      }
-    }
-
     const scanText = scanRange ? `Scanning ${rangeUtil.describeTimeRange(scanRange)}` : 'Scanning...';
 
     // React profiler becomes unusable if we pass all rows to all rows and their labels, using getter instead

+ 1 - 1
public/app/features/templating/custom_variable.ts

@@ -40,7 +40,7 @@ export class CustomVariable implements Variable {
   updateOptions() {
     // extract options in comma separated string (use backslash to escape wanted commas)
     this.options = _.map(this.query.match(/(?:\\,|[^,])+/g), text => {
-      text = text.replace('\\,', ',');
+      text = text.replace(/\\,/g, ',');
       return { text: text.trim(), value: text.trim() };
     });
 

+ 0 - 9
public/app/plugins/panel/gauge/GaugePanel.tsx

@@ -2,7 +2,6 @@
 import React from 'react';
 
 // Services & Utils
-import { PanelProps } from '@grafana/ui';
 import { config } from 'app/core/config';
 
 // Components
@@ -14,14 +13,6 @@ import { DisplayValue } from '@grafana/ui/src/utils/displayValue';
 import { SingleStatPanel } from './SingleStatPanel';
 
 export class GaugePanel extends SingleStatPanel<GaugeOptions> {
-  constructor(props: PanelProps<GaugeOptions>) {
-    super(props);
-
-    // if (props.options.valueOptions) {
-    //   console.warn('TODO!! how do we best migration options?');
-    // }
-  }
-
   renderStat(value: DisplayValue, width: number, height: number) {
     const { options } = this.props;
     const { display } = options;

+ 1 - 1
public/sass/components/_panel_logs.scss

@@ -173,7 +173,7 @@ $column-horizontal-spacing: 10px;
 
 .logs-row__duplicates {
   text-align: right;
-  width: 4.5em;
+  width: 4em;
 }
 
 .logs-row__field-highlight {

+ 1 - 0
public/sass/components/_switch.scss

@@ -94,6 +94,7 @@ input:checked + .gf-form-switch__slider::before {
     opacity: 0;
     width: 0;
     height: 0;
+    appearance: none;
   }
 
   &--transparent {