%D This example dates from late 2001, and ws probaby made for some \TEX\ related %D meeting. It's a relative simple example that uses a few function from a general %D \JAVASCRIPT\ preamble. In fact forcing the \type {FieldStack} code into the %D is the only adaptation from \MKII\ to \MKIV\ (because we load on demand and here %D the code is ude sindirectly). %D %D Nowadays we could layers instead which is probably a bit more ligthweight than %D widgets. Also, we should actually synchronize the time but on the other hand, but %D on the other hand, now it's a sort of stopwatch. % \nopdfcompression \starttext \useJSscripts[fld] \useJSpreamble[FieldStack] \definepapersize [clock] [width=2.5cm, height=2.5cm] \setuppapersize [clock][clock] \setuplayout [header=0pt, footer=0pt, backspace=.25cm, topspace=.25cm, width=middle, height=middle] \startJSpreamble stepper used now var state = 0 ; var more = 0 ; var step = 0 ; function step_clock() { try { if (more == 60) { more = 0 ; Walk_Field("more") ; } else { } more += 1 ; Walk_Field("clock") ; this.dirty = false ; } catch (e) { } } function start_clock() { try { if (state == 0) { step = app.setInterval ("step_clock()", 1000) ; step.count = 0 ; state = 1 ; } else if (state == 1) { app.clearInterval (step) ; state = 2 ; } else if (state == 2) { app.clearInterval (step) ; Reset_Fields("more") ; Reset_Fields("clock") ; Set_Field("more", "1") ; Set_Field("clock", "1") ; more = 0 ; state = 0 ; } } catch(e) { } } function stop_clock () { try { app.clearInterval(step) ; } catch(e) { } } \stopJSpreamble \definereference[StopClock] [JS(stop_clock)] \definereference[StartClock][JS(start_clock)] \setupinteraction [state=start, closeaction={StopClock,ForgetChanges}, closepageaction={StopClock}] \startreusableMPgraphic{common} drawoptions(withpen pencircle scaled 1mm withcolor .4white) ; fill fullsquare scaled 2.5cm ; drawoptions(withpen pencircle scaled 1mm withcolor .6green) ; draw fullsquare scaled 2.5cm ; drawoptions(withpen pencircle scaled 1mm withcolor .6red) ; draw fullcircle scaled 2cm ; drawoptions(withpen pencircle scaled 2mm withcolor .6yellow) ; for i=1 upto 12 : draw (0,1cm) rotated ((i-1)*(360/12)) ; endfor ; \stopreusableMPgraphic \startuseMPgraphic{clock} numeric stp ; stp := (\MPvar{n}-1)*(360/60) ; pair p ; p := (0,\MPvar{l}-.5mm) ; drawoptions(withpen pencircle scaled 1mm withcolor .6\MPvar{c}) ; draw (origin -- p) rotated -stp ; draw (p shifted (-2mm,-2.5mm)--p--p shifted (2mm,-2.5mm)) rotated -stp ; setbounds currentpicture to fullsquare scaled 2cm ; drawoptions(withpen pencircle scaled 2mm withcolor .6white) ; draw origin ; \stopuseMPgraphic \defineoverlay [common] [\reuseMPgraphic{common}] \defineoverlay [start] [\overlaybutton{StartClock}] \setupbackgrounds [page] [background={common,start}] \let\clocklist\empty \let\morelist \empty \dorecurse {60} { \appendtocommalist{step:#1}\clocklist \definesymbol [step:#1] [\useMPgraphic{clock}{n=#1,l=1cm,c=blue}] \appendtocommalist{more:#1}\morelist \definesymbol [more:#1] [\useMPgraphic{clock}{n=#1,l=.75cm,c=green}] } \definefieldstack [clock] [\clocklist] [width=2cm,height=2cm,offset=overlay,frame=off] \definefieldstack [more] [\morelist] [width=2cm,height=2cm,offset=overlay,frame=off] \starttext \startoverlay {\fieldstack[more]} {\fieldstack[clock]} \stopoverlay \stoptext