 |
|
가젯 살펴보기
이번 절에서는 시계 가젯 코드가 전부 어떤 역할을 하는지 다시 간략히 살펴보겠다.
환경설정 선언하기
Listing 15에는 가젯과 사용자 환경설정에 관한 코드들이 모여 있다.
Listing 15. 환경설정 선언하기
<Module>
<ModulePrefs title="Current time" author="John Muchow"
description="Gadget to demonstrate stuff" height="30"/>
<ModulePrefs title="The time in __UP_sName__'s world" />
<UserPref name="sName" display_name="Your name" required="true" />
<UserPref name="eBackgroundcolor" display_name="Background color"
default_value="Blue" datatype="enum" >
<EnumValue value="Red" />
<EnumValue value="Green" />
<EnumValue value="Blue" />
</UserPref>
|
이전 절에서 가젯을 로딩하면 세 개의 물음표 ???가 보이는 것을 지적했었다. Listing 15에서 title 변수가 __UP_sName__을 포함하고 있는 것을 주의 깊게 살펴보자. UP은 UserPref의 약자다. sName은 변수 이름으로 실행시에 변수 값으로 대체될 것이다. 설정 창의 텍스트 박스(그림 15)에 이름을 입력하면 가젯은 title 부분의 sName을 해당 값으로 대체할 것이다.
eBackgroundcolor 변수 선언 역시 살펴보자. 이 열거형은 세 가지 색을 선택할 수 있도록 되어 있다. 이것이 어떻게 화면에 보일지는 그림 16을 다시 살펴보면 된다.
스타일 속성
가젯의 콘텐츠 영역으로 이동하면 먼저 스타일 속성들을 정의한 것을 볼 수 있다(Listing 16).
Listing 16. 스타일 속성 정의하기
<Content type="html">
<![CDATA[
<!-- Set div. The text below is shown while clock is getting/formatting time -->
<div id="content_div" style="font-size:12px; font-family:Arial, Helvetica;
font-weight:bold; color:white; text-align:center;">
Formatting the time, please wait...
|
위의 코드는 글꼴 크기, 글자체, 두께(bold), 정렬(center)을 정의했다. 이러한 속성들은 가젯 내부에서 시간을 보여줄 때 사용한다. 또한 가젯을 로딩할 때 보일 메시지를 확인할 수 있다.
환결 설정 접근하기
다음 할 일은 자바스크립트의 생성자 메서드를 호출하여 사용자 환경설정 객체(Listing 17)의 인스턴스를 생성하는 것이다. 이 가젯의 식별자를 반환하는 __MODULE_ID__를 참조하고 있음에 주의한다. 이것을 사용하여 이전 코드에서 정의한 사용자 환경설정에 접근할 수 있다.
Listing 17. 사용자 환경설정에 배경색을 설정하는 코드
<script type="text/javascript">
// Get user preferences
var userprefs = new _IG_Prefs(__MODULE_ID__);
// Set user specified preference for background color
var element = document.getElementById('content_div');
element.style.backgroundColor = userprefs.getString('eBackgroundcolor');
|
마지막으로 eBackgroundcolor의 값을 사용하여 가젯의 배경색을 설정한다. 다시 그림 16을 참조하면 사용자가 이 값을 어떻게 선택할 수 있는지 알 수 있다.
시간 출력 형식 정하기
시계를 위한 코드는 Listing 18에 보이는 showClock() 함수 안에 있다.
Listing 18. 시계 출력 형식을 설정하는 코드
// The clock
var clock = _gel('content_div');
// Called repeatedly to update the clock
function showClock()
{
var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
var countdown = date.getSeconds();
var indicator;
var displaytime;
// Check for am or pm
if (hour > 12)
{
hour -= 12;
indicator = 'pm';
}
else
indicator = 'am';
// Add leading 0 to minutes, if necessary (e.g. 09 minutes)
if (min < 10)
min = '0' + min;
// Convert seconds (1 2 3...) to countdown (59 58 57...)
countdown = (60 - countdown);
// Create string that will be displayed
displaytime = hour + ':' + min + ' ' + indicator + ' - ' + countdown + ' seconds';
|
Listing 18의 코드 중 대부분은 혼자서도 알 수 있을 것이다. 주목해야 할 부분은 초를 카운트다운 값으로 바꾸는 부분일 것이다. 보통의 시계들처럼 초를 증가시키면서 세는 것(1, 2, 3 ...)이 아니라 카운트다운 타이머(60, 59, 58 ...)로 표현하도록 했다. 이런 변경은 60에서 seconds를 빼는 매우 간단한 것이다. 결과물은 이전의 그림 14를 참조하면 된다.
시계 보여주기
마지막 몇 줄의 코드(Listing 19)는 생성한 문자열을 보여주고 showClock() 함수를 호출하여 화면을 업데이트한다. 매 초마다 setInterval()을 호출하면 showClock()이 호출되고 그럼 가젯 내부의 시간이 변경된다. 여기서 주의할 것이 있다. 지금 이러한 방법이 잘 동작하기는 하지만 시간을 브라우저에 보여주는 멋진(또는 우아한) 방법은 아니다. 하지만 가젯의 기초를 익히기에는 충분했다.
Listing 19. 시계를 보여주고 업데이트하는 코드
// Display time
clock.innerHTML = displaytime;
...
// Every second (1000 milliseconds), update the window/clock.
window.setInterval("showClock()", 1000);
|
|