본문 바로가기

Javascript, jQuery

[jQuery] 변화량의 증가/감소에 따라 아이콘 다르게 구현하기

반응형

 

안녕하세요 주갬입니다.

 

오늘은 변화량을 표현할 때 다양하게 활용할 수 있는 간단한 코드를 들고 왔습니다.

 

 

VOD 데이터는 저번 달 대비 190%가 늘었고

AUTH데이터는 저번 달 대비 33%가 줄었음을 강조하기 위해

색깔과 화살표 모양을 달리해주었습니다.

 

 

JQuery를 이용하여 이를 구현할 수 있습니다.

 


1. 주어진 데이터 변화량 계산

 

저는 저번 달과 이번 달을 비교했기 때문에 다음과 같은 식으로 변화량을 계산했습니다. 

('이번 달 값' - '저번 달 값') / '저번 달 값' * 100
= '변화량' / '저번 달 값' *100
= 변화된 %

 

여기서 '저번 달 값' 이 0이면 Division by zero가 발생하기 때문에 조건문을 이용해 예외처리를 해주어야 합니다.

 

//PHP
if($VODLastWeek > 0) {
	$changeAmountVOD = ($ThisWeekVOD - $LastWeekVOD)/$LastWeekVOD;
}

$rates['VOD'] = number_format($changeAmountVOD*100);

if($authLastWeek > 0) {
	$changeAmountAuth = ($ThisWeekAuth - $LastWeekAuth)/$LastWeekAuth;
}

$rates['Auth'] = number_format($changeAmountAuth*100);

if문에서 분모가 0이상임을 검증한 후 식대로 계산을 해 변화량을 계산해 줍니다.

그리고 이 계산된 변화량에 100을 곱한 후 number_format을 씌워 소수점을 없애줍니다.

 

다른 언어로 작성하더라도 비슷한 함수들이 존재할 테니 비슷한 로직으로 작성하시면 됩니다.

 

Division by Zero 에러 방지 -> 변화량 계산 -> 100 곱해주기 -> 소수점 없애기

 

 

2. jQuery를 이용해 변화량의 양/음에 따라 맞는 html코드 append

 

$.each(rates,function(key,value){
  if (value > 0) {
      $('#rates').append('<span class="text-success mr-2"><i class="fas fa-arrow-up"></i> '
                          + value
                          +'%</span><span class="text-nowrap">  Since last month</span>'
      );
  }
  else {
      $('#rates').append('<span class="text-warning mr-2"><i class="fas fa-arrow-down"></i> '
                          + value
                          +'%</span><span class="text-nowrap">  Since last month</span>'
      );
  }
});

 

1번에서 rates 객체에 다음과 같은 값을 저장했습니다.

  { 'VOD' : 위에서 계산된 변화량%, 'Auth': 위에서 계산된 변화량% }

반복문을 돌려 rates객체 각 요소의 value값이 양인지 음인지 판별 후

양이면 success아이콘(색) + arrow-up(화살표) 아이콘을,

음이면 warning아이콘(색) + arrow-down(화살표) 아이콘을 html코드로 작성해줍니다.

 

그리고 표시하려는 위치에 append해주시면 됩니다.

 

 


간단하지만 유용하게 쓸 수 있는 변화량 표시 로직이였습니다.

 

다양한 곳에 도움이 되면 좋겠습니다.

읽어주셔서 감사합니다^^

 

반응형