Примеры хорошего UI для выбора нескольких записей

Как я упомянул выше , мне пришлось использовать обратное решение (удаление всех коммитов, не касаясь моего dir/subdir/targetdir), которое, казалось, работало довольно хорошо, удаляя около 95% коммитов (по желанию). Однако остаются две небольшие проблемы.

ПЕРВЫЙ , filter-branch проделал большую работу по удалению коммитов, которые вводят или модифицируют код, но, очевидно, коммитов слияния находятся ниже его места в Gitiverse.

Это косметическая проблема, с которой я, вероятно, могу жить ( он говорит ... отступая медленно с отведенными глазами) .

ВТОРОЕ несколько оставшихся коммитов в значительной степени ВСЕ дублированы! Кажется, я приобрел второй, избыточный график, который охватывает почти всю историю проекта. Интересная вещь (которую вы можете увидеть из рисунка ниже) заключается в том, что мои три локальные ветви не все находятся на одной временной шкале (что, разумеется, почему оно существует, а не просто сбор мусора).

Единственное, что я могу себе представить, это то, что один из удаленных Коммиты, возможно, были единственным коммитом слияния, который filter-branch фактически удалил , и который создал параллельную временную шкалу, поскольку каждая теперь не слитая цепь получила свою собственную копию коммитов. ( пожимает плечами Где мои ТАРДИ?) Я почти уверен, что смогу решить эту проблему, хотя я очень очень хотел бы понять, как это произошло.

В случае сумасшедшего mergefest-O-RAMA я, скорее всего, оставлю его в покое, так как он так прочно укоренился в моей истории коммитов - угрожая мне, когда я подхожу, - кажется, это не так. на самом деле вызывает какие-то не косметические проблемы и потому что это довольно симпатично в Tower.app.

17
задан 6 revs 8 February 2017 в 14:13
поделиться

7 ответов

Это должно работать:


SHOW CREATE TABLE tbl_name

У вас должны быть привилегии SELECT для таблицы.

alt text

Связанные элементы перемещаются в «жесткую» область

Конечно, упорядоченным образом (с использованием таблицы)

  • Наконец, когда пользователь завершает привязку, он нажимает кнопки СОХРАНИТЬ или ОТМЕНА.

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

Кроме того, если вы заставляете пользователя хватать мышь, чтобы щелкнуть что-нибудь во время набора текста, пользовательский интерфейс будет менее эффективным (я думаю, что об этом есть что-то, называемое законом Хика , но, откровенно говоря, я могу ошибаться)

Как видите, этот подход уже в значительной степени то, что вы имеете в виду,

5
ответ дан 30 November 2019 в 14:25
поделиться

A search feature that filters records in real time as you type would probably be a good idea to include. Another would be the possibility to sort the records.

Since there may be a lot of records, the best choice in this case is probably to have a separate area which displays what you have already chosen, so that the user won't have to scroll around the selection areas to find what they already have.

2
ответ дан 30 November 2019 в 14:25
поделиться

Я бы посоветовал не нажимать добавить еще , чтобы иметь возможность искать. Предупреждение справа - это хорошо, но, IMHO, оно должно только сказать, что поиск отображает результаты по типу пользователя.

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

I ' d предлагает также выполнить поиск приблизительного сопоставления строк в случае, если результатов нет или мало. Так раздражает невозможность найти то, что вы точно не помните.

Наконец, для проверки первого впечатления (но не самой функциональности) я предлагаю загрузить его в 5-секундный тест и посмотрите, что у вас получится.

1
ответ дан 30 November 2019 в 14:25
поделиться

интуитивно понятный графический интерфейс http://img25.imageshack.us/img25/8568/28666917.png

Ссылка на исходное изображение

Другое дело, что на мой взгляд, ваша проблема заключается не в выборе нескольких записей, а в фильтрации этих десятков тысяч записей. Связь M-> M может быть реализована различными способами, но сложная часть состоит в том, чтобы обеспечить удобный и логичный способ просмотра / поиска огромного количества данных.

2
ответ дан 30 November 2019 в 14:25
поделиться

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

Существуют различные методы выбора. С точки зрения удобства использования было бы предпочтительно использовать только ОДИН метод для каждого сценария. Затем, когда пользователь увидит это, он будет знать, что делать.

