Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ns.update и ns.view: отображение ошибок #186

Merged
merged 17 commits into from
Jan 14, 2014

Conversation

chestozo
Copy link
Member

Без этих фиксов:

  • не загружается страница, если для синхронных view пришли невалидные модели
  • не рендерится состояние view ns-view-error-content

У нас - просто ничего не происходит (ns.Update тихо фейлится и всё).

if ( /.is_models_valid == false() ) {
apply . ns-view-error-content
// у ns.Box и ns.ViewCollection не бывает is_models_valid
if count(/.is_models_valid) && !/.is_models_valid {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поменялась только это строка, остальное отступ (можно по отдельным коммитам в PR это посмотреть).

@chestozo
Copy link
Member Author

Поговорили голосом с @doochik, постараюсь за выходные допилить:

  1. добавить метод ns.Update.handleError(models, modelErrors).
    Он должен возвращать true / false (по умолчанию возвращать будет false, чтобы не ломать совместимость с тем, как работает сейчас).
    true - всё хорошо, надо продолжить update и генерить html.
    false - оставить всё как есть - ну т.е. update зафейлился.

Хотели ещё в событии ns-page-before-load передавать promise от ns.Update, но мне вот сейчас кажется, что это всё можно сделать в ns.Update.handleError теперь. Предлагаю не делать )

Про обработку ошибок:
получается теперь приложение может отреагировать на полный треш (когда handlerError возвращет false) и на полутреш - рендерить view в состоянии ошибки (для этого даже придусмотрена сейчас специальная мода в yate - ns-view-error-content).

/cc @edoroshenko

@chestozo
Copy link
Member Author

Да, в шаблон буду передавать ещё не только .models, но и .modelErrors, тут https://github.com/yandex-ui/noscript/blob/master/src/ns.view.js#L1078

@chestozo
Copy link
Member Author

В общем, теперь можно переопределить метод обработки ошибок в ns.Update like this:

ns.Update.handleError = function(error, update) {
    if (update.isGlobal() && error.error === ns.U.STATUS.MODELS) {
        ns.page.go(ns.router.generateUrl('not-found', {}));
    }
    return false;
};

Надо ещё тесты, конечно, написать, а так готово!
Замечания / предложения?

@chestozo
Copy link
Member Author

chestozo commented Dec 7, 2013

Up

// записываем в историю все переходы
ns.history.pushState(url);
} else {
} else if (action === 'replace') {
ns.history.replaceState(url);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Странно, что эти изменения здесь видны. Они же уже в master

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне пришлось сюда их тоже замёржить, потому что мы не эту ветку смотрим у себя в проекте (нам нужен был этот патч).

@chestozo
Copy link
Member Author

chestozo commented Dec 9, 2013

@doochik обещал ещё сегодня посмотреть )

ns.page.go = function(url, action) {
if (!action) {
action = 'push';
} else if (action === true) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У тебя в jsdoc написано string

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это ваще не моё ) это я Игоря коммит подмёржил, потому что у нас проект на эту ветку смотрит сейчас )
Давай это отдельно потом поправим?

chestozo added 2 commits December 21, 2013 12:35
Added test for yate templates been built.
Build yate on publish (for Travis to build yate templates before
running tests).
@chestozo
Copy link
Member Author

up
/cc @edoroshenko @doochik

edoroshenko added a commit that referenced this pull request Jan 14, 2014
ns.update и ns.view: отображение ошибок
@edoroshenko edoroshenko merged commit c6ba4ef into master Jan 14, 2014
@edoroshenko edoroshenko deleted the errors.handling branch January 14, 2014 14:42
@chestozo
Copy link
Member Author

Hooray )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants