@@ -27,7 +27,7 @@ const getBasicSlaRect = (chartElement, slaPathElementIdentifier, strokeColor) =>
2727 slaRect . id = rectId ;
2828 slaRect . setAttributeNS ( null , 'fill' , strokeColor || SLA_COLOR ) ;
2929 slaRect . setAttributeNS ( null , 'stroke' , strokeColor || SLA_COLOR ) ;
30- slaRect . setAttributeNS ( null , 'fill-opacity' , '0.25 ' ) ;
30+ slaRect . setAttributeNS ( null , 'fill-opacity' , '0.15 ' ) ;
3131 slaRect . setAttributeNS ( null , 'stroke-width' , '1' ) ;
3232 slaRect . setAttributeNS ( null , 'x' , '0' ) ;
3333 slaRect . setAttributeNS ( null , 'y' , '0' ) ;
@@ -120,41 +120,41 @@ const renderSlaPercentageLabel = ({ chartElement, value, slaProcentile, slaPosit
120120} ;
121121
122122const findDiaposonForSlaRectPosition = ( { chartElement, slaProcentile, ticsVals } ) => {
123- let pMin = 0 ;
124- let pMax = ticsVals . length - 1 ;
125-
126- let minSlaPosition = 0 ;
127- let minProcentile = 0 ;
128- let maxSlaPosition = 0 ;
129- let maxProcentile = 0 ;
130- let minValue = 0 ;
131- let maxValue = 0 ;
132-
133- while ( pMin <= pMax ) {
134- if ( minProcentile !== slaProcentile ) {
135- minValue = ticsVals [ pMin ] . value ;
136- minSlaPosition = getChartLinePosition ( ticsVals , minValue ) ;
137- minProcentile = calculateSlaProcentile ( { chartElement, slaPosition : minSlaPosition } ) ;
123+ const maxDay = ticsVals [ ticsVals . length - 1 ] . value ;
124+ const slaPosition = [ 0 , 0 ] ;
125+ let pIn = 0 ;
126+ let day = ticsVals [ 0 ] . value ;
127+
128+ let fProcentile = 0 ;
129+ let valPosition = 0 ;
130+
131+ while ( pIn < 2 && day <= maxDay ) {
132+ valPosition = getChartLinePosition ( ticsVals , day ) ;
133+ fProcentile = calculateSlaProcentile ( { chartElement, slaPosition : valPosition } ) ;
134+
135+ day += 0.1 ; // for case if user set fractional number to input
136+ if ( fProcentile === slaProcentile ) {
137+ slaPosition [ pIn ] = valPosition ;
138+
139+ if ( pIn === 0 ) {
140+ pIn += 1 ;
141+ slaPosition [ pIn ] = valPosition ; // if one step on the one procentile
142+ // eslint-disable-next-line no-continue
143+ continue ;
144+ }
138145 }
139- if ( maxProcentile !== slaProcentile ) {
140- maxValue = ticsVals [ pMax ] . value ;
141- maxSlaPosition = getChartLinePosition ( ticsVals , maxValue ) ;
142- maxProcentile = calculateSlaProcentile ( { chartElement, slaPosition : maxSlaPosition } ) ;
146+
147+ if ( pIn === 1 && fProcentile !== slaProcentile ) {
148+ // exit from top board
149+ pIn += 1 ;
150+ break ;
143151 }
144- pMin += 1 ;
145- pMax -= 1 ;
146152 }
147- window . console . log (
148- {
149- minSlaPosition,
150- maxSlaPosition,
151- } ,
152- ticsVals
153- ) ;
154- return {
155- minSlaPosition,
156- maxSlaPosition,
157- } ;
153+
154+ slaPosition [ 0 ] = Number . isNaN ( slaPosition [ 0 ] ) ? 0 : slaPosition [ 0 ] ;
155+ slaPosition [ 1 ] = Number . isNaN ( slaPosition [ 1 ] ) ? 0 : slaPosition [ 1 ] ;
156+
157+ return slaPosition ;
158158} ;
159159
160160const renderSlaLine = ( sla , chartElement , changingSlaValue = sla ) => {
@@ -169,7 +169,7 @@ const renderSlaLine = (sla, chartElement, changingSlaValue = sla) => {
169169 if ( Number . isNaN ( slaPosition ) ) return ;
170170
171171 const slaProcentile = calculateSlaProcentile ( { chartElement, slaPosition } ) ;
172- const { minSlaPosition, maxSlaPosition } = findDiaposonForSlaRectPosition ( {
172+ const [ minSlaPosition , maxSlaPosition ] = findDiaposonForSlaRectPosition ( {
173173 chartElement,
174174 slaProcentile,
175175 ticsVals,
0 commit comments