3
3
< head >
4
4
< link data-trunk rel ="css " href ="./styles.css " />
5
5
< link
6
- data-trunk
7
- rel ="rust " href ="../../Cargo.toml "
8
- data-bin ="cega-wasm "
9
- data-cargo-no-default-features
10
- data-cargo-features ="wasm "
6
+ data-trunk
7
+ rel ="rust " href ="../../Cargo.toml "
8
+ data-bin ="cega-wasm "
9
+ data-cargo-no-default-features
10
+ data-cargo-features ="wasm "
11
11
/>
12
12
< script data-trunk src ="./file-byte-reader.js "> </ script >
13
13
< script >
14
- let $ = ( query ) => document . querySelector ( query ) ;
14
+ const D = document ;
15
+ const $ = ( q , e = D ) => e . querySelector ( q ) ;
15
16
16
17
function fileLoaded ( array ) {
17
- let hash = new Map ( Object . entries ( window . wasmBindings . previews ( array ) ) ) ;
18
- hash . forEach ( ( images , key ) => {
19
- const container = document . createElement ( "preview-area" ) ;
18
+ let wrapper = $ ( 'preview-wrapper' ) ;
19
+ wrapper . textContent = "" ;
20
+ let parser_images = window . wasmBindings . previews ( array ) ;
21
+ for ( const [ key , images ] of Object . entries ( parser_images ) ) {
22
+ const container = D . createElement ( "preview-area" ) ;
23
+ container . innerHTML = `<h3>${ key } </h3>`
20
24
images . forEach ( src => container . appendChild ( new PreviewItem ( src ) ) ) ;
21
- $ ( 'preview- wrapper' ) . appendChild ( container ) ;
22
- } )
25
+ wrapper . appendChild ( container ) ;
26
+ }
23
27
}
24
28
25
- document . addEventListener ( "DOMContentLoaded" , ( ) => {
29
+ D . addEventListener ( "DOMContentLoaded" , ( ) => {
26
30
$ ( '#file-input' ) . addEventListener ( "file-byte-reader:loaded" ,
27
- e => fileLoaded ( e . detail )
31
+ e => {
32
+ if ( file = e . target . files [ 0 ] ) {
33
+ $ ( 'form' ) . style . display = "block" ;
34
+ $ ( '#file-name' ) . value = file . name ;
35
+ fileLoaded ( e . detail )
36
+ }
37
+ }
28
38
) ;
29
39
} ) ;
30
40
31
41
class PreviewItem extends HTMLElement {
32
42
constructor ( src ) {
33
43
super ( ) ;
34
44
const shadow = this . attachShadow ( { mode : "open" } ) ;
35
- const fragment = document . createRange ( ) . createContextualFragment ( '<h3></h3><img/>' ) ;
36
- const h3 = fragment . querySelector ( 'h3' ) ;
37
- this . img = fragment . querySelector ( " img" ) ;
45
+ const fragment = D . createRange ( ) . createContextualFragment ( '<h3></h3><img/>' ) ;
46
+ const h3 = $ ( 'h3' , fragment ) ;
47
+ this . img = $ ( ' img' , fragment ) ;
38
48
39
49
this . img . onload = function ( ) {
40
50
h3 . innerText = this . width ;
41
51
}
42
- this . img . src = src
52
+ this . img . src = src ;
53
+ this . addEventListener ( 'click' , this . onClick ) ;
43
54
shadow . appendChild ( fragment ) ;
44
55
}
56
+ onClick ( ) {
57
+ $ ( '#width' ) . value = this . img . width ;
58
+ }
45
59
}
46
60
customElements . define ( "preview-item" , PreviewItem ) ;
47
61
</ script >
48
62
</ head >
49
63
< body >
50
64
< h1 > Process your CGA/EGAs</ h1 >
51
- < input is ="file-byte-reader " id ="file-input " multiple ="true " accept =".bin,.cga,.ega,.cega " />
65
+ < input is ="file-byte-reader " id ="file-input " multiple ="false " accept =".bin,.cga,.ega,.cega " />
66
+ < form style ="display:none; ">
67
+ < label for ="file-name "> File name: </ label > < input name ="file-name " id ="file-name " />
68
+ < label for ="parser "> Parser: </ label >
69
+ < select name ="parser " id ="parser ">
70
+ < option disabled selected value > </ option >
71
+ < option value ="CGA "> CGA</ option >
72
+ < option value ="EGARowPlanar "> EGARowPlanar</ option >
73
+ </ select >
74
+ < label for ="width "> Width: </ label > < input name ="width " id ="width " />
75
+ </ form >
52
76
< preview-wrapper > </ preview-wrapper >
53
77
</ body >
54
78
</ html >
0 commit comments