oknosoft / windowbuilder

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

вывод дробной части размерных линий #471

Closed rnpoddor closed 6 years ago

rnpoddor commented 6 years ago

Актуально при отображении заполнений с раскладкой. Десятая часть в размерах нужна для проверки суммарного размера, например изделие

image

если размеры по y округлить при помощи метода toFixed(0), просуммировать все значения, будет расхождение по высоте в 2 мм. Появляются вопросы у пользователей. Чем больше кол-во секций у раскладки, тем расхождение может быть больше.

Данный код выводит десятую часть в размерах, там где она есть.

unpete commented 6 years ago

инфо: metadata добавляет в прототип Number методы pad и round - с ними код получается компактнее. https://github.com/oknosoft/metadata.js/blob/develop/packages/metadata-core/src/utils.js

Вывод дробной части обрамлю параметром builder_props. Свойство rounding, по умолчанию 0 - до миллиметров. При рендеренге эскиза микросервисом или печатной формой или безбумажкой, подсунете {rounding: 1} (или 2 - тогда до сотых, или {rounding: -1} - тогда до десятков миллиметров)

Пользуясь случаем, напомню, что аналогичное правило действует для валюты. Рублёвые заказы можно делать без копеек или вообще, округлять до 100 руб., а заказы в валюте учитывать с точностью до цента.

Включение долей миллиметра во всех размерах, могло бы удивить других пользователей сервиса.

unpete commented 6 years ago

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

rnpoddor commented 6 years ago

Можно дорабатывать печатные формы или безбумажку (не знаю, где вы используете эскизы раскладки)

В основном для получения заполнений с раскладкой из сервиса эскизов.

Включение долей миллиметра во всех размерах, могло бы удивить других пользователей сервиса.

Миллиметры бы отображались, если они есть, если десятая часть 0, выводились бы только целые числа. По мне так это плюс, можно наглядно видеть правильные, а не округленные размеры. Акцент был сделан на десятой части, а не на сотой, т.к. для производства это уже не критично, а расхождения в округленных занчениях в сумме ведут уже к нескольким миллиметрам.

unpete commented 6 years ago

По мне так это плюс

Я ценю и принимаю к сведению ваше мнение и мнения других людей. Вариант с управляемой разрядностью пока выглядит предпочтительнее.

rnpoddor commented 6 years ago

Как мне построить запрос на сервер эскизов с передачей значения для rounding?

unpete commented 6 years ago

запрос на сервер эскизов с передачей значения для rounding

Рад, что интерес к builder_props проснулся и у Экоокон. Другие клиенты давно используют и даже наделали модификаторами своей математики для рендеригна нестандартных элементов.

// пример для массива продукций:
/r/img/array/[
  {
    "calc_order": "eb23b5e6-62fc-4834-8dae-5e3cf24e97af",
    "product": 2,
    "elm": "",
    "builder_props": {"auto_lines":false},
    "select": "",
    "format": "png",
    "children": true
  }
]

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

Поддержку builder_props для единственного заказа с эскизами, добавил сегодня, см.: https://github.com/oknosoft/windowbuilder-reports/commit/272f2ca5deaea3a646eb5256fa332078eb3ecf68. За одно, drawer обновил. Параметры можно подмешать в url: /r/img/doc.calc_order/eb23b5e6-62fc-4834-8dae-5e3cf24e97af?glasses&builder_props={"rounding":1}

Обновил рендерер на вашем dev-сервере 217.197.251.195 - надо бы погонять-протестировать. Я снаружи не могу, т.к. порт 3021 виден только в вашей локальной сети.

rnpoddor commented 6 years ago

Про тестирование, комментарий 430582776.