index.js 2.0 KB
Newer Older
N
nem035 已提交
1 2 3
'use strict';

const RSVP = require('rsvp');
4
const app = require('./app');
N
nem035 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const AppConstructor = require('./app/constructor');
const DOM = require('./dom');
const Server = require('./server');

const modules = require('./module');

const {
  extend
} = $;

$.ajaxSetup({
  cache: false,
  dataType: 'text'
});

20 21 22 23 24
const {
  isScratchPaper
} = require('./utils');

const {
25 26
  getHashValue,
  getParameterByName,
27 28 29
  getPath
} = require('./server/helpers');

N
nem035 已提交
30
// set global promise error handler
31
RSVP.on('error', function (reason) {
N
nem035 已提交
32 33 34 35 36 37
  console.assert(false, reason);
});

$(() => {

  // initialize the application and attach in to the instance module
38 39
  const appConstructor = new AppConstructor();
  extend(true, app, appConstructor);
N
nem035 已提交
40 41 42 43 44

  // load modules to the global scope so they can be evaled
  extend(true, window, modules);

  Server.loadCategories().then((data) => {
45
    app.setCategories(data);
46
    DOM.addCategories();
N
nem035 已提交
47 48 49

    // determine if the app is loading a pre-existing scratch-pad
    // or the home page
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    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);
N
nem035 已提交
67 68 69 70
    } else {
      DOM.showFirstAlgorithm();
    }
  });
J
show md  
Jason Park 已提交
71 72

  Server.loadWikiList().then((data) => {
J
Jason Park 已提交
73
    app.setWikiList(data.wikis);
J
Jason Park 已提交
74 75

    DOM.showWiki('Tracer');
76 77 78 79 80 81 82 83 84
  });

  var v1LoadedScratch = getHashValue('scratch-paper');
  var v2LoadedScratch = getParameterByName('scratch-paper');
  var vLoadedScratch = v1LoadedScratch || v2LoadedScratch;
  if (vLoadedScratch) {
    window.location.href = window.location.protocol + '//' + window.location.host + window.location.pathname + '#path=scratch/' + vLoadedScratch;
  }

N
nem035 已提交
85
});