File

src/app/manage-learn/shared/components/bar-chart/bar-chart.component.ts

Implements

OnInit

Metadata

Index

Properties
Methods
Inputs

Constructor

constructor()

Inputs

data
Type : any
questionNumber
Type : any

Methods

ngOnInit
ngOnInit()
Returns : void

Properties

Public barChartData
Type : ChartDataSets[]
Public barChartLabels
Type : Label[]
Public barChartLegend
Default value : false
Public barChartOptions
Type : ChartOptions
Default value : { responsive: true, maintainAspectRatio: true, scales: { xAxes: [ { ticks: { min: 0, // Edit the value according to what you need, max: 100, }, scaleLabel: { display: true, labelString: 'Response in %', }, }, ], yAxes: [ { ticks: { callback: function (value: any, index, values) { // // return createSubstrArr(value, 5) || value; let tempString :any= ''; let result:any = []; if (value.length >45) { value = value.substring(0, 45) + '...'; } let strArr = value.split(' '); for (let x = 0; x < strArr.length; x++) { tempString += ' ' + strArr[x]; if ((x % 5 === 0 && x !== 0) || x == strArr.length - 1) { tempString = tempString.slice(1); result.push(tempString); tempString = ''; } } return result || value; }, fontSize: 10, }, display: true, scaleLabel: { display: true, labelString: 'Response', }, }, ], }, }
Public barChartPlugins
Public barChartType
Type : ChartType
Default value : 'horizontalBar'
Public chartColors
Type : Array<any>
import { Component, Input, OnInit } from '@angular/core';
import { ChartOptions, ChartType, ChartDataSets } from 'chart.js';
import { Label } from 'ng2-charts';

@Component({
  selector: 'bar-chart',
  templateUrl: './bar-chart.component.html',
  styleUrls: ['./bar-chart.component.scss'],
})
export class BarChartComponent implements OnInit {
  @Input() data;
  @Input() questionNumber;
 

  public barChartOptions: ChartOptions = {
    responsive: true,
    maintainAspectRatio: true,
    scales: {
      xAxes: [
        {
          ticks: {
            min: 0, // Edit the value according to what you need,
            max: 100,
          },
          scaleLabel: {
            display: true,
            labelString: 'Response in %',
          },
        },
      ],
      yAxes: [
        {
          ticks: {
            callback: function (value: any, index, values) {
              // // return createSubstrArr(value, 5) || value;
              let tempString :any= '';
              let result:any = [];
                  if (value.length >45) {
                    value = value.substring(0, 45) + '...';
                 }
                  let strArr = value.split(' ');
              for (let x = 0; x < strArr.length; x++) {
                tempString += ' ' + strArr[x];
                if ((x % 5 === 0 && x !== 0) || x == strArr.length - 1) {
                  tempString = tempString.slice(1);
                  result.push(tempString);
                  tempString = '';
                }
              }
              return result || value;
            },
            fontSize: 10,
          },
          display: true,

          scaleLabel: {
            display: true,
            labelString: 'Response',
          },
        },
      ],
    },
  };
  public barChartLabels: Label[];
  // = ['Option A', 'Option B'];
  public barChartType: ChartType = 'horizontalBar';
  public barChartLegend = false;
  public barChartPlugins;
  public chartColors: Array<any>;

  //   = [
  //   {
  //     // all colors in order
  //     backgroundColor: ['#D35400', '#D35400', '#D35400'],
  //   },
  // ];

  public barChartData: ChartDataSets[];
  // =[{ data: [65, 59], label: 'Series A' }];

  constructor() {}

  ngOnInit() {
    this.barChartLabels = this.data.chart.data.labels;
    this.barChartData = [{ data: this.data.chart.data.datasets[0].data, label: 'Series A' }];
    this.chartColors = [{ backgroundColor: this.data.chart.data.datasets[0].backgroundColor }];
    this.barChartPlugins = [
      {
        beforeUpdate: function (c) {
          var chartHeight = c.chart.height;
          var size = (chartHeight * 5) / 100;
          c.scales['y-axis-0'].options.ticks.minor.fontSize = size;
        },
      },
    ];

  }
}
function createSubstrArr(str, words): any {
  let strArr = str.split(' ');
  let tempString = '';
  let result = [];
  for (let x = 0; x < strArr.length; x++) {
    tempString += ' ' + strArr[x];
    if ((x % words === 0 && x !== 0) || x == strArr.length - 1) {
      tempString = tempString.slice(1);
      result.push(tempString);
      tempString = '';
    }
  }
  return result;
}
<div *ngIf="barChartData">
  <div class="heading">
    <h4>{{ questionNumber }}) {{ data?.question }}</h4>
  </div>

  <div *ngIf="data?.chart?.data">
    <div style="display: block">
      <canvas
        baseChart
        [datasets]="barChartData"
        [labels]="barChartLabels"
        [options]="barChartOptions"
        [plugins]="barChartPlugins"
        [legend]="barChartLegend"
        [chartType]="barChartType"
        [colors]="chartColors"
      >
      </canvas>
    </div>
  </div>

  <div *ngIf="!data?.chart?.data" class="errorMsg">No data found</div>
</div>

./bar-chart.component.scss

@import 'src/assets/styles/base/_variables.scss';
@import 'src/assets/styles/_custom-mixins.scss';
@import 'src/assets/styles/_variables.scss';
.heading {
  background: #f4f4f4;
  padding: 15px 10px;
}
.errorMsg {
  color: $gray-400;
  text-align: center;
  padding: 20px 0;
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""