GUI в табличном виде. Как эргономично организ-ть работу?
От: _hum_ Беларусь  
Дата: 15.12.13 19:46
Оценка:
Ситуация такова. Пользователь должен вносить данные в программу через таблицу. Таблица при полном заполнении имеет сложную структуру, а именно, имеются вложенные таблицы,

1-ая строка, 1-ой столбец — номер группы участников,

1-ая строка, 1-ой столбец, 1-ая подстрока в ячейке — имя первого участника
1-ая строка, 1-ой столбец, 2-ая подстрока в ячейке — имя второго участника

1-ая строка, 3-ий столбец — девиз группы

Количество групп и участников в группах может быть разным, потому не хочется плодить таблицу сразу на максимально возможный вариант, а хочется, чтобы пользователь в процессе заполнения сам добавлял строки и подстроки по мере необходимости. Вопрос, как это в мировой практике принято делать? Вот смотрю в Word — там это через контекстное меню, типа "разбить ячейку на i-столбцов/ i-строк". Но, во-первых, контекстное меню не наглядно (не все мои пользователи продвинутые), во-вторых, слишком общо. Может, какие иконки "плюсиков" в самых последних строках за самым последним столбцом помещать, чтоб при нажатии добавлялась новая строка после текущей, к которой "плюсик привязан"?
Re: GUI в табличном виде. Как эргономично организ-ть работу?
От: maxkar  
Дата: 16.12.13 14:50
Оценка:
Здравствуйте, _hum_, Вы писали:

__>Ситуация такова. Пользователь должен вносить данные в программу через таблицу.

Сочувствую пользователю.

__>... потому не хочется плодить таблицу сразу на максимально возможный вариант

__> Может, какие иконки "плюсиков" в самых последних строках за самым последним столбцом помещать, чтоб при нажатии добавлялась новая строка после текущей, к которой "плюсик привязан"?

Ну начнем с того, что у вас на самом деле пользователь редактирует не таблицу, а список сущностей. При этом внутри у каждой сущности есть еще какой-то список. И обычно редактировать "списки сущностей" принято в виде списка сущностей.

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

Аналогичные варианты действуют и для списка участников в группе (кнопка для добавления, либо пустое поле со вводом). У вас там участники из списка выбриюатся или свободный ввод? Если из списка — можно поле "найти участника" сделать с автодополнением (точнее, поиском), которая при выборе в списке/нажатии enter добавляет нового участника в список. Или можно drag/drop из области "поиск пользователей" сделать (зависит от деталей сценариев).

Еще более интересные варианты возможны, если мы не слишком ограничены в средствах и можем рисовать "интерактивные" плашки (все для одной команды). Можно, например, "подсвечивать" поля ввода (номер группы, девиз, кнопки списка участников) при наведении мышки на плашку (или при фокусе ее с клавиатуры). В этом случае в момент активации "фиктивной" (без данных) плашки добавляется следующая, а эта перестает быть "фиктивной". Причем в момент наведения (и при активном фокусе внутри плашки) на плашке можно выводить красивые кнопки "вставить перед"/"вставить после". Ну да, discoverability немного страдает (не видно, что можно вставить плашку), но не сильно. В момент первого же редактирования пользователь увидит, что есть и эти действия при активной плашке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.