axidio-styleguide-library1-v2 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3002,8 +3002,8 @@ class GuageChartComponent extends ComponentUniqueId {
3002
3002
  this.chartConfiguration = {};
3003
3003
  this.dataType = '';
3004
3004
  this.datatype_status = false;
3005
- this.isHeaderVisible = true;
3006
3005
  this.uniqueId = this.getUniqueId();
3006
+ this.isHeaderVisible = true;
3007
3007
  this.defaultConfiguration = {
3008
3008
  margin: { top: 40, right: 20, bottom: 20, left: 20 },
3009
3009
  minAngle: -90,
@@ -3035,189 +3035,320 @@ class GuageChartComponent extends ComponentUniqueId {
3035
3035
  };
3036
3036
  }
3037
3037
  get isAlertEnabled() {
3038
- return this.chartConfiguration?.headerMenuOptions?.some((option) => option.id === 'editAlert');
3038
+ return this.chartConfiguration?.headerMenuOptions?.some(option => option.id === 'editAlert');
3039
3039
  }
3040
- ngOnInit() { }
3041
3040
  ngOnChanges() {
3042
- this.redrawChart();
3043
- }
3044
- onResized(_) {
3045
- this.redrawChart();
3041
+ let self = this;
3042
+ d3.select('#' + self.uniqueId).remove();
3043
+ this.initializeLineChart();
3046
3044
  }
3047
- redrawChart() {
3048
- d3.select(`#${this.uniqueId}`).remove();
3049
- this.initializeChartConfig();
3050
- this.drawGaugeChart();
3045
+ onResized(event) {
3046
+ let self = this;
3047
+ d3.select('#' + self.uniqueId).remove();
3048
+ this.initializeLineChart();
3051
3049
  }
3052
- initializeChartConfig() {
3053
- for (const key in this.defaultConfiguration) {
3054
- this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(key, this.defaultConfiguration, this.customChartConfiguration);
3050
+ ngOnInit() { }
3051
+ initializeLineChart() {
3052
+ var self = this;
3053
+ let data = [];
3054
+ let metaData = null;
3055
+ let colorMaps = [];
3056
+ let angleValue = [];
3057
+ let data_ready = [];
3058
+ let labelArray = [];
3059
+ let colorType = null;
3060
+ let isria = this.customChartConfiguration.isRia;
3061
+ for (var i in this.defaultConfiguration) {
3062
+ this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(i, this.defaultConfiguration, this.customChartConfiguration);
3055
3063
  }
3056
- if (this.chartConfiguration.isHeaderVisible !== undefined) {
3057
- this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;
3064
+ data = this.chartData.data;
3065
+ metaData = this.chartData.metaData;
3066
+ colorType = metaData.colorType;
3067
+ if (colorType == 'low') {
3068
+ colorMaps = this.chartConfiguration.low_colorMap;
3069
+ }
3070
+ else {
3071
+ colorMaps = this.chartConfiguration.high_colorMap;
3058
3072
  }
3059
- const metaData = this.chartData.metaData;
3060
3073
  if (metaData.dataType) {
3061
- this.dataType = metaData.dataType === 'USD' ? '$ ' : metaData.dataType;
3062
- this.datatype_status = metaData.dataType === 'USD';
3063
- }
3064
- }
3065
- drawGaugeChart() {
3066
- const { data, metaData } = this.chartData;
3067
- const colorMaps = metaData.colorType === 'low'
3068
- ? this.chartConfiguration.low_colorMap
3069
- : this.chartConfiguration.high_colorMap;
3070
- const chartContainer = d3.select(this.containerElt.nativeElement);
3071
- const guagecontainer = d3.select(this.guagecontainerElt.nativeElement);
3072
- const margin = this.chartConfiguration.margin;
3073
- const width = parseInt(chartContainer.style('width')) - margin.left - margin.right;
3074
- const height = parseInt(guagecontainer.style('height')) - margin.top - margin.bottom - 56;
3075
- const svg = this.createSvg(chartContainer, width, height);
3076
- const radius = Math.min(width, height) / 2;
3077
- this.adjustForScreenAndDrilldown(radius);
3078
- const { data_ready, angleValue, labelArray, range } = this.prepareGaugeData(data);
3079
- this.drawArcs(svg, data_ready, angleValue, radius, colorMaps, metaData);
3080
- this.drawPointer(svg, radius, data, metaData);
3081
- this.drawLabels(svg, radius, labelArray, range, metaData);
3082
- this.drawCenterTexts(svg, radius, metaData);
3083
- this.alignSvg(svg, chartContainer, margin);
3084
- }
3085
- createSvg(chartContainer, width, height) {
3086
- return chartContainer
3074
+ this.dataType = metaData.dataType;
3075
+ if (this.dataType == 'USD') {
3076
+ this.datatype_status = true;
3077
+ this.dataType = '$ ';
3078
+ }
3079
+ }
3080
+ data.map(function (dataUnit, i) {
3081
+ if (i < data.length - 1) {
3082
+ let diff = data[i + 1] - data[i];
3083
+ data_ready.push(diff);
3084
+ }
3085
+ });
3086
+ var chartContainer = d3.select(this.containerElt.nativeElement);
3087
+ var guagecontainer = d3.select(this.guagecontainerElt.nativeElement);
3088
+ var margin = this.chartConfiguration.margin;
3089
+ var width = parseInt(chartContainer.style('width')) - margin.left - margin.right;
3090
+ var height = parseInt(guagecontainer.style('height')) -
3091
+ margin.top -
3092
+ margin.bottom -
3093
+ 56; //chart header height
3094
+ if (this.chartConfiguration.isHeaderVisible != undefined)
3095
+ this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;
3096
+ var svg = chartContainer
3087
3097
  .append('svg')
3088
- .attr('id', this.uniqueId)
3089
- .attr('width', width)
3090
- .attr('height', height)
3098
+ .attr('id', self.uniqueId)
3099
+ .attr('width', width + margin.left + margin.right)
3100
+ .attr('height', height + margin.top + margin.bottom)
3091
3101
  .call(ChartHelper.responsivefy)
3092
3102
  .append('g');
3093
- }
3094
- adjustForScreenAndDrilldown(radius) {
3103
+ var radius = Math.min(width, height) / 2;
3095
3104
  if (this.chartConfiguration.isDrilldownChart) {
3096
3105
  this.chartConfiguration.currentValueWidthScaleFactor += 40;
3097
3106
  this.chartConfiguration.currentValueHeightScaleFactor += 20;
3098
3107
  }
3099
- else if (window.innerWidth > 1400) {
3100
- this.chartConfiguration.currentValueHeightScaleFactor += 15;
3101
- this.chartConfiguration.currentValueWidthScaleFactor *= 2;
3102
- }
3103
- }
3104
- prepareGaugeData(data) {
3105
- const data_ready = data.slice(1).map((d, i) => d - data[i]);
3106
- const total = data_ready.reduce((a, b) => a + b, 0);
3107
- const angleValue = data_ready.map(((sum) => (unit) => (sum += (unit / total) * 180))(0));
3108
- const labelArray = [{ name: data[0], value: 0 }];
3109
- data_ready.reduce((acc, val, i) => {
3110
- const next = acc + val;
3111
- labelArray.push({ name: data[i + 1], value: next });
3112
- return next;
3113
- }, 0);
3114
- const range = data[data.length - 1] - data[0];
3115
- return { data_ready, angleValue, labelArray, range };
3116
- }
3117
- drawArcs(svg, data_ready, angleValue, radius, colorMaps, metaData) {
3118
- const arc = d3
3108
+ else {
3109
+ if (window.innerWidth > 1400) {
3110
+ this.chartConfiguration.currentValueHeightScaleFactor += 15;
3111
+ this.chartConfiguration.currentValueWidthScaleFactor *= 2;
3112
+ }
3113
+ }
3114
+ let topTextPosition = radius / 2 - 10;
3115
+ let midTextPosition = topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
3116
+ let bottomTextPosition = midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
3117
+ var data_length = data.length;
3118
+ function deg2rad(deg) {
3119
+ return (deg * Math.PI) / 180;
3120
+ }
3121
+ let tempArray = [];
3122
+ let total = 0;
3123
+ data_ready.map(function (unit) {
3124
+ total += unit;
3125
+ });
3126
+ data_ready.map(function (unit, i) {
3127
+ var angle = (unit / total) * 180;
3128
+ if (i === 0) {
3129
+ tempArray.push(angle);
3130
+ }
3131
+ else {
3132
+ let currentAngle = tempArray[i - 1] + angle;
3133
+ tempArray.push(currentAngle);
3134
+ }
3135
+ });
3136
+ angleValue = tempArray;
3137
+ var arc = d3
3119
3138
  .arc()
3120
- .innerRadius(radius - this.chartConfiguration.ringWidth - this.chartConfiguration.ringInset)
3139
+ .innerRadius(radius -
3140
+ self.chartConfiguration.ringWidth -
3141
+ self.chartConfiguration.ringInset)
3121
3142
  .outerRadius(radius)
3122
- .startAngle((_, i) => this.deg2rad(i === 0 ? this.chartConfiguration.minAngle : this.chartConfiguration.minAngle + angleValue[i - 1]))
3123
- .endAngle((_, i) => this.deg2rad(i === data_ready.length - 1
3124
- ? this.chartConfiguration.maxAngle
3125
- : this.chartConfiguration.minAngle + angleValue[i]));
3126
- const arcs = svg.append('g').attr('class', 'arc').attr('transform', `translate(${radius},${radius})`);
3143
+ .startAngle(function (d, i) {
3144
+ var ratio;
3145
+ if (i === 0) {
3146
+ ratio = self.chartConfiguration.minAngle;
3147
+ }
3148
+ else {
3149
+ ratio = self.chartConfiguration.minAngle + angleValue[i - 1];
3150
+ }
3151
+ return deg2rad(ratio);
3152
+ })
3153
+ .endAngle(function (d, i) {
3154
+ var ratio;
3155
+ if (i === data_ready.length - 1) {
3156
+ ratio = self.chartConfiguration.maxAngle;
3157
+ }
3158
+ else {
3159
+ ratio = self.chartConfiguration.minAngle + angleValue[i];
3160
+ }
3161
+ return deg2rad(ratio);
3162
+ });
3163
+ function centerTranslation() {
3164
+ return 'translate(' + radius + ',' + radius + ')';
3165
+ }
3166
+ var centerTx = centerTranslation();
3167
+ var tickData = d3
3168
+ .range(self.chartConfiguration.majorTicks)
3169
+ .map(function (i) {
3170
+ return 1 / self.chartConfiguration.majorTicks;
3171
+ });
3172
+ var arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);
3127
3173
  arcs
3128
3174
  .selectAll('path')
3129
3175
  .data(data_ready)
3130
3176
  .enter()
3131
3177
  .append('path')
3132
- .attr('fill', (_, i) => colorMaps[i])
3133
- .attr('d', arc)
3134
- .style('cursor', () => metaData.currentValue > 0 && metaData.hasDrillDown ? 'pointer' : 'default')
3135
- .on('click', (event, d) => {
3136
- if (metaData.hasDrillDown && metaData.currentValue > 0) {
3137
- this.handleClick(this.getRange(d, data_ready, metaData));
3178
+ .on('click', function (d) {
3179
+ if (!metaData.hasDrillDown || metaData.currentValue == 0) {
3180
+ return;
3138
3181
  }
3182
+ let range = getRange(d);
3183
+ self.handleClick(range);
3184
+ })
3185
+ .attr('fill', function (d, i) {
3186
+ return colorMaps[i];
3187
+ })
3188
+ .attr('id', function (d, i) {
3189
+ return colorMaps[i];
3190
+ })
3191
+ .attr('d', arc)
3192
+ // .style('cursor', 'pointer');
3193
+ .style('cursor', function (d) {
3194
+ if (metaData.currentValue > 0 && metaData.hasDrillDown && !isria)
3195
+ return 'pointer';
3196
+ else
3197
+ return 'default';
3139
3198
  });
3140
- }
3141
- drawPointer(svg, radius, data, metaData) {
3142
- const pointerHeadLength = Math.round(radius * this.chartConfiguration.pointerHeadLengthPercent);
3143
- const lineData = [
3144
- [this.chartConfiguration.pointerWidth / 2, 0],
3199
+ let getRange = function (d) {
3200
+ let index = data_ready.indexOf(d);
3201
+ return data[0] + ' and ' + data[data.length - 1];
3202
+ };
3203
+ let pointerHeadLength = Math.round(radius * self.chartConfiguration.pointerHeadLengthPercent);
3204
+ var lineData = [
3205
+ [self.chartConfiguration.pointerWidth / 2, 0],
3145
3206
  [0, -pointerHeadLength],
3146
- [-(this.chartConfiguration.pointerWidth / 2), 0],
3147
- [0, this.chartConfiguration.pointerTailLength],
3148
- [this.chartConfiguration.pointerWidth / 2, 0],
3207
+ [-(self.chartConfiguration.pointerWidth / 2), 0],
3208
+ [0, self.chartConfiguration.pointerTailLength],
3209
+ [self.chartConfiguration.pointerWidth / 2, 0],
3149
3210
  ];
3150
- const pointerLine = d3.line();
3151
- const pointerValue = metaData.currentValue - data[0];
3152
- const range = data[data.length - 1] - data[0];
3153
- const pointerAngle = this.chartConfiguration.minAngle + (pointerValue / range) * 180;
3154
- svg
3211
+ var pointerLine = d3.line();
3212
+ var pg = svg
3155
3213
  .append('g')
3156
3214
  .data([lineData])
3157
3215
  .attr('class', 'pointer')
3158
- .attr('transform', `translate(${radius},${radius})`)
3159
- .append('path')
3216
+ .attr('transform', centerTx);
3217
+ var pointerValue = metaData.currentValue - data[0];
3218
+ var range = data[data_length - 1] - data[0];
3219
+ var pointerAngle = self.chartConfiguration.minAngle + (pointerValue / range) * 180;
3220
+ pg.append('path')
3160
3221
  .attr('d', pointerLine)
3161
- .attr('fill', this.chartConfiguration.pointerColor)
3162
- .attr('transform', `rotate(${pointerAngle}) translate(0,${-radius + this.chartConfiguration.ringWidth + pointerHeadLength})`);
3163
- }
3164
- drawLabels(svg, radius, labelArray, range, metaData) {
3165
- const lg = svg.append('g').attr('class', 'label').attr('transform', `translate(${radius},${radius})`);
3166
- const labelGroups = lg
3167
- .selectAll('.bubble')
3222
+ .attr('fill', self.chartConfiguration.pointerColor)
3223
+ .attr('transform', 'rotate(' +
3224
+ pointerAngle +
3225
+ ') translate(0,' +
3226
+ (-radius + self.chartConfiguration.ringWidth + pointerHeadLength) +
3227
+ ')');
3228
+ var lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);
3229
+ let labelArrayTemp = [{ name: data[0], value: 0 }];
3230
+ let count = 0;
3231
+ data_ready.map(function (dataUnit, i) {
3232
+ count += dataUnit;
3233
+ let temp = { name: data[i + 1], value: count };
3234
+ labelArrayTemp.push(temp);
3235
+ });
3236
+ labelArray = labelArrayTemp;
3237
+ lg.selectAll('.bubble')
3168
3238
  .data(labelArray)
3169
3239
  .enter()
3170
3240
  .append('g')
3171
- .attr('transform', (d) => {
3172
- const angle = this.chartConfiguration.minAngle + (d.value / range) * 180;
3173
- return `rotate(${angle}) translate(0,${this.chartConfiguration.labelInset - radius - 20})`;
3174
- });
3175
- labelGroups
3241
+ .attr('transform', function (d) {
3242
+ var newAngle = self.chartConfiguration.minAngle + (d.value / range) * 180;
3243
+ return ('rotate(' +
3244
+ newAngle +
3245
+ ') translate(0,' +
3246
+ (self.chartConfiguration.labelInset - radius - 20) +
3247
+ ')');
3248
+ })
3249
+ .append('g')
3250
+ .attr('transform', function (d, i) {
3251
+ var newAngle = self.chartConfiguration.minAngle + (d.value / range) * 180;
3252
+ if (i == 0 && self.chartConfiguration.isValueLableAdjust) {
3253
+ return 'rotate(' + (0 - newAngle) + ') translate(-27,0)';
3254
+ }
3255
+ if (i == labelArray.length - 1 &&
3256
+ self.chartConfiguration.isValueLableAdjust) {
3257
+ return 'rotate(' + (0 - newAngle) + ') translate(-15,0)';
3258
+ }
3259
+ return 'rotate(' + (0 - newAngle) + ') translate(-17,0)';
3260
+ })
3176
3261
  .append('text')
3262
+ .attr('style', function (d) {
3263
+ if (window.innerWidth < 1400)
3264
+ return 'font-size: ' + '12px' + '; font-weight:' + '600;';
3265
+ else
3266
+ return 'font-size: ' + '14px' + '; font-weight:' + '600;';
3267
+ })
3177
3268
  .attr('fill', 'var(--chart-text-color)')
3178
- .style('font-size', window.innerWidth < 1400 ? '12px' : '14px')
3179
- .style('font-weight', '600')
3180
- .text((d) => `${d.name}${metaData.dataType || ''}`);
3181
- }
3182
- drawCenterTexts(svg, radius, metaData) {
3269
+ .text(function (d) {
3270
+ if (metaData.dataType) {
3271
+ return d.name + metaData.dataType;
3272
+ }
3273
+ return d.name;
3274
+ });
3183
3275
  svg
3184
3276
  .append('foreignObject')
3185
- .attr('transform', `translate(${radius - this.chartConfiguration.currentValueWidthScaleFactor / 2},${radius / 2 - 10})`)
3186
- .attr('width', this.chartConfiguration.currentValueWidthScaleFactor)
3277
+ .attr('transform', 'translate(' +
3278
+ (radius - this.chartConfiguration.currentValueWidthScaleFactor / 2) +
3279
+ ',' +
3280
+ topTextPosition +
3281
+ ')')
3282
+ .attr('width', this.chartConfiguration.currentValueWidthScaleFactor + 8)
3187
3283
  .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
3188
3284
  .append('xhtml:div')
3189
3285
  .attr('class', 'value-display')
3190
- .html(`${metaData.currentValue}${metaData.dataType || ''}`);
3286
+ .style('height', this.chartConfiguration.currentValueHeightScaleFactor + 10 + 'px')
3287
+ .style('font-size', function () {
3288
+ if (window.innerWidth > 1500) {
3289
+ self.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px';
3290
+ }
3291
+ else {
3292
+ self.chartConfiguration.currentValueHeightScaleFactor - 15 + 'px';
3293
+ }
3294
+ })
3295
+ .html(metaData.currentValue + metaData.dataType);
3191
3296
  if (metaData.status) {
3297
+ let widthTemp = metaData.status.length > 4 ? 210 : 120;
3192
3298
  svg
3193
3299
  .append('foreignObject')
3194
- .attr('transform', `translate(${radius - 60},${radius / 2 + 20})`)
3195
- .attr('width', 120)
3300
+ .attr('transform', 'translate(' + (radius - widthTemp / 2) + ',' + midTextPosition + ')')
3301
+ .attr('width', widthTemp)
3302
+ .attr('height', this.chartConfiguration.currentValueHeightScaleFactor + 10)
3196
3303
  .append('xhtml:div')
3197
3304
  .attr('class', 'status-display')
3305
+ .style('font-size', this.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px')
3198
3306
  .html(metaData.status);
3199
3307
  }
3200
- if (metaData.dateRange) {
3201
- svg
3202
- .append('foreignObject')
3203
- .attr('transform', `translate(${radius - 105},${radius / 2 + 50})`)
3204
- .attr('width', 210)
3205
- .append('xhtml:div')
3206
- .attr('class', 'daterange-display')
3207
- .html(`<span class="marginright-3"><i class="fa fa-calendar"></i></span>${metaData.dateRange}`);
3208
- }
3209
- }
3210
- alignSvg(svg, chartContainer, margin) {
3211
- const containerMid = parseInt(chartContainer.style('width')) / 2;
3212
- const nodeHalf = svg.node().getBoundingClientRect().width / 2;
3213
- svg.attr('transform', `translate(${containerMid - nodeHalf + margin.left},${margin.top})`);
3214
- }
3215
- getRange(d, data_ready, metaData) {
3216
- const data = this.chartData.data;
3217
- return `${data[0]} and ${data[data.length - 1]}`;
3218
- }
3219
- deg2rad(deg) {
3220
- return (deg * Math.PI) / 180;
3308
+ svg
3309
+ .append('foreignObject')
3310
+ .attr('transform', 'translate(' + (radius - 105) + ',' + bottomTextPosition + ')')
3311
+ .attr('width', 210)
3312
+ .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
3313
+ .append('xhtml:div')
3314
+ .attr('class', 'daterange-display')
3315
+ .style('font-size', function () {
3316
+ if (self.chartConfiguration.isDrilldownChart) {
3317
+ {
3318
+ if (window.innerWidth < 1400)
3319
+ return '14px';
3320
+ else
3321
+ return '18px';
3322
+ }
3323
+ }
3324
+ else {
3325
+ if (window.innerWidth < 1400)
3326
+ return '14px';
3327
+ else
3328
+ return '18px';
3329
+ }
3330
+ })
3331
+ .html(function () {
3332
+ var desiredSize;
3333
+ if (window.innerWidth < 1400)
3334
+ desiredSize = '14px';
3335
+ else
3336
+ desiredSize = '18px';
3337
+ if (metaData.dateRange)
3338
+ return ('<span class="marginright-3"><i class="fa fa-calendar"></i></span><span> ' +
3339
+ metaData.dateRange +
3340
+ '</span>');
3341
+ else
3342
+ return '';
3343
+ });
3344
+ var containerMidWidth = parseInt(chartContainer.style('width')) / 2;
3345
+ var nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;
3346
+ var updatedStartingPoint = containerMidWidth - nodeHalfWidth;
3347
+ svg.attr('transform', 'translate(' +
3348
+ (updatedStartingPoint + margin.left) +
3349
+ ',' +
3350
+ margin.top +
3351
+ ')');
3221
3352
  }
3222
3353
  handleClick(d) {
3223
3354
  this.clickEvent.emit(d);