UNPKG

@shikshalokam/sl-reports-library

Version:

Library to integrate questionnaire in SL Projects

106 lines 17.1 kB
import { Component, Input, ViewChild, } from "@angular/core"; import * as stackedBar from "chartjs-plugin-stacked100"; import * as pluginDataLabels from "chartjs-plugin-datalabels"; import * as i0 from "@angular/core"; import * as i1 from "ng2-charts"; import * as i2 from "@angular/common"; export class PercentageColumnChartsComponent { constructor() { this.barChartLabels = []; this.barChartType = "bar"; this.barChartLegend = true; this.barChartPlugins = [pluginDataLabels, stackedBar]; } ngOnInit() { this.submiisionDateArray = this.chartData.chart.submissionDateArray; const options = { ...(this.chartData.chart.type == "horizontalBar" && { indexAxis: "y", }), scales: { x: { ...(this.chartData.chart.options.scales.xAxes[0].scaleLabel && { title: { display: this.chartData.chart.options.scales.xAxes[0].scaleLabel.display, text: this.chartData.chart.options.scales.xAxes[0].scaleLabel .labelString, }, ...this.chartData.chart.options.scales.xAxes[0], }), }, y: { ...(this.chartData.chart.options.scales.yAxes[0].scaleLabel && { title: { display: this.chartData.chart.options.scales.yAxes[0].scaleLabel.display, text: this.chartData.chart.options.scales.yAxes[0].scaleLabel .labelString, }, ...this.chartData.chart.options.scales.yAxes[0], }), }, }, }; this.barChartOptions = options; this.barChartOptions["plugins"] = { ...((this.chartData.chart.options.legend && { legend: this.chartData.chart.options.legend, }) || { legend: { display: false, }, }), stacked100: { enable: true, replaceTooltipLabel: true }, datalabels: { offset: 0, anchor: "end", align: "left", font: { size: 12, }, formatter: (value, data) => { const d = data.chart.data; const { datasetIndex, dataIndex } = data; // to remove 0 data in report if (d.originalData[datasetIndex][dataIndex] == 0) { if ((data.datasetIndex + 1) % this.barChartData.length == 0 && this.submiisionDateArray.length) { return ["", "", this.submiisionDateArray[data.dataIndex]]; } return ""; } // to remove date in instance report if (this.submiisionDateArray && !this.submiisionDateArray.length) { return `${d.originalData[datasetIndex][dataIndex]}`; } // for last value if ((data.datasetIndex + 1) % this.barChartData.length == 0) { // console.log(data.datasetIndex) if (d.originalData[datasetIndex][dataIndex] == 1) { return ["", "", this.submiisionDateArray[data.dataIndex]]; } return [ ` ${d.originalData[datasetIndex][dataIndex]}`, "", ` ${this.submiisionDateArray[data.dataIndex]}`, ]; } else { return `${d.originalData[datasetIndex][dataIndex]}`; } }, }, }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PercentageColumnChartsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PercentageColumnChartsComponent, selector: "sl-percentage-column-charts", inputs: { chartData: "chartData" }, viewQueries: [{ propertyName: "chartCanvas", first: true, predicate: ["chartCanvas"], descendants: true }], ngImport: i0, template: "<div class=\"graph-filters\" #chartRootElement>\n <ng-container *ngIf=\"chartData?.chart?.data\" class=\"bar-chart-wrapper\">\n <canvas\n #chartCanvas\n baseChart\n [data]=\"chartData.chart.data\"\n [type]=\"barChartType\"\n [options]=\"barChartOptions\"\n ></canvas>\n </ng-container>\n</div>\n", styles: [".bar-chart-wrapper{display:block;max-width:900px;max-height:450px;margin:0 auto}\n"], dependencies: [{ kind: "directive", type: i1.BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PercentageColumnChartsComponent, decorators: [{ type: Component, args: [{ selector: "sl-percentage-column-charts", template: "<div class=\"graph-filters\" #chartRootElement>\n <ng-container *ngIf=\"chartData?.chart?.data\" class=\"bar-chart-wrapper\">\n <canvas\n #chartCanvas\n baseChart\n [data]=\"chartData.chart.data\"\n [type]=\"barChartType\"\n [options]=\"barChartOptions\"\n ></canvas>\n </ng-container>\n</div>\n", styles: [".bar-chart-wrapper{display:block;max-width:900px;max-height:450px;margin:0 auto}\n"] }] }], ctorParameters: function () { return []; }, propDecorators: { chartCanvas: [{ type: ViewChild, args: ["chartCanvas"] }], chartData: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyY2VudGFnZS1jb2x1bW4tY2hhcnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NsLXJlcG9ydHMtbGlicmFyeS9zcmMvbGliL3BlcmNlbnRhZ2UtY29sdW1uLWNoYXJ0cy9wZXJjZW50YWdlLWNvbHVtbi1jaGFydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2wtcmVwb3J0cy1saWJyYXJ5L3NyYy9saWIvcGVyY2VudGFnZS1jb2x1bW4tY2hhcnRzL3BlcmNlbnRhZ2UtY29sdW1uLWNoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFPOUQsTUFBTSxPQUFPLCtCQUErQjtJQVcxQztRQUpPLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQWMsS0FBSyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLG9CQUFlLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRWhCLFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDcEUsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLGVBQWUsSUFBSTtnQkFDbEQsU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDO1lBQ0YsTUFBTSxFQUFFO2dCQUNOLENBQUMsRUFBRTtvQkFDRCxHQUFHLENBQUMs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QWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDaGFydERhdGFzZXQsIENoYXJ0T3B0aW9ucywgQ2hhcnRUeXBlIH0gZnJvbSBcImNoYXJ0LmpzXCI7XG5pbXBvcnQgKiBhcyBzdGFja2VkQmFyIGZyb20gXCJjaGFydGpzLXBsdWdpbi1zdGFja2VkMTAwXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5EYXRhTGFiZWxzIGZyb20gXCJjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzbC1wZXJjZW50YWdlLWNvbHVtbi1jaGFydHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9wZXJjZW50YWdlLWNvbHVtbi1jaGFydHMuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3BlcmNlbnRhZ2UtY29sdW1uLWNoYXJ0cy5jb21wb25lbnQuY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXJjZW50YWdlQ29sdW1uQ2hhcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChcImNoYXJ0Q2FudmFzXCIpIGNoYXJ0Q2FudmFzO1xuICAvLyBAT3V0cHV0KCkgY2xpY2tPbkdyYXBoRXZlbnRFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBjaGFydERhdGE7XG4gIHN1Ym1paXNpb25EYXRlQXJyYXk7XG4gIHB1YmxpYyBiYXJDaGFydERhdGE6IENoYXJ0RGF0YXNldFtdO1xuICBwdWJsaWMgYmFyQ2hhcnRPcHRpb25zOiBhbnk7XG4gIHB1YmxpYyBiYXJDaGFydExhYmVscyA9IFtdO1xuICBwdWJsaWMgYmFyQ2hhcnRUeXBlOiBDaGFydFR5cGUgPSBcImJhclwiO1xuICBwdWJsaWMgYmFyQ2hhcnRMZWdlbmQgPSB0cnVlO1xuICBwdWJsaWMgYmFyQ2hhcnRQbHVnaW5zID0gW3BsdWdpbkRhdGFMYWJlbHMsIHN0YWNrZWRCYXJdO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zdWJtaWlzaW9uRGF0ZUFycmF5ID0gdGhpcy5jaGFydERhdGEuY2hhcnQuc3VibWlzc2lvbkRhdGVBcnJheTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4uKHRoaXMuY2hhcnREYXRhLmNoYXJ0LnR5cGUgPT0gXCJob3Jpem9udGFsQmFyXCIgJiYge1xuICAgICAgICBpbmRleEF4aXM6IFwieVwiLFxuICAgICAgfSksXG4gICAgICBzY2FsZXM6IHtcbiAgICAgICAgeDoge1xuICAgICAgICAgIC4uLih0aGlzLmNoYXJ0RGF0YS5jaGFydC5vcHRpb25zLnNjYWxlcy54QXhlc1swXS5zY2FsZUxhYmVsICYmIHtcbiAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFydERhdGEuY2hhcnQub3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0uc2NhbGVMYWJlbC5kaXNwbGF5LFxuICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmNoYXJ0RGF0YS5jaGFydC5vcHRpb25zLnNjYWxlcy54QXhlc1swXS5zY2FsZUxhYmVsXG4gICAgICAgICAgICAgICAgLmxhYmVsU3RyaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLnRoaXMuY2hhcnREYXRhLmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnhBeGVzWzBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB5OiB7XG4gICAgICAgICAgLi4uKHRoaXMuY2hhcnREYXRhLmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGVzWzBdLnNjYWxlTGFiZWwgJiYge1xuICAgICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTpcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YS5jaGFydC5vcHRpb25zLnNjYWxlcy55QXhlc1swXS5zY2FsZUxhYmVsLmRpc3BsYXksXG4gICAgICAgICAgICAgIHRleHQ6IHRoaXMuY2hhcnREYXRhLmNoYXJ0Lm9wdGlvbnMuc2NhbGVzLnlBeGVzWzBdLnNjYWxlTGFiZWxcbiAgICAgICAgICAgICAgICAubGFiZWxTdHJpbmcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4udGhpcy5jaGFydERhdGEuY2hhcnQub3B0aW9ucy5zY2FsZXMueUF4ZXNbMF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5iYXJDaGFydE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuYmFyQ2hhcnRPcHRpb25zW1wicGx1Z2luc1wiXSA9IHtcbiAgICAgIC4uLigodGhpcy5jaGFydERhdGEuY2hhcnQub3B0aW9ucy5sZWdlbmQgJiYge1xuICAgICAgICBsZWdlbmQ6IHRoaXMuY2hhcnREYXRhLmNoYXJ0Lm9wdGlvbnMubGVnZW5kLFxuICAgICAgfSkgfHwge1xuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgc3RhY2tlZDEwMDogeyBlbmFibGU6IHRydWUsIHJlcGxhY2VUb29sdGlwTGFiZWw6IHRydWUgfSxcbiAgICAgIGRhdGFsYWJlbHM6IHtcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBhbmNob3I6IFwiZW5kXCIsXG4gICAgICAgIGFsaWduOiBcImxlZnRcIixcbiAgICAgICAgZm9udDoge1xuICAgICAgICAgIHNpemU6IDEyLFxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXR0ZXI6ICh2YWx1ZSwgZGF0YSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGQ6IGFueSA9IGRhdGEuY2hhcnQuZGF0YTtcbiAgICAgICAgICBjb25zdCB7IGRhdGFzZXRJbmRleCwgZGF0YUluZGV4IH0gPSBkYXRhO1xuICAgICAgICAgIC8vIHRvIHJlbW92ZSAgMCBkYXRhIGluICByZXBvcnRcbiAgICAgICAgICBpZiAoZC5vcmlnaW5hbERhdGFbZGF0YXNldEluZGV4XVtkYXRhSW5kZXhdID09IDApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGRhdGEuZGF0YXNldEluZGV4ICsgMSkgJSB0aGlzLmJhckNoYXJ0RGF0YS5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICB0aGlzLnN1Ym1paXNpb25EYXRlQXJyYXkubGVuZ3RoXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcIlwiLCBcIlwiLCB0aGlzLnN1Ym1paXNpb25EYXRlQXJyYXlbZGF0YS5kYXRhSW5kZXhdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0byByZW1vdmUgZGF0ZSBpbiBpbnN0YW5jZSByZXBvcnRcbiAgICAgICAgICBpZiAodGhpcy5zdWJtaWlzaW9uRGF0ZUFycmF5ICYmICF0aGlzLnN1Ym1paXNpb25EYXRlQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZC5vcmlnaW5hbERhdGFbZGF0YXNldEluZGV4XVtkYXRhSW5kZXhdfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZm9yIGxhc3QgdmFsdWVcbiAgICAgICAgICBpZiAoKGRhdGEuZGF0YXNldEluZGV4ICsgMSkgJSB0aGlzLmJhckNoYXJ0RGF0YS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZGF0YS5kYXRhc2V0SW5kZXgpXG4gICAgICAgICAgICBpZiAoZC5vcmlnaW5hbERhdGFbZGF0YXNldEluZGV4XVtkYXRhSW5kZXhdID09IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcIlwiLCBcIlwiLCB0aGlzLnN1Ym1paXNpb25EYXRlQXJyYXlbZGF0YS5kYXRhSW5kZXhdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkLm9yaWdpbmFsRGF0YVtkYXRhc2V0SW5kZXhdW2RhdGFJbmRleF19YCxcbiAgICAgICAgICAgICAgXCJcIixcblxuICAgICAgICAgICAgICBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgIHRoaXMuc3VibWlpc2lvbkRhdGVBcnJheVtkYXRhLmRhdGFJbmRleF1cbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZC5vcmlnaW5hbERhdGFbZGF0YXNldEluZGV4XVtkYXRhSW5kZXhdfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3JhcGgtZmlsdGVyc1wiICNjaGFydFJvb3RFbGVtZW50PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hhcnREYXRhPy5jaGFydD8uZGF0YVwiIGNsYXNzPVwiYmFyLWNoYXJ0LXdyYXBwZXJcIj5cbiAgICA8Y2FudmFzXG4gICAgICAjY2hhcnRDYW52YXNcbiAgICAgIGJhc2VDaGFydFxuICAgICAgW2RhdGFdPVwiY2hhcnREYXRhLmNoYXJ0LmRhdGFcIlxuICAgICAgW3R5cGVdPVwiYmFyQ2hhcnRUeXBlXCJcbiAgICAgIFtvcHRpb25zXT1cImJhckNoYXJ0T3B0aW9uc1wiXG4gICAgPjwvY2FudmFzPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19