@@ -2,11 +2,11 @@ import "./redux/assets/style/app.scss";
2
2
import { nav } from "./redux/views/nav/nav" ;
3
3
import ResizablePanel from "./redux/views/panels/resizablePanel" ;
4
4
import ViewWindow from "./redux/views/panels/viewWindow" ;
5
+ import { state } from "./app/state" ;
5
6
import {
6
7
detectCanTrigger ,
7
8
detectDownArea ,
8
- scaleChart ,
9
- translateChart ,
9
+ translateSvgChart ,
10
10
} from "./util/tool" ;
11
11
import { player } from "./redux/views/slider/player" ;
12
12
import { BTN_CLS } from "./redux/views/buttons/button-consts" ;
@@ -19,11 +19,8 @@ import {
19
19
import { sysMenu } from "./redux/views/menu/systemMenu" ;
20
20
import KfItem from "./redux/views/vl/kfItem" ;
21
21
import KfGroup from "./redux/views/vl/kfGroup" ;
22
- import { store } from "./redux/store" ;
23
22
import {
24
- CHART_VIEW_CONTENT_ID ,
25
23
CHART_VIEW_TITLE ,
26
- KF_VIEW_CONTENT_ID ,
27
24
KF_VIEW_TITLE ,
28
25
} from "./redux/views/panels/panel-consts" ;
29
26
import {
@@ -38,14 +35,12 @@ import { sketchCanvas } from "./redux/views/panels/sketchCanvas";
38
35
import {
39
36
dragging ,
40
37
zoomChart ,
41
- DRAGGING ,
42
- ZOOM_CHART ,
43
38
toggleSystemTouch ,
39
+ DRAGGING ,
44
40
} from "./redux/views/panels/interactions" ;
45
- import { toggleVideoMode } from "./redux/action/videoAction" ;
46
- import { jsTool } from "./util/jsTool" ;
47
41
import { markSelection } from "./util/markSelection" ;
48
42
import AniMIL from "./mil/AniMIL" ;
43
+ import panzoom from "panzoom" ;
49
44
import { kfContainer } from "./redux/views/vl/kfContainer" ;
50
45
function app ( ) : HTMLDivElement {
51
46
const outerWrapper : HTMLDivElement = document . createElement ( "div" ) ;
@@ -58,6 +53,7 @@ function app(): HTMLDivElement {
58
53
} ) ;
59
54
innerWrapper . wrapper . classList . add ( "inner-wrapper" ) ;
60
55
56
+ //create main panels
61
57
//create chart view
62
58
const chartView : ViewWindow = new ViewWindow ( CHART_VIEW_TITLE , false ) ;
63
59
chartView . createView ( ) ;
@@ -71,63 +67,44 @@ function app(): HTMLDivElement {
71
67
outerWrapper . appendChild ( innerWrapper . wrapper ) ;
72
68
73
69
nav . createNav ( ) ;
70
+
74
71
outerWrapper . appendChild ( nav . navContainer ) ;
72
+ // Ava.init();
75
73
return outerWrapper ;
76
74
}
77
- let lastUpTime : number = 0 ;
78
- let lastDownTime : number = 0 ;
79
- let isDoubleTapping : boolean = false ;
80
75
81
- const documentPointerDown = ( e : PointerEvent ) => {
82
- e . preventDefault ( ) ;
83
- const target = < HTMLElement > e . target ;
84
-
85
- if (
86
- detectCanTrigger ( target , NON_SKETCH_CLS ) &&
87
- ( e . pointerType === "pen" || e . pointerType === "mouse" )
88
- ) {
89
- sketchCanvas . toggleSketching ( true , { x : e . clientX , y : e . clientY } ) ;
90
- } else if ( e . pointerType === "touch" ) {
91
- e . preventDefault ( ) ;
92
- lastDownTime = new Date ( ) . getTime ( ) ;
93
- const currentTime : number = new Date ( ) . getTime ( ) ;
94
- const diffTime : number = currentTime - lastUpTime ;
95
- isDoubleTapping = diffTime <= DOUBLE_TAP_TIME ;
96
- if ( isDoubleTapping ) {
97
- //double tapping
98
- const chartArea : DOMRect = document
99
- . getElementById ( CHART_VIEW_CONTENT_ID )
100
- . getBoundingClientRect ( ) ;
101
- const kfArea : DOMRect = document
102
- . getElementById ( KF_VIEW_CONTENT_ID )
103
- . getBoundingClientRect ( ) ;
104
- if ( jsTool . inBoundary ( chartArea , { x : e . clientX , y : e . clientY } ) ) {
105
- if ( player . shown ) {
106
- store . dispatchSystem ( toggleVideoMode ( false ) ) ;
107
- } else {
108
- store . dispatchSystem ( toggleVideoMode ( true ) ) ;
109
- }
110
- } else if ( jsTool . inBoundary ( kfArea , { x : e . clientX , y : e . clientY } ) ) {
111
- }
112
- }
113
- }
114
- document . addEventListener ( "pointermove" , documentPointerMove ) ;
115
- document . addEventListener ( "pointerup" , documentPointerUp ) ;
116
- } ;
117
76
const documentPointerMove = ( e : PointerEvent ) => {
118
- e . preventDefault ( ) ;
119
77
if ( e . pointerType === "pen" || e . pointerType === "mouse" ) {
120
78
sketchCanvas . drawing ( e ) ;
121
79
}
122
80
} ;
81
+
82
+ let lastUpTime : number = 0 ;
83
+ let lastDownTime : number = 0 ;
84
+ let isDoubleTapping : boolean = false ;
85
+
86
+ let lastDownTimeSelect : number = 0 ;
87
+ let lastUpTimeSelect : number = 0 ;
123
88
const documentPointerUp = ( e : PointerEvent ) => {
124
89
e . preventDefault ( ) ;
90
+ lastUpTimeSelect = e . timeStamp ;
125
91
KfItem . endDragging ( ) ;
126
92
if (
127
93
sketchCanvas . sketching &&
128
94
( e . pointerType === "pen" || e . pointerType === "mouse" )
129
95
) {
130
- sketchCanvas . endSketch ( ) ;
96
+ lastUpTime = new Date ( ) . getTime ( ) ;
97
+ const currentTime : number = new Date ( ) . getTime ( ) ;
98
+ const diffTime : number = currentTime - lastDownTime ;
99
+
100
+ const targetPnt : ICoord = { x : e . clientX , y : e . clientY } ;
101
+ const targetArea : number = detectDownArea ( targetPnt )
102
+ switch ( targetArea ) {
103
+ case TARGET_CHART :
104
+ sketchCanvas . endDrawingChart ( ) ;
105
+ case TARGET_KEYFRAME :
106
+ sketchCanvas . endDrawingKeyframe ( ) ;
107
+ }
131
108
} else if ( e . pointerType === "touch" ) {
132
109
lastUpTime = new Date ( ) . getTime ( ) ;
133
110
const currentTime : number = new Date ( ) . getTime ( ) ;
@@ -144,27 +121,59 @@ const documentPointerUp = (e: PointerEvent) => {
144
121
document . removeEventListener ( "pointerup" , documentPointerUp ) ;
145
122
} ;
146
123
124
+ /**
125
+ * check whether the user is using pen or finger to select
126
+ * @param e
127
+ */
128
+ const documentPointerDown = ( e : PointerEvent ) => {
129
+ e . preventDefault ( ) ;
130
+ lastDownTimeSelect = e . timeStamp ;
147
131
132
+ const svg = document . getElementById ( 'chartContent' ) ;
133
+ if ( svg != null ) {
134
+ const panZooom = panzoom ( svg , {
135
+ maxZoom : 5 ,
136
+ minZoom : 0.4 ,
137
+ } )
138
+ }
139
+ const target = < HTMLElement > e . target ;
140
+ if (
141
+ detectCanTrigger ( target , NON_SKETCH_CLS ) &&
142
+ ( e . pointerType === "pen" || e . pointerType === "mouse" )
143
+ ) {
144
+ sketchCanvas . toggleSketching ( true , { x : e . clientX , y : e . clientY } ) ;
145
+ } else if ( e . pointerType === "touch" ) {
146
+ e . preventDefault ( ) ;
147
+ lastDownTime = new Date ( ) . getTime ( ) ;
148
+ const currentTime : number = new Date ( ) . getTime ( ) ;
149
+ const diffTime : number = currentTime - lastUpTime ;
150
+ isDoubleTapping = diffTime <= DOUBLE_TAP_TIME ;
151
+ // if (isDoubleTapping) {
152
+ // // double tapping
153
+ // const chartArea: DOMRect = document
154
+ // .getElementById(CHART_VIEW_CONTENT_ID)
155
+ // .getBoundingClientRect();
156
+ // const kfArea: DOMRect = document
157
+ // .getElementById(KF_VIEW_CONTENT_ID)
158
+ // .getBoundingClientRect();
159
+ // if (jsTool.inBoundary(chartArea, { x: e.clientX, y: e.clientY })) {
160
+ // if (player.shown) {
161
+ // } else {
162
+ // }
163
+ // } else
164
+ // if (jsTool.inBoundary(kfArea, { x: e.clientX, y: e.clientY })) {
165
+ // }
166
+ // }
167
+ }
168
+ document . addEventListener ( "pointermove" , documentPointerMove ) ;
169
+ document . addEventListener ( "pointerup" , documentPointerUp ) ;
170
+ } ;
148
171
document . addEventListener ( "pointerdown" , documentPointerDown ) ;
149
172
150
-
173
+ //cancel right click
151
174
document . oncontextmenu = ( ) => {
152
175
return false ;
153
176
} ;
154
-
155
- document . onkeyup = ( e ) => {
156
- var event : any = e || window . event ;
157
- var key = event . which || event . keyCode || event . charCode ;
158
- if ( key == 13 ) {
159
- } else if ( key == 32 ) {
160
- if ( player . playing ) {
161
- player . pauseAnimation ( ) ;
162
- } else {
163
- player . playAnimation ( ) ;
164
- }
165
- }
166
- } ;
167
-
168
177
document . body . appendChild ( app ( ) ) ;
169
178
document . oncontextmenu = ( e ) => {
170
179
e . preventDefault ( ) ;
@@ -175,12 +184,12 @@ documentTouch.add(callSysMenu);
175
184
documentTouch . add ( selectSysMenu ) ;
176
185
documentTouch . add ( dragging ) ;
177
186
documentTouch . add ( zoomChart ) ;
178
-
179
187
//chart pan & zoom
180
188
let preChartPosi : ICoord = null ;
181
189
let startChartPosi : ICoord = null ;
182
190
let directionLock : number = - 1 ;
183
191
let regionLock : number = - 1 ;
192
+ let preEvent : any = null ;
184
193
documentTouch . on ( DRAGGING , ( e : any ) => {
185
194
e . preventDefault ( ) ;
186
195
if ( e . pointerType === "touch" ) {
@@ -198,11 +207,10 @@ documentTouch.on(DRAGGING, (e: any) => {
198
207
break ;
199
208
}
200
209
regionLock = 0 ;
201
- translateChart (
202
- {
203
- x : currentPosi . x - preChartPosi . x ,
204
- y : currentPosi . y - preChartPosi . y ,
205
- } ,
210
+ translateSvgChart ( {
211
+ x : currentPosi . x - preChartPosi . x ,
212
+ y : currentPosi . y - preChartPosi . y ,
213
+ } ,
206
214
true
207
215
) ;
208
216
break ;
@@ -225,22 +233,24 @@ documentTouch.on(DRAGGING, (e: any) => {
225
233
directionLock === 0 ||
226
234
( directionLock !== 1 &&
227
235
Math . abs ( currentPosi . x - startChartPosi . x ) >
228
- Math . abs ( currentPosi . y - startChartPosi . y ) &&
236
+ Math . abs ( currentPosi . y - startChartPosi . y ) &&
229
237
Math . abs ( currentPosi . x - startChartPosi . x ) > 10 )
230
238
) {
231
239
directionLock = 0 ;
232
240
kfContainer . scroll ( {
233
241
w : - ( currentPosi . x - preChartPosi . x ) ,
242
+ // h: -(currentPosi.y - preChartPosi.y),
234
243
} ) ;
235
244
} else if (
236
245
directionLock === 1 ||
237
246
( directionLock !== 0 &&
238
247
Math . abs ( currentPosi . x - startChartPosi . x ) <
239
- Math . abs ( currentPosi . y - startChartPosi . y ) &&
248
+ Math . abs ( currentPosi . y - startChartPosi . y ) &&
240
249
Math . abs ( currentPosi . y - startChartPosi . y ) > 10 )
241
250
) {
242
251
directionLock = 1 ;
243
252
kfContainer . scroll ( {
253
+ // w: -(currentPosi.x - preChartPosi.x),
244
254
h : - ( currentPosi . y - preChartPosi . y ) ,
245
255
} ) ;
246
256
}
@@ -265,41 +275,6 @@ documentTouch.on(`${DRAGGING}end`, (e: any) => {
265
275
preChartPosi = null ;
266
276
} ) ;
267
277
268
- let preScale : number = - 1 ;
269
- let scaleStartPnt : ICoord = null ;
270
- let startScaleRatio : number = 0 ;
271
- documentTouch . on ( ZOOM_CHART , ( e : any ) => {
272
- e . preventDefault ( ) ;
273
- if ( preScale === - 1 ) {
274
- preScale = e . scale ;
275
- }
276
- if ( ! scaleStartPnt ) {
277
- scaleStartPnt = e . center ;
278
- startScaleRatio = store . getState ( ) . chartScaleRatio ;
279
- }
280
- const touchTarget : number = detectDownArea ( e . center ) ;
281
- if ( touchTarget & TARGET_CHART ) {
282
- const svg : HTMLElement = document . getElementById ( "visChart" ) ;
283
- const touchPntSvg : ICoord = jsTool . screenToSvgCoords (
284
- svg ,
285
- scaleStartPnt . x ,
286
- scaleStartPnt . y
287
- ) ;
288
- let touchPntSvgNoScale : ICoord = {
289
- x : touchPntSvg . x / startScaleRatio ,
290
- y : touchPntSvg . y / startScaleRatio ,
291
- } ;
292
- scaleChart ( e . scale - preScale , touchPntSvgNoScale ) ;
293
- preScale = e . scale ;
294
- }
295
- } ) ;
296
- documentTouch . on ( `${ ZOOM_CHART } end` , ( e : any ) => {
297
- e . preventDefault ( ) ;
298
- preScale = - 1 ;
299
- scaleStartPnt = null ;
300
- } ) ;
301
-
302
-
303
278
//system menu
304
279
documentTouch . on ( CALL_SYS_MENU , ( e : any ) => {
305
280
if ( e . pointerType === "touch" ) {
@@ -329,9 +304,11 @@ documentTouch.on(
329
304
) ;
330
305
331
306
sketchCanvas . initCanvas ( ) ;
307
+ //init styles
332
308
player . resizePlayer ( player . widget . clientWidth - 198 ) ;
309
+ state . reset ( true ) ;
333
310
334
311
window . onresize = ( ) => {
335
312
player . resizePlayer ( player . widget . clientWidth - 198 ) ;
336
313
sketchCanvas . updateCanvasSize ( ) ;
337
- } ;
314
+ } ;
0 commit comments