|
1 | 1 | <App>
|
2 |
| - <Panel ux:Class="ClockTick" ux:Name="self"> |
3 |
| - <string ux:Property="Text"/> |
4 |
| - <float ux:Property="ClockValue"/> |
5 |
| - <Text Alignment="Center" Value="{ReadProperty self.Text}" FontSize="24" Color="0,0,0,1"/> |
| 2 | + <Panel ux:Class="ClockTick"> |
| 3 | + <string ux:Property="Text" /> |
| 4 | + <Text Alignment="Center" Value="{ReadProperty Text}" FontSize="24" /> |
6 | 5 | </Panel>
|
7 | 6 |
|
8 | 7 | <Panel ux:Class="ClockHand" Anchor="0%,50%" X="50%" Y="50%" Width="29.5%" Height="10%"
|
9 |
| - TransformOrigin="Anchor" ux:Name="selfTheHourLine" SnapToPixels="false"> |
| 8 | + TransformOrigin="Anchor" SnapToPixels="false"> |
10 | 9 | <Circle Alignment="CenterLeft" Height="20%" Aspect="1" BoxSizing="FillAspect"
|
11 |
| - Fill="0.2,0.8,1,0.4" Anchor="50%,50%" SnapToPixels="false"/> |
| 10 | + Color="#3df6" Anchor="50%,50%" SnapToPixels="false" /> |
12 | 11 | <Circle Alignment="CenterRight" Height="100%" Aspect="1" BoxSizing="FillAspect"
|
13 |
| - Fill="0.2,0.8,1,0.2" Anchor="50%,50%" SnapToPixels="false"/> |
| 12 | + Color="#3df3" Anchor="50%,50%" SnapToPixels="false" /> |
14 | 13 | <Circle Alignment="CenterRight" Height="20%" Aspect="1" BoxSizing="FillAspect"
|
15 |
| - Fill="0.2,0.8,1,0.4" Anchor="50%,50%" SnapToPixels="false"/> |
| 14 | + Color="#3df6" Anchor="50%,50%" SnapToPixels="false" /> |
16 | 15 | <Rectangle Alignment="VerticalCenter" Height="3%" MinHeight="1"
|
17 |
| - Fill="0.2,0.8,1,0.2" SnapToPixels="false"/> |
| 16 | + Color="#3df3" SnapToPixels="false" /> |
18 | 17 | </Panel>
|
19 | 18 |
|
20 |
| - <ClientPanel Background="0.8,0.8,0.8,1"> |
| 19 | + <ClientPanel Background="#ccc"> |
21 | 20 | <JavaScript>
|
22 |
| - var Observable = require("FuseJS/Observable") |
| 21 | + var Observable = require("FuseJS/Observable"); |
23 | 22 |
|
24 | 23 | function formatTime(x) {
|
25 |
| - var q = x.toFixed(0) |
| 24 | + var q = x.toFixed(0); |
26 | 25 | if (x < 10) {
|
27 |
| - return "0" + q |
| 26 | + q = "0" + q; |
28 | 27 | }
|
29 |
| - return q |
30 |
| - } |
31 |
| - |
32 |
| - exports.hoursX = Observable(0) |
33 |
| - exports.hoursY = Observable(0) |
34 |
| - exports.hours = Observable(function() { |
35 |
| - return exports.hoursX.value + exports.hoursY.value * 12 |
36 |
| - }) |
37 |
| - exports.displayHours = exports.hours.map(function(x) { |
38 |
| - return formatTime(x) |
39 |
| - }) |
40 |
| - exports.minutes = Observable(0) |
41 |
| - exports.displayMinutes = exports.minutes.map(function(x) { |
42 |
| - return formatTime(x) |
43 |
| - }) |
44 |
| - |
45 |
| - exports.selectHour = function(args) { |
46 |
| - exports.hoursX.value = args.value%12 |
47 |
| - exports.hoursY.value = Math.floor(args.value/12) |
48 |
| - } |
49 |
| - |
50 |
| - exports.selectMinute = function(args) { |
51 |
| - exports.minutes.value = args.value |
52 |
| - } |
| 28 | + return q; |
| 29 | + }; |
| 30 | + |
| 31 | + var hoursX = Observable(0); |
| 32 | + var hoursY = Observable(0); |
| 33 | + var hours = Observable(function() { |
| 34 | + return hoursX.value + hoursY.value * 12; |
| 35 | + }); |
| 36 | + var displayHours = hours.map(function(x) { |
| 37 | + return formatTime(x); |
| 38 | + }); |
| 39 | + |
| 40 | + var minutes = Observable(0); |
| 41 | + var displayMinutes = minutes.map(function(x) { |
| 42 | + return formatTime(x); |
| 43 | + }); |
| 44 | + |
| 45 | + module.exports = { |
| 46 | + hoursX: hoursX, |
| 47 | + hoursY: hoursY, |
| 48 | + displayHours: displayHours, |
| 49 | + minutes: minutes, |
| 50 | + displayMinutes: displayMinutes |
| 51 | + }; |
53 | 52 | </JavaScript>
|
| 53 | + |
54 | 54 | <WhileTrue ux:Name="ShowMinutes">
|
55 |
| - <Change HourSelect.Opacity="0" Duration="0.3"/> |
56 |
| - <Scale Target="HourSelect" Factor="1.5" Duration="0.3"/> |
57 |
| - <Change HourSelect.Visibility="Hidden" Delay="0.3"/> |
58 |
| - <Change MinuteSelect.Visibility="Visible"/> |
59 |
| - <Change HourSelect.IsEnabled="false"/> |
| 55 | + <Change HourSelect.Opacity="0" Duration="0.3" /> |
| 56 | + <Scale Target="HourSelect" Factor="1.5" Duration="0.3" /> |
| 57 | + <Change HourSelect.Visibility="Hidden" Delay="0.3" /> |
| 58 | + <Change MinuteSelect.Visibility="Visible" /> |
| 59 | + <Change HourSelect.IsEnabled="false" /> |
60 | 60 | </WhileTrue>
|
61 | 61 |
|
62 | 62 | <Panel Dock="Top" Margin="0,0,0,10">
|
63 | 63 | <StackPanel Orientation="Horizontal" Alignment="Center" ItemSpacing="10">
|
64 |
| - <Text ux:Class="ClockText" FontSize="24" Color="0,0.5,0.8,1"/> |
| 64 | + <Text ux:Class="ClockText" FontSize="24" Color="#08d" /> |
65 | 65 | <ClockText Value="{displayHours}" HitTestMode="LocalBounds">
|
66 | 66 | <Tapped>
|
67 |
| - <Set ShowMinutes.Value="false"/> |
| 67 | + <Set ShowMinutes.Value="false" /> |
68 | 68 | </Tapped>
|
69 | 69 | </ClockText>
|
70 |
| - <ClockText Value=":"/> |
| 70 | + <ClockText Value=":" /> |
71 | 71 | <ClockText Value="{displayMinutes}" HitTestMode="LocalBounds">
|
72 | 72 | <Tapped>
|
73 |
| - <Set ShowMinutes.Value="true"/> |
| 73 | + <Set ShowMinutes.Value="true" /> |
74 | 74 | </Tapped>
|
75 | 75 | </ClockText>
|
76 | 76 | </StackPanel>
|
|
84 | 84 |
|
85 | 85 | <CircularRangeBehavior ux:Name="HourSlide"
|
86 | 86 | StartAngleDegrees="-90" EndAngleDegrees="270"
|
87 |
| - MinimumRadius="0.59" MaximumRadius="0.83" IsWrapping="true"/> |
| 87 | + MinimumRadius="0.59" MaximumRadius="0.83" IsWrapping="true" /> |
88 | 88 |
|
89 | 89 | <ClockHand ux:Name="TheHourLine">
|
90 |
| - <Rotation ux:Name="HourRotate"/> |
| 90 | + <Rotation ux:Name="HourRotate" /> |
91 | 91 | <Attractor Target="HourRotate.Degrees" Value="{ReadProperty HourSlide.DegreesValue}"
|
92 |
| - Type="SmoothSnap" Unit="Degrees"/> |
93 |
| - |
| 92 | + Type="SmoothSnap" Unit="Degrees" /> |
94 | 93 | <Attractor Target="TheHourLine.Width" ux:Name="HourLineAttractor"
|
95 |
| - Type="SmoothSnap" Unit="Points"/> |
| 94 | + Type="SmoothSnap" Unit="Points" /> |
96 | 95 | <RangeAnimation Value="{ReadProperty HourSelect.ValueY}" Minimum="0" Maximum="1">
|
97 |
| - <Change HourLineAttractor.Value="41.5"/> |
| 96 | + <Change HourLineAttractor.Value="41.5" /> |
98 | 97 | </RangeAnimation>
|
99 | 98 | </ClockHand>
|
100 | 99 |
|
101 | 100 | <InteractionCompleted>
|
102 |
| - <Set ShowMinutes.Value="true"/> |
| 101 | + <Set ShowMinutes.Value="true" /> |
103 | 102 | </InteractionCompleted>
|
104 | 103 |
|
105 |
| - <Circle Layer="Background" Fill="1,1,1,1"/> |
| 104 | + <Circle Layer="Background" Color="#fff" /> |
106 | 105 | <Panel>
|
107 |
| - <CircleLayout Radius="0.75" StartAngleDegrees="-90" EndAngleDegrees="270"/> |
108 |
| - <ClockTick Text="00" ClockValue="0"/> |
109 |
| - <ClockTick Text="01" ClockValue="1"/> |
110 |
| - <ClockTick Text="02" ClockValue="2"/> |
111 |
| - <ClockTick Text="03" ClockValue="3"/> |
112 |
| - <ClockTick Text="04" ClockValue="4"/> |
113 |
| - <ClockTick Text="05" ClockValue="5"/> |
114 |
| - <ClockTick Text="06" ClockValue="6"/> |
115 |
| - <ClockTick Text="07" ClockValue="7"/> |
116 |
| - <ClockTick Text="08" ClockValue="8"/> |
117 |
| - <ClockTick Text="09" ClockValue="9"/> |
118 |
| - <ClockTick Text="10" ClockValue="10"/> |
119 |
| - <ClockTick Text="11" ClockValue="11"/> |
| 106 | + <CircleLayout Radius="0.75" StartAngleDegrees="-90" EndAngleDegrees="270" /> |
| 107 | + <ClockTick Text="00" /> |
| 108 | + <ClockTick Text="01" /> |
| 109 | + <ClockTick Text="02" /> |
| 110 | + <ClockTick Text="03" /> |
| 111 | + <ClockTick Text="04" /> |
| 112 | + <ClockTick Text="05" /> |
| 113 | + <ClockTick Text="06" /> |
| 114 | + <ClockTick Text="07" /> |
| 115 | + <ClockTick Text="08" /> |
| 116 | + <ClockTick Text="09" /> |
| 117 | + <ClockTick Text="10" /> |
| 118 | + <ClockTick Text="11" /> |
120 | 119 | </Panel>
|
121 | 120 | <Panel>
|
122 |
| - <CircleLayout ItemSpacingDegrees="5" StartAngleDegrees="-90" EndAngleDegrees="270"/> |
123 |
| - <ClockTick Text="12" ClockValue="12"/> |
124 |
| - <ClockTick Text="13" ClockValue="13"/> |
125 |
| - <ClockTick Text="14" ClockValue="14"/> |
126 |
| - <ClockTick Text="15" ClockValue="15"/> |
127 |
| - <ClockTick Text="16" ClockValue="16"/> |
128 |
| - <ClockTick Text="17" ClockValue="17"/> |
129 |
| - <ClockTick Text="18" ClockValue="18"/> |
130 |
| - <ClockTick Text="19" ClockValue="19"/> |
131 |
| - <ClockTick Text="20" ClockValue="20"/> |
132 |
| - <ClockTick Text="21" ClockValue="21"/> |
133 |
| - <ClockTick Text="22" ClockValue="22"/> |
134 |
| - <ClockTick Text="23" ClockValue="23"/> |
| 121 | + <CircleLayout ItemSpacingDegrees="5" StartAngleDegrees="-90" EndAngleDegrees="270" /> |
| 122 | + <ClockTick Text="12" /> |
| 123 | + <ClockTick Text="13" /> |
| 124 | + <ClockTick Text="14" /> |
| 125 | + <ClockTick Text="15" /> |
| 126 | + <ClockTick Text="16" /> |
| 127 | + <ClockTick Text="17" /> |
| 128 | + <ClockTick Text="18" /> |
| 129 | + <ClockTick Text="19" /> |
| 130 | + <ClockTick Text="20" /> |
| 131 | + <ClockTick Text="21" /> |
| 132 | + <ClockTick Text="22" /> |
| 133 | + <ClockTick Text="23" /> |
135 | 134 | </Panel>
|
136 | 135 | </RangeControl2D>
|
137 | 136 |
|
138 | 137 | <RangeControl Value="{minutes}" Minimum="0" Maximum="60" UserStep="5"
|
139 | 138 | ux:Name="MinuteSelect" Visibility="Hidden">
|
140 | 139 |
|
141 | 140 | <CircularRangeBehavior ux:Name="MinuteSlide"
|
142 |
| - StartAngleDegrees="-90" EndAngleDegrees="270" IsWrapping="true"/> |
| 141 | + StartAngleDegrees="-90" EndAngleDegrees="270" IsWrapping="true" /> |
143 | 142 |
|
144 | 143 | <ClockHand Width="41.5%">
|
145 |
| - <Rotation ux:Name="MinuteRotate"/> |
| 144 | + <Rotation ux:Name="MinuteRotate" /> |
146 | 145 | <Attractor Target="MinuteRotate.Degrees" Value="{ReadProperty MinuteSlide.DegreesValue}"
|
147 |
| - Type="SmoothSnap" Unit="Degrees"/> |
| 146 | + Type="SmoothSnap" Unit="Degrees" /> |
148 | 147 | </ClockHand>
|
149 | 148 |
|
150 |
| - <Circle Layer="Background" Fill="1,1,1,1"/> |
| 149 | + <Circle Layer="Background" Color="#fff" /> |
151 | 150 | <Panel>
|
152 |
| - <CircleLayout ItemSpacingDegrees="5" StartAngleDegrees="-90" EndAngleDegrees="270"/> |
153 |
| - <ClockTick Text="00" ClockValue="00"/> |
154 |
| - <ClockTick Text="05" ClockValue="05"/> |
155 |
| - <ClockTick Text="10" ClockValue="10"/> |
156 |
| - <ClockTick Text="15" ClockValue="15"/> |
157 |
| - <ClockTick Text="20" ClockValue="20"/> |
158 |
| - <ClockTick Text="25" ClockValue="25"/> |
159 |
| - <ClockTick Text="30" ClockValue="30"/> |
160 |
| - <ClockTick Text="35" ClockValue="35"/> |
161 |
| - <ClockTick Text="40" ClockValue="40"/> |
162 |
| - <ClockTick Text="45" ClockValue="45"/> |
163 |
| - <ClockTick Text="50" ClockValue="50"/> |
164 |
| - <ClockTick Text="55" ClockValue="55"/> |
| 151 | + <CircleLayout ItemSpacingDegrees="5" StartAngleDegrees="-90" EndAngleDegrees="270" /> |
| 152 | + <ClockTick Text="00" /> |
| 153 | + <ClockTick Text="05" /> |
| 154 | + <ClockTick Text="10" /> |
| 155 | + <ClockTick Text="15" /> |
| 156 | + <ClockTick Text="20" /> |
| 157 | + <ClockTick Text="25" /> |
| 158 | + <ClockTick Text="30" /> |
| 159 | + <ClockTick Text="35" /> |
| 160 | + <ClockTick Text="40" /> |
| 161 | + <ClockTick Text="45" /> |
| 162 | + <ClockTick Text="50" /> |
| 163 | + <ClockTick Text="55" /> |
165 | 164 | </Panel>
|
166 | 165 | </RangeControl>
|
167 | 166 |
|
|
0 commit comments