gvChart의 Assertion failed(초기값 미지정시 발생) 그리고 해결방법

지난 여름 땀 뻘뻘 흘리며 만들었던 차트에서 이상한 현상이 발생한다는 연락을 받았습니다. Google Visualisation API 의 Charts를 기본으로 하는 gvChart 라는 jQuery 플러그인을 사용 해 구현한 차트였습니다. 최근에 갑자기 초기 챠트 생성 시 아래와 같은 경고 문구가 빨간색으로 표시되면서 챠트가 보이지 않는다고 하더군요.

“Assertion failed: Max value must be strictly greater than minValue”

해당 차트는 사용자의 선택에 따라 동적으로 재 생성되도록 만들었는데 차트에 필요한 값이 있는경우 정상적으로 표시되고 값이 없을때만 문제가 발생하더군요. 인수 받은 분도 구글링도 해보고 이거저거 검색 해 봤지만 도저히 답을 찾지 못했나 봅니다.

암튼, 저도 좀 찾아 봤는데 비슷한 문제가 발생했다는 내용은 어디에도 없더군요. Google Visualisation API 사이트에서도 해당 내용이 없더군요.

어찌저찌 실험을 해봤더니 gvChart에서 값을 전달 할 때 validation을 하지 않더군요. 즉, 숫자가 아닌 다른 문자가 들어가서 생기는 문제였습니다. 가장 큰 원인은 Google Visualisaton API에서도 입력 받은 값을 validation 하지 않아서 생기는 문제입니다. 문제가 시작되는 부분은 아래에 소스 입니다.

	rows.each(function(index){
		$(this).find('td').each(function(index2){
			data.setCell(index2, index+1, parseFloat($(this).text()));
		});
	});

문제를 해결한다고 Google 코드를 고칠 수는 없고 그렇다고 고치는 동안 기다릴 수도 없고 결국 gvChart를 고치거나 아니면 입력 값을 잘 처리하거나 해야 겠지요. 저는 gvChart를 고쳤습니다. 사용하는 곳이 좀 많아서요 ^^;;

gvChart에서 값을 입력 하는 부분을 아래처럼 수정하면 됩니다. 값이 number만 입력 되도록 처리 해도 문제가 발생하지 않습니다. 다른 형식으로 하셔도 됩니다. 편하신대로 숫자만 입력되면 됩니다.

	rows.each(function(index){
		$(this).find('td').each(function(index2){
			var _value = parseFloat($(this).text());
			data.setCell(index2, index+1, isNaN(_value) ? 0 : _value);
		});
	});
Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

Categories Web태그, , , 댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중