axidio-styleguide-library1-v2 0.2.9 → 0.2.11

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.
@@ -3035,259 +3035,321 @@ 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
- d3.select('#' + this.uniqueId).remove();
3041
+ let self = this;
3042
+ d3.select('#' + self.uniqueId).remove();
3043
3043
  this.initializeLineChart();
3044
3044
  }
3045
3045
  onResized(event) {
3046
- d3.select('#' + this.uniqueId).remove();
3046
+ let self = this;
3047
+ d3.select('#' + self.uniqueId).remove();
3047
3048
  this.initializeLineChart();
3048
3049
  }
3049
- /** -------------------------------
3050
- * Main Initialization Function
3051
- * ------------------------------*/
3050
+ ngOnInit() { }
3052
3051
  initializeLineChart() {
3053
- const self = this;
3054
- const { data, metaData } = this.chartData;
3055
- const isRia = this.customChartConfiguration.isRia;
3056
- this.setupChartConfiguration();
3057
- const { colorMaps } = this.getColorMap(metaData);
3058
- this.configureDataType(metaData);
3059
- const data_ready = this.calculateDataReady(data);
3060
- const { chartContainer, guagecontainer, width, height } = this.setupContainer();
3061
- this.isHeaderVisible =
3062
- this.chartConfiguration.isHeaderVisible ?? this.isHeaderVisible;
3063
- const svg = this.createSvg(chartContainer, width, height);
3064
- const radius = this.adjustDimensionsAndRadius(width, height);
3065
- const angleValue = this.computeAngles(data_ready, data);
3066
- const arc = this.createArc(radius, angleValue, data_ready);
3067
- this.drawGaugeArcs(svg, arc, data_ready, colorMaps, metaData, isRia, data);
3068
- this.drawPointer(svg, radius, metaData, data);
3069
- this.drawLabels(svg, radius, data_ready, data, metaData);
3070
- this.drawCenterTexts(svg, radius, metaData);
3071
- this.centerSvg(svg, chartContainer, width, height);
3072
- }
3073
- /** -------------------------------
3074
- * Modular Helper Functions
3075
- * ------------------------------*/
3076
- setupChartConfiguration() {
3077
- for (const key in this.defaultConfiguration) {
3078
- this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(key, this.defaultConfiguration, this.customChartConfiguration);
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);
3063
+ }
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;
3079
3072
  }
3080
- }
3081
- getColorMap(metaData) {
3082
- const colorType = metaData.colorType;
3083
- const colorMaps = colorType === 'low'
3084
- ? this.chartConfiguration.low_colorMap
3085
- : this.chartConfiguration.high_colorMap;
3086
- return { colorMaps };
3087
- }
3088
- configureDataType(metaData) {
3089
3073
  if (metaData.dataType) {
3090
3074
  this.dataType = metaData.dataType;
3091
- if (this.dataType === 'USD') {
3075
+ if (this.dataType == 'USD') {
3092
3076
  this.datatype_status = true;
3093
3077
  this.dataType = '$ ';
3094
3078
  }
3095
3079
  }
3096
- }
3097
- calculateDataReady(data) {
3098
- const data_ready = [];
3099
- data.forEach((_, i) => {
3080
+ data.map(function (dataUnit, i) {
3100
3081
  if (i < data.length - 1) {
3101
- data_ready.push(data[i + 1] - data[i]);
3082
+ let diff = data[i + 1] - data[i];
3083
+ data_ready.push(diff);
3102
3084
  }
3103
3085
  });
3104
- return data_ready;
3105
- }
3106
- setupContainer() {
3107
- const chartContainer = d3.select(this.containerElt.nativeElement);
3108
- const guagecontainer = d3.select(this.guagecontainerElt.nativeElement);
3109
- const margin = this.chartConfiguration.margin;
3110
- const width = parseInt(chartContainer.style('width')) - margin.left - margin.right;
3111
- const height = parseInt(guagecontainer.style('height')) -
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')) -
3112
3091
  margin.top -
3113
3092
  margin.bottom -
3114
- 56; // chart header height
3115
- return { chartContainer, guagecontainer, width, height };
3116
- }
3117
- createSvg(chartContainer, width, height) {
3118
- const margin = this.chartConfiguration.margin;
3119
- return chartContainer
3093
+ 56; //chart header height
3094
+ if (this.chartConfiguration.isHeaderVisible != undefined)
3095
+ this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;
3096
+ var svg = chartContainer
3120
3097
  .append('svg')
3121
- .attr('id', this.uniqueId)
3098
+ .attr('id', self.uniqueId)
3122
3099
  .attr('width', width + margin.left + margin.right)
3123
3100
  .attr('height', height + margin.top + margin.bottom)
3124
3101
  .call(ChartHelper.responsivefy)
3125
3102
  .append('g');
3126
- }
3127
- adjustDimensionsAndRadius(width, height) {
3128
- const radius = Math.min(width, height) / 2;
3103
+ var radius = Math.min(width, height) / 2;
3129
3104
  if (this.chartConfiguration.isDrilldownChart) {
3130
3105
  this.chartConfiguration.currentValueWidthScaleFactor += 40;
3131
3106
  this.chartConfiguration.currentValueHeightScaleFactor += 20;
3132
3107
  }
3133
- else if (window.innerWidth > 1400) {
3134
- this.chartConfiguration.currentValueHeightScaleFactor += 15;
3135
- this.chartConfiguration.currentValueWidthScaleFactor *= 2;
3136
- }
3137
- return radius;
3138
- }
3139
- computeAngles(data_ready, data) {
3140
- const total = data_ready.reduce((sum, val) => sum + val, 0);
3141
- const tempArray = [];
3142
- data_ready.forEach((unit, i) => {
3143
- const angle = (unit / total) * 180;
3144
- tempArray.push(i === 0 ? angle : tempArray[i - 1] + angle);
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;
3145
3125
  });
3146
- return tempArray;
3147
- }
3148
- createArc(radius, angleValue, data_ready) {
3149
- const self = this;
3150
- const deg2rad = (deg) => (deg * Math.PI) / 180;
3151
- return d3
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
3152
3138
  .arc()
3153
3139
  .innerRadius(radius -
3154
3140
  self.chartConfiguration.ringWidth -
3155
3141
  self.chartConfiguration.ringInset)
3156
3142
  .outerRadius(radius)
3157
- .startAngle((_, i) => deg2rad(i === 0
3158
- ? self.chartConfiguration.minAngle
3159
- : self.chartConfiguration.minAngle + angleValue[i - 1]))
3160
- .endAngle((_, i) => deg2rad(i === data_ready.length - 1
3161
- ? self.chartConfiguration.maxAngle
3162
- : self.chartConfiguration.minAngle + angleValue[i]));
3163
- }
3164
- drawGaugeArcs(svg, arc, data_ready, colorMaps, metaData, isRia, data) {
3165
- const self = this;
3166
- const arcs = svg
3167
- .append('g')
3168
- .attr('class', 'arc')
3169
- .attr('transform', this.centerTranslation(arc.outerRadius()()));
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);
3170
3173
  arcs
3171
3174
  .selectAll('path')
3172
3175
  .data(data_ready)
3173
3176
  .enter()
3174
3177
  .append('path')
3175
- .attr('fill', (_, i) => colorMaps[i])
3176
- .style('cursor', () => metaData.currentValue > 0 && metaData.hasDrillDown && !isRia
3177
- ? 'pointer'
3178
- : 'default')
3179
- .attr('d', arc)
3180
- .on('click', (d) => {
3181
- if (!metaData.hasDrillDown || metaData.currentValue === 0)
3178
+ .on('click', function (d) {
3179
+ if (!metaData.hasDrillDown || metaData.currentValue == 0) {
3182
3180
  return;
3183
- const range = `${data[0]} and ${data[data.length - 1]}`;
3181
+ }
3182
+ let range = getRange(d);
3184
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';
3185
3198
  });
3186
- }
3187
- drawPointer(svg, radius, metaData, data) {
3188
- const self = this;
3189
- const pointerHeadLength = Math.round(radius * self.chartConfiguration.pointerHeadLengthPercent);
3190
- const lineData = [
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 = [
3191
3205
  [self.chartConfiguration.pointerWidth / 2, 0],
3192
3206
  [0, -pointerHeadLength],
3193
3207
  [-(self.chartConfiguration.pointerWidth / 2), 0],
3194
3208
  [0, self.chartConfiguration.pointerTailLength],
3195
3209
  [self.chartConfiguration.pointerWidth / 2, 0],
3196
3210
  ];
3197
- const pointerLine = d3.line();
3198
- const pg = svg
3211
+ var pointerLine = d3.line();
3212
+ var pg = svg
3199
3213
  .append('g')
3200
3214
  .data([lineData])
3201
3215
  .attr('class', 'pointer')
3202
- .attr('transform', this.centerTranslation(radius));
3203
- const pointerValue = metaData.currentValue - data[0];
3204
- const range = data[data.length - 1] - data[0];
3205
- const pointerAngle = self.chartConfiguration.minAngle + (pointerValue / range) * 180;
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;
3206
3220
  pg.append('path')
3207
3221
  .attr('d', pointerLine)
3208
3222
  .attr('fill', self.chartConfiguration.pointerColor)
3209
- .attr('transform', `rotate(${pointerAngle}) translate(0,${-radius + self.chartConfiguration.ringWidth + pointerHeadLength})`);
3210
- }
3211
- drawLabels(svg, radius, data_ready, data, metaData) {
3212
- const self = this;
3213
- const range = data[data.length - 1] - data[0];
3214
- const labelArray = this.buildLabelArray(data_ready, data);
3215
- const lg = svg
3216
- .append('g')
3217
- .attr('class', 'label')
3218
- .attr('transform', this.centerTranslation(radius));
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;
3219
3237
  lg.selectAll('.bubble')
3220
3238
  .data(labelArray)
3221
3239
  .enter()
3222
3240
  .append('g')
3223
- .attr('transform', (d) => {
3224
- const newAngle = self.chartConfiguration.minAngle + (d.value / range) * 180;
3225
- return `rotate(${newAngle}) translate(0,${self.chartConfiguration.labelInset - radius - 20})`;
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)';
3226
3260
  })
3227
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
+ })
3228
3268
  .attr('fill', 'var(--chart-text-color)')
3229
- .style('font-size', window.innerWidth < 1400 ? '12px' : '14px')
3230
- .style('font-weight', '600')
3231
- .text((d) => (metaData.dataType ? d.name + metaData.dataType : d.name));
3232
- }
3233
- buildLabelArray(data_ready, data) {
3234
- const labelArray = [{ name: data[0], value: 0 }];
3235
- let count = 0;
3236
- data_ready.forEach((unit, i) => {
3237
- count += unit;
3238
- labelArray.push({ name: data[i + 1], value: count });
3269
+ .text(function (d) {
3270
+ if (metaData.dataType) {
3271
+ return d.name + metaData.dataType;
3272
+ }
3273
+ return d.name;
3239
3274
  });
3240
- return labelArray;
3241
- }
3242
- drawCenterTexts(svg, radius, metaData) {
3243
- const self = this;
3244
- const top = radius / 2 - 10;
3245
- const mid = top + self.chartConfiguration.currentValueHeightScaleFactor;
3246
- const bottom = mid + self.chartConfiguration.currentValueHeightScaleFactor;
3247
- // current value
3248
3275
  svg
3249
3276
  .append('foreignObject')
3250
- .attr('transform', `translate(${radius - this.chartConfiguration.currentValueWidthScaleFactor / 2},${top})`)
3277
+ .attr('transform', 'translate(' +
3278
+ (radius - this.chartConfiguration.currentValueWidthScaleFactor / 2) +
3279
+ ',' +
3280
+ topTextPosition +
3281
+ ')')
3251
3282
  .attr('width', this.chartConfiguration.currentValueWidthScaleFactor + 8)
3252
3283
  .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
3253
3284
  .append('xhtml:div')
3254
3285
  .attr('class', 'value-display')
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
+ })
3255
3295
  .html(metaData.currentValue + metaData.dataType);
3256
- // status
3257
3296
  if (metaData.status) {
3258
- const widthTemp = metaData.status.length > 4 ? 210 : 120;
3297
+ let widthTemp = metaData.status.length > 4 ? 210 : 120;
3259
3298
  svg
3260
3299
  .append('foreignObject')
3261
- .attr('transform', `translate(${radius - widthTemp / 2},${mid})`)
3300
+ .attr('transform', 'translate(' + (radius - widthTemp / 2) + ',' + midTextPosition + ')')
3262
3301
  .attr('width', widthTemp)
3302
+ .attr('height', this.chartConfiguration.currentValueHeightScaleFactor + 10)
3263
3303
  .append('xhtml:div')
3264
3304
  .attr('class', 'status-display')
3305
+ .style('font-size', this.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px')
3265
3306
  .html(metaData.status);
3266
3307
  }
3267
- // date range
3268
3308
  svg
3269
3309
  .append('foreignObject')
3270
- .attr('transform', `translate(${radius - 105},${bottom})`)
3310
+ .attr('transform', 'translate(' + (radius - 105) + ',' + bottomTextPosition + ')')
3271
3311
  .attr('width', 210)
3312
+ .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
3272
3313
  .append('xhtml:div')
3273
3314
  .attr('class', 'daterange-display')
3274
- .html(metaData.dateRange
3275
- ? `<span class="marginright-3"><i class="fa fa-calendar"></i></span><span>${metaData.dateRange}</span>`
3276
- : '');
3277
- }
3278
- centerTranslation(radius) {
3279
- return `translate(${radius},${radius})`;
3280
- }
3281
- centerSvg(svg, chartContainer, width, height) {
3282
- const margin = this.chartConfiguration.margin;
3283
- const containerMidWidth = parseInt(chartContainer.style('width')) / 2;
3284
- const nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;
3285
- const updatedStartingPoint = containerMidWidth - nodeHalfWidth;
3286
- svg.attr('transform', `translate(${updatedStartingPoint + margin.left},${margin.top})`);
3287
- }
3288
- /** -------------------------------
3289
- * Event Handlers
3290
- * ------------------------------*/
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
+ ')');
3352
+ }
3291
3353
  handleClick(d) {
3292
3354
  this.clickEvent.emit(d);
3293
3355
  }