oknosoft / windowbuilder

Окнософт:Заказ дилера
http://www.oknosoft.ru/zd/
Other
10 stars 19 forks source link

исправление поиска вставки по умолчанию в допах #512

Closed rnpoddor closed 5 years ago

rnpoddor commented 5 years ago

Ошибка в reduce, т.к. вторым параметром первоначальное значение не задано, а для пустого массива, его нужно указать. Ловлю у Калевы, т.к. для некоторых типов вставок, вставки отсутствуют и find_rows возвращает пустой массив с последующим обрушением reduce.

unpete commented 5 years ago

Как возникла ситуация для некоторых типов вставок вставки отсутствуют? Если вам не нужен некий тип вставок для данного абонента, его надо обрезать выше по стеку. Где точно - не помню, но список типов настраивает технолог + программист.

rnpoddor commented 5 years ago

Где точно - не помню, но список типов настраивает технолог + программист.

Постараюсь разобраться, но в алгоритме, где проверяется наличие найденной вставки, предусмотрен вывод диалога с сообщением Нет вставки подходящего типа, я сделал вывод, что проверка должна работать правильно. В любом случае это место не безопасное и лучше от него избавиться.

unpete commented 5 years ago

не безопасное и лучше от него избавиться

Избавиться через throw Error - хорошо. Чтобы технолог данные поправил. Избавиться умолчав о проблеме - не очень хорошо.

rnpoddor commented 5 years ago

Избавиться умолчав о проблеме - не очень хорошо.

Как умолчав, если диалог с сообщением оповестит о том что вставок для данного типа нет, это и есть сигнал для технолога. Не понимаю зачем сразу throw Error использовать, ведь в обоих случаях выводятся сообщения.

rnpoddor commented 5 years ago

Обновил ветку, по моей ошибке залетели изменения из другой задачи, которая еще не тестировалась.

unpete commented 5 years ago

Если это место и дорабатывать, надо сделать так, чтобы при отсутствии вставок некого типа, группа типа вставок не попадала в экранную форму. Тогда пользователь не попадёт в просак.

unpete commented 5 years ago

У find_inset() другая логика: он возвращает undefined, если вставка не найдена, а вы возвращаете пустую ссылку вставки.

rnpoddor commented 5 years ago

Ветку обновил.

Если это место и дорабатывать, надо сделать так, чтобы при отсутствии вставок некого типа, группа типа вставок не попадала в экранную форму. Тогда пользователь не попадёт в просак.

Учёл это требование.

У find_inset() другая логика: он возвращает undefined, если вставка не найдена, а вы возвращаете пустую ссылку вставки.

Исправил.

rnpoddor commented 5 years ago

Ветку обновил через rebase.

unpete commented 5 years ago

Исправление if(!group) -> if(!group || !find_inset.call({}, group)) принять могу. Оно действительно, повышает устойчивость компонента. Метод find_inset(insert_type) поправлю с учетом https://github.com/oknosoft/windowbuilder/commit/a63c73f9b98ad88da142918c1562f99bbeb99913, https://github.com/oknosoft/windowbuilder/commit/5ff89151e87ea234b1adcf002f9452be075f65e6 - теперь у нас есть возможность наложить динамический фильтр на список выбора для любого поля

unpete commented 5 years ago

https://github.com/unpete/ecookna/issues/679#issuecomment-491622365