Skip to content

Commit cebbfee

Browse files
author
Павел Ахметчанов
committed
[#70] small optimization for calculation of SLA
1 parent c6ecc10 commit cebbfee

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/charts/AddSlaLine.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,10 @@ const getSlaLabel = (chartElement, slaPathElementIdentifier, fillColor) => {
8282
return slaLabelText;
8383
};
8484

85-
const calculateSlaProcentile = ({ chartElement, slaPosition }) => {
86-
const singleIssuesUnderSlaCount = [...chartElement.querySelectorAll('g.layer.issues circle.issue')].filter(
87-
issue => issue.attributes.cy.value >= slaPosition
88-
).length;
85+
const calculateSlaProcentile = ({ slaPosition, issues, issuesCluster }) => {
86+
const singleIssuesUnderSlaCount = issues.filter(issue => issue.attributes.cy.value >= slaPosition).length;
8987

90-
const issuesInClustersUnderSlaCount = [...chartElement.querySelectorAll('g.layer.issue-clusters circle.cluster')]
88+
const issuesInClustersUnderSlaCount = issuesCluster
9189
.filter(issue => issue.attributes.cy.value >= slaPosition)
9290
.map(cluster =>
9391
Math.round(
@@ -119,7 +117,7 @@ const renderSlaPercentageLabel = ({ chartElement, value, slaProcentile, slaPosit
119117
slaLabel.setAttributeNS(null, 'y', slaPosition + 12);
120118
};
121119

122-
const findDiaposonForSlaRectPosition = ({ chartElement, slaProcentile, ticsVals }) => {
120+
const findDiaposonForSlaRectPosition = ({ slaProcentile, ticsVals, issues, issuesCluster }) => {
123121
const maxDay = ticsVals[ticsVals.length - 1].value;
124122
const slaPosition = [0, 0];
125123
const step = maxDay < 50 ? 0.5 : 1;
@@ -131,7 +129,7 @@ const findDiaposonForSlaRectPosition = ({ chartElement, slaProcentile, ticsVals
131129

132130
while (pIn < 2 && day <= maxDay) {
133131
valPosition = getChartLinePosition(ticsVals, day);
134-
fProcentile = calculateSlaProcentile({ chartElement, slaPosition: valPosition });
132+
fProcentile = calculateSlaProcentile({ slaPosition, issues, issuesCluster });
135133

136134
day += step; // for case if user set fractional number to input
137135
if (fProcentile === slaProcentile) {
@@ -161,6 +159,9 @@ const findDiaposonForSlaRectPosition = ({ chartElement, slaProcentile, ticsVals
161159
const renderSlaLine = (sla, chartElement, changingSlaValue = sla) => {
162160
const ticsVals = getChartTics(chartElement);
163161

162+
const issues = [...chartElement.querySelectorAll('g.layer.issues circle.issue')];
163+
const issuesCluster = [...chartElement.querySelectorAll('g.layer.issue-clusters circle.cluster')];
164+
164165
const meanLine = chartElement.querySelector('.control-chart-mean');
165166
const [, rightPoint] = meanLine.getAttribute('d').split('L');
166167
const [lineLength] = rightPoint.split(',');
@@ -169,11 +170,12 @@ const renderSlaLine = (sla, chartElement, changingSlaValue = sla) => {
169170
const slaPosition = getChartLinePosition(ticsVals, value);
170171
if (Number.isNaN(slaPosition)) return;
171172

172-
const slaProcentile = calculateSlaProcentile({ chartElement, slaPosition });
173+
const slaProcentile = calculateSlaProcentile({ slaPosition, issues, issuesCluster });
173174
const [minSlaPosition, maxSlaPosition] = findDiaposonForSlaRectPosition({
174-
chartElement,
175175
slaProcentile,
176176
ticsVals,
177+
issues,
178+
issuesCluster,
177179
});
178180

179181
const slaPath = getBasicSlaPath(chartElement, pathId, strokeColor);

0 commit comments

Comments
 (0)