@@ -2,12 +2,27 @@ import { getList } from "../server";
22import { AutoGrid } from "../autoGrid" ;
33import { getCardElement } from "./card" ;
44
5- var PATH = "" ;
5+ var PATH = "" ,
6+ INITIALIZED = false ;
7+
8+ let initCallbacks = [ ] ;
69
710/**
811 * @type {AutoGrid }
912 */
10- let grid = null ;
13+ let grid = onInit ( ( ) => grid = new AutoGrid ( document . querySelector ( "#classBuilderBody" ) ) ) ;
14+ /**
15+ * @type {HTMLElement }
16+ */
17+ let backButton = onInit ( ( ) => {
18+
19+ backButton = document . querySelector ( "#backButton" ) ;
20+ backButton . addEventListener ( "click" , ( ) => {
21+ if ( PATH === "" ) return ;
22+ loadLevel ( PATH . replace ( / \. ? [ ^ \. ] + $ / , "" ) ) ;
23+ } ) ;
24+
25+ } ) ;
1126
1227function orderData ( data ) {
1328 var sortable = [ ] ,
@@ -28,9 +43,16 @@ function orderData (data) {
2843}
2944
3045export function loadLevel ( level ) {
46+
3147 PATH = level ;
3248 grid . clear ( ) ;
49+
50+ if ( PATH === "" )
51+ backButton . style . display = "none" ;
52+
3353 getList ( "SAMPLES" , PATH , ( data ) => {
54+ if ( PATH !== "" )
55+ backButton . style . display = "" ;
3456 data = orderData ( data ) ;
3557 for ( let obj in data ) {
3658 grid . applyChild ( getCardElement ( data [ obj ] ) ) ;
@@ -39,9 +61,20 @@ export function loadLevel (level) {
3961
4062}
4163
64+ export function onInit ( callback ) {
65+ if ( typeof callback !== "function" ) throw new Error ( `onInit requires function` ) ;
66+ if ( INITIALIZED )
67+ callback ( ) ;
68+ else
69+ initCallbacks . push ( callback ) ;
70+ return "Duck" ;
71+ }
72+
4273export function init ( ) {
4374
44- grid = new AutoGrid ( document . querySelector ( "#classBuilderBody" ) ) ;
75+ INITIALIZED = true ;
76+ initCallbacks . forEach ( cb => cb ( ) ) ;
77+ initCallbacks = [ ] ;
4578
4679 loadLevel ( PATH ) ;
4780
0 commit comments