Лучший (поддерживаемый) способ показать / скрыть столбцы HTML-таблицы и сохранить настройки столбцов в базе данных - PullRequest
1 голос
/ 28 декабря 2011

Я работаю на платформе отчетности, которая использует Spring, BIRT, jQuery и hibernate.

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

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

Для каждого отчета (их много) у нас есть файл .properties, в котором перечислены все столбцы отчета. Это свойство читается, и с его помощью мы генерируем диалог со списком всех столбцов и флажков рядом с ними, когда пользователи выбирают / отменяют выбор столбцов и нажимают «сохранить», мы создаем массивы 0 и 1 (например, 0011111111, здесь первые 2 столбцы скрыты, и последние 8 отображаются), передайте этот массив в BIRT, чтобы сгенерировать новую HTML-таблицу с соответствующими столбцами, показанными или скрытыми, и мы также сохраняем этот массив с нулями и единицами в качестве пользовательских настроек в нашей базе данных.

Кто-нибудь может предложить лучший подход к решению этой проблемы?

Я хочу, чтобы вам не приходилось обновлять все пользовательские настройки в БД и файле отчета .properties каждый раз, когда мы добавляем / удаляем / обновляем столбцы в отчете (это нужно сделать, потому что это изменится) расположение 0 и 1 в массиве).

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

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

Таблицы будут связаны как

reports 1<-->n columns 0..n<-->0..m users
0 голосов
/ 28 декабря 2011

Используйте схему JSON для представления конфигурации таблицы.Поскольку он не доступен для поиска, не индексируется и не связан ни с чем другим, просто сохраните его в виде текстового объекта в базе данных.

...