local grafana = import 'github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet';
local singlestat = grafana.singlestat;
local prometheus = grafana.prometheus;

{
  new(title, query)::
    singlestat.new(
      title,
      datasource='$datasource',
      span=3,
      valueName='current',
      valueMaps=[
        {
          op: '=',
          text: '0',
          value: 'null',
        },
      ],
    )
    .addTarget(
      prometheus.target(
        query
      )
    ) + {
      withTextNullValue(text):: self {
        valueMaps: [
          {
            op: '=',
            text: text,
            value: 'null',
          },
        ],
      },
      withSpanSize(size):: self {
        span: size,
      },
      withPostfix(postfix):: self {
        postfix: postfix,
      },
      withSparkline():: self {
        sparkline: {
          show: true,
          lineColor: 'rgb(31, 120, 193)',
          fillColor: 'rgba(31, 118, 189, 0.18)',
        },
      },
    },
}
