File

src/app/shared/components/sparkline/sparkline.component.ts

Implements

OnInit OnChanges

Metadata

selector cd-sparkline
styleUrls ./sparkline.component.scss
templateUrl ./sparkline.component.html

Index

Properties
Methods
Inputs

Constructor

constructor(dimlessBinaryPipe: DimlessBinaryPipe)
Parameters :
Name Type Optional
dimlessBinaryPipe DimlessBinaryPipe No

Inputs

data
Type : any
isBinary
Type : boolean
style
Default value : { height: '30px', width: '100px' }

Methods

ngOnChanges
ngOnChanges(changes: SimpleChanges)
Parameters :
Name Type Optional
changes SimpleChanges No
Returns : void
ngOnInit
ngOnInit()
Returns : void

Properties

chartCanvasRef
Type : ElementRef
Decorators :
@ViewChild('sparkCanvas')
chartTooltipRef
Type : ElementRef
Decorators :
@ViewChild('sparkTooltip')
Public colors
Type : Array<any>
Default value : [ { backgroundColor: 'rgba(40,140,234,0.2)', borderColor: 'rgba(40,140,234,1)', pointBackgroundColor: 'rgba(40,140,234,1)', pointBorderColor: '#fff', pointHoverBackgroundColor: '#fff', pointHoverBorderColor: 'rgba(40,140,234,0.8)' } ]
Public datasets
Type : Array<any>
Default value : [ { data: [] } ]
Public labels
Type : Array<any>
Default value : []
options
Type : object
Default value : { animation: { duration: 0 }, responsive: true, maintainAspectRatio: false, legend: { display: false }, elements: { line: { borderWidth: 1 } }, tooltips: { enabled: false, mode: 'index', intersect: false, custom: undefined, callbacks: { label: (tooltipItem) => { if (this.isBinary) { return this.dimlessBinaryPipe.transform(tooltipItem.yLabel); } else { return tooltipItem.yLabel; } } } }, scales: { yAxes: [ { display: false } ], xAxes: [ { display: false } ] } }
import { Component, ElementRef, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';
import { Input } from '@angular/core';

import { ChartTooltip } from '../../models/chart-tooltip';
import { DimlessBinaryPipe } from '../../pipes/dimless-binary.pipe';

@Component({
  selector: 'cd-sparkline',
  templateUrl: './sparkline.component.html',
  styleUrls: ['./sparkline.component.scss']
})
export class SparklineComponent implements OnInit, OnChanges {
  @ViewChild('sparkCanvas')
  chartCanvasRef: ElementRef;
  @ViewChild('sparkTooltip')
  chartTooltipRef: ElementRef;

  @Input()
  data: any;
  @Input()
  style = {
    height: '30px',
    width: '100px'
  };
  @Input()
  isBinary: boolean;

  public colors: Array<any> = [
    {
      backgroundColor: 'rgba(40,140,234,0.2)',
      borderColor: 'rgba(40,140,234,1)',
      pointBackgroundColor: 'rgba(40,140,234,1)',
      pointBorderColor: '#fff',
      pointHoverBackgroundColor: '#fff',
      pointHoverBorderColor: 'rgba(40,140,234,0.8)'
    }
  ];

  options = {
    animation: {
      duration: 0
    },
    responsive: true,
    maintainAspectRatio: false,
    legend: {
      display: false
    },
    elements: {
      line: {
        borderWidth: 1
      }
    },
    tooltips: {
      enabled: false,
      mode: 'index',
      intersect: false,
      custom: undefined,
      callbacks: {
        label: (tooltipItem) => {
          if (this.isBinary) {
            return this.dimlessBinaryPipe.transform(tooltipItem.yLabel);
          } else {
            return tooltipItem.yLabel;
          }
        }
      }
    },
    scales: {
      yAxes: [
        {
          display: false
        }
      ],
      xAxes: [
        {
          display: false
        }
      ]
    }
  };

  public datasets: Array<any> = [
    {
      data: []
    }
  ];

  public labels: Array<any> = [];

  constructor(private dimlessBinaryPipe: DimlessBinaryPipe) {}

  ngOnInit() {
    const getStyleTop = (tooltip) => {
      return tooltip.caretY - tooltip.height - tooltip.yPadding - 5 + 'px';
    };

    const getStyleLeft = (tooltip, positionX) => {
      return positionX + tooltip.caretX + 'px';
    };

    const chartTooltip = new ChartTooltip(
      this.chartCanvasRef,
      this.chartTooltipRef,
      getStyleLeft,
      getStyleTop
    );

    chartTooltip.customColors = {
      backgroundColor: this.colors[0].pointBackgroundColor,
      borderColor: this.colors[0].pointBorderColor
    };

    this.options.tooltips.custom = (tooltip) => {
      chartTooltip.customTooltips(tooltip);
    };
  }

  ngOnChanges(changes: SimpleChanges) {
    this.datasets[0].data = changes['data'].currentValue;
    this.labels = [...Array(changes['data'].currentValue.length)];
  }
}
<div class="chart-container"
     [ngStyle]="style">
  <canvas baseChart #sparkCanvas
          [labels]="labels"
          [datasets]="datasets"
          [options]="options"
          [colors]="colors"
          [chartType]="'line'">
  </canvas>
  <div class="chartjs-tooltip" #sparkTooltip>
    <table></table>
  </div>
</div>

./sparkline.component.scss

@import '../../../../styles/chart-tooltip.scss';

.chart-container {
  position: static !important;
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""