forked from algorithm-visualizer/algorithm-visualizer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
75 lines (61 loc) · 1.63 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
'use strict';
const RSVP = require('rsvp');
const app = require('./app');
const AppConstructor = require('./app/constructor');
const DOM = require('./dom');
const Server = require('./server');
const modules = require('./module');
const {
extend
} = $;
$.ajaxSetup({
cache: false,
dataType: 'text'
});
const {
isScratchPaper
} = require('./utils');
const {
getPath
} = require('./server/helpers');
// set global promise error handler
RSVP.on('error', function (reason) {
console.assert(false, reason);
});
$(() => {
// initialize the application and attach in to the instance module
const appConstructor = new AppConstructor();
extend(true, app, appConstructor);
// load modules to the global scope so they can be evaled
extend(true, window, modules);
Server.loadCategories().then((data) => {
app.setCategories(data);
DOM.addCategories();
// determine if the app is loading a pre-existing scratch-pad
// or the home page
const {
category,
algorithm,
file
} = getPath();
if (isScratchPaper(category)) {
if (algorithm) {
Server.loadScratchPaper(algorithm).then(({category, algorithm, data}) => {
DOM.showAlgorithm(category, algorithm, data);
});
} else {
Server.loadAlgorithm(category).then((data) => {
DOM.showAlgorithm(category, null, data);
});
}
} else if (category && algorithm) {
DOM.showRequestedAlgorithm(category, algorithm, file);
} else {
DOM.showFirstAlgorithm();
}
});
Server.loadWikiList().then((data) => {
app.setWikiList(data.wikis);
DOM.showWiki('Tracer');
})
});