Логика запуска приложения

  1. Стартует код
    $(function () {
        lemurro.start();
    });
    
  2. Инициализируется роутер
  3. Подключаются маршруты из конфига
  4. Запускается роутер и отрабатывается маршрут
  5. Если это не первый запуск приложения, а просто переход из раздела в раздел, тогда загружается страница определённая маршрутизатором и сразу выполняется шаг №16
  6. Инициализируется ядро lemurro.init();
    • lemurro.sessionID = '';
    • lemurro.userinfo = {};
    • lemurro.lightajax = new LightAjax(...);
  7. Подключается сборщик ошибок js
  8. Инициализируется форма входа в зависимости от настроек
  9. Достаётся из локального хранилища ИД сессии, если есть продолжаем, иначе открывается форма входа
    • lemurro.sessionID = '...';
  10. Достаётся из локального хранилища ИД прошлой сессии, если есть показываем кнопку Вернуться в верхнем меню пользователя
  11. Запускается проверка сессии, если успешно выполнено продолжаем, иначе открывается форма входа
  12. Запускается получение информации о пользователе, если успешно выполнено продолжаем, иначе открывается форма входа
    • lemurro.userinfo = result.data;
  13. Исходя из прав доступа пользователя настраивается показ элементов (пунктов меню и т.п.)
  14. Приложение успешно стартовало:
    • Устанавливается app.started = true;
    • Скрывается более ненужный оверлей прелоадера
    • Запускается app.init(lemurro._loadPage);
  15. Выполняется app.init(); после его выполнения вызывается переданный callback();, который запускает lemurro._loadPage
  16. Выполняется lemurro._loadPage();
    • Устанавливается title
    • Сбрасывается активность со всех ссылок .js-link в шапке header
    • Устанавливается активность ссылок .js-link в шапке header в зависимости от раздела который открылся
    • Обновляются ссылки на странице с атрибутом data-navigo
    • Подключается Inputmask для всех классов .js-mask на странице #js-page (маска используется из атрибута data-mask)
    • Подключается Select2 для всех классов .js-select2 на странице #js-page
    • Подключается jQuery.TableFilter для всех классов .tablefilter на странице #js-page
    • Если переменная app.page.onLoad не пустая, тогда запускается выполнение находящейся там функции app.page.onLoad();, например: example.init();