различные методы выбора:

  1. раскрывающийся список - очевиден для одиночного выбора.
  2. открытый список множественного выбора - например: многострочное текстовое поле, которое показывает 10 или 20 строк и имеет раскрывающийся список с полосой прокрутки
  3. , где вы выбираете, затем нажимаете и нажимаете ссылку или кнопку «добавить», чтобы добавить несколько вариантов выбора
  4. перемещение списка - где у вас есть два открытых списка, со всеми вариантами, доступными в левом списке, вы выбираете несколько, а затем нажимаете кнопку, чтобы переместить ваш выбор в правый список.
  5. Флажки - подходят лишь для нескольких вариантов множественного выбора.
  6. Список элементов , рядом с каждым из которых есть кнопка «добавить» - хорошо для коротких списков

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

Если вы можете рассчитывать на то, что пользователь отфильтрует список, как в вашем примере, то 6 может подойти. Если вы подумаете о том, как работает тегирование изображений в Facebook, я думаю, что это довольно эффективно для длинных списков: background: Добавление тегов к изображениям в Facebook - это механизм, который позволяет вам назначать одного или нескольких людей на части изображения, т. Е. «Помечать» их.

Когда вы выбираете изображение для пометки (т.е. «отдельный элемент») и хотите связать других предметы (люди) к нему, появится диалоговое окно. Он содержит около 6 лучших имен, которые вы использовали в прошлом, и текстовое поле, в котором вы можете начать вводить имя человека, которое хотите использовать. По мере ввода список динамически изменяется, чтобы сократить количество людей до тех, которые содержат введенную вами последовательность букв. Это очень хорошо работает для больших списков, но для фильтрации требуется ввод текста пользователем. Он также будет полагаться на использование сценариев для разумного сокращения списка на основе ввода пользователя.

Для вашего приложения он будет полагаться на то, что пользователь выполняет этот шаг один раз для каждой ассоциации, поскольку I ' м предполагая, что не все предметы будут иметь похожие имена!

Вот изображение приложения для тегов Facebook: http://screencast.com/t/9MPlpJQJzBQ

3
ответ дан 30 November 2019 в 14:25
поделиться

Я думаю, что то, что вы смоделировали, - довольно хороший способ сделать это. Когда вы думаете об отношении тегов к сообщениям в блоге (или даже в SO), то это много ко многим, и обычно это реализуется очень похоже: для одного сообщения вы ищете (или, поскольку они просты строк, введите напрямую) столько тегов, сколько хотите связать с ним. Я не могу вспомнить какие-либо отношения «многие ко многим», с которыми я часто сталкиваюсь, хотя я знаю, что их, вероятно, много ...

0
ответ дан 30 November 2019 в 14:25
поделиться

Необходимо рассмотреть ряд важных вопросов - сколько записей обычно будет использоваться (в отличие от доступным для ассоциации)? Будет ли большое количество записей на одной стороне ассоциации (при переключении с 1 на> M это кажется вероятным)?

Если одно из количеств записей обычно очень мало (<10, я бы скажем), назовите это LHS (потому что это обычно так), тогда лучший способ связать может быть разрешить поиск элементов LHS и RHS, а затем перетащить их в список - элементы LHS в собственно список; Элементы RHS в существующие элементы LHS. Таким образом, будет интуитивно понятно указать отношение между элементами. Вы также можете добавить другие параметры, например «связать со всеми», или группирующее перо, чтобы вы могли назначить несколько записей нескольким другим записям - нет ничего утомительного, как необходимость выполнить 15 перетаскиваний одной и той же записи.

На самом деле, я думаю, что это самая важная часть любого M- > Дизайн пользовательского интерфейса M - минимизируйте повторение. Проделывать то же самое с сотнями записей (помните, что если «никто никогда не ...», они это сделают), это не повод для беспокойства, особенно если это сложно. Я знаю, что это противоречит моему предыдущему совету, но я не думаю, что это так - проектируйте для типичного случая использования, но убедитесь, что нетипичные варианты не сделают программу непригодной для использования.

Проделывать то же самое с сотнями записей (помните, что если «никто никогда не ...», они это сделают), это не повод для беспокойства, особенно если это сложно. Я знаю, что это противоречит моему предыдущему совету, но я не думаю, что это так - проектируйте для типичного случая использования, но убедитесь, что нетипичные варианты не сделают программу непригодной для использования.

Проделывать то же самое с сотнями записей (помните, что если «никто никогда не ...», они это сделают), это не повод для беспокойства, особенно если это сложно. Я знаю, что это противоречит моему предыдущему совету, но я не думаю, что это так - проектируйте для типичного случая использования, но убедитесь, что нетипичные варианты не сделают программу непригодной для использования.

0
ответ дан 30 November 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: