Ввод значений имперской длины в веб-форму - PullRequest
1 голос
/ 29 мая 2009

Я живу в Австралии и не слишком много занимался измерением имперской длины.

Как бы вы заставили пользователей вводить измерения имперской длины в веб-форму с точностью до 1/64 дюйма? Я думал о нескольких способах сделать это, но я не знаю, существует ли стандартный способ сделать это, к которому привыкли бы пользователи в строительной отрасли в США.

Вариант 1 Одно большое текстовое поле, которое пользователи затем будут набирать 5'11 "63/64 (5 футов, 11,984375 дюймов), которое затем я буду анализировать и хранить в БД в миллиметрах.

Вариант 2 Одно текстовое поле для футов, одно текстовое поле для дюймов и одно выпадающее окно с [1 / 64,1 / 32, ..., 63/64] для дробной части дюймов, которая затем будет сохранена в БД в миллиметрах.

Вариант 3 Что-то еще ...

Ответы [ 4 ]

2 голосов
/ 29 мая 2009

Я бы выбрал вариант 2 по следующим причинам.

  • это упрощает ваше кодирование (и для меня это большое, потому что по сути ленив).
  • это дает вам больший контроль над тем, что вводится.
  • дает понять пользователю, что ему разрешено вводить.

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

Мои собственные мысли заключаются в том, что вы должны хранить вещи так же точно, как вы просите пользователя войти, и если, как вы говорите, вам действительно нужна точность до 1/64 th дюйма, потеря этой точности когда вы помещаете их в базу данных, это не будет хорошо, когда вам придется объяснять это своим пользователям.

Вы можете сделать одно из:

  • храните их как 64 тыс. дюйма (так что 5'11 "63/64 становится 5x12x64 + 11x64 + 63 или 1007).
  • храните их в виде числа с плавающей запятой (мм или дюймы, вплоть до вас), но при отображении конвертируйте их обратно в имперские.
  • храните их как три отдельных целочисленных поля, футы, дюймы и 64 тыс. дюйма.

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

Это преобразование является простым процессом (в отличие от метрических и имперских).

1 голос
/ 30 мая 2009

Я одобряю ответ Пола Фишера, но я все равно хотел бы предложить свой, отчасти потому, что чувствую, что у меня есть комментарии, которые нужно добавить более чем в 600 символов. ;)

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

Я также склоняюсь к интерфейсу с двумя полями. Лично я бы заставил парсер обрабатывать как десятичный, так и дробный ввод (допуская либо «11 .25», либо «11 1/4»). Вы должны будете выяснить, что делать, когда они выбирают что-то, что не является двоичной дробью, например 5/7 (когда они, вероятно, имели в виду 5/8, например).

Что касается хранения, я думаю, вы могли бы идти с миллиметрами, если это поплавок. Было бы удобнее хранить дюймы, потому что если все ваши значения кратны 64-м дюймам, у вас не должно быть проблем с округлением. Я согласен с Паксом в том, что важно иметь возможность вернуть его пользователю в имперских единицах, в комплекте с уменьшенными долями. (Может быть, это большое предположение, которое я делаю в отношении строительной индустрии. Насколько я знаю, они нормализуют все до 64-х и счастливее видеть «11 16/64», чем «11 1/4»!)

1 голос
/ 30 мая 2009

Я бы выбрал текстовое поле для ног и текстовое поле для дюймов. Разрешить пользователю ставить дробные дюймы через пробел. Обязательно предоставьте пример использования рядом с областью ввода. Например:

[5___] feet, [11 3/4_] inches
Example: [6] feet, [1 1/4] inches

Это кажется хорошим компромиссом между естественным вводом и разборчивостью, поэтому вам не нужно беспокоиться обо всех возможных методах, которые люди используют для разграничения футов и дюймов (ft, ', f, - и т. Д.), Но люди по-прежнему могут легко вводить любые единицы, которые им нравятся.

0 голосов
/ 29 мая 2009

Я не знаю, квалифицируется ли это как «ответ», но если бы я это сделал, я бы попытался обойтись, просто предложив одно поле в футах или дюймах, в зависимости от ожидаемого диапазона.

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

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