Play Framework: как визуализировать структуру таблицы из простой таблицы SQL - PullRequest
3 голосов
/ 21 февраля 2012

Я был бы рад получить хороший способ получить структуру "таблицы" из простой таблицы SQL.

В моем конкретном случае мне нужно отобразить структуру JSON, используемую объектом визуализации Google API визуализации: http://code.google.com/apis/chart/interactive/docs/reference.html#DataTable Тем не менее, наличие примера в HTML также поможет.

Мой «источник» - это простая SQL-таблица «DailySales»: столбцы «Day» (дата), «Product» и «DailySaleTotal» (ежедневная продажа для этого продукта). Пожалуйста, помните, что моя «модель» отражает таблицу из 3 столбцов, приведенную выше.

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

    Date             Product1   Product2   Product3
    01/01/2012       30         50         60
    01/02/2012       35         3          15

Я пытался использовать вложенные теги # {list} в шаблоне, но, к сожалению, мне не удалось найти естественный способ предоставления шаблона со списком для представления "данных строки".

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

Я был бы благодарен всем, кто может предложить элегантное решение.

Макс

Ответы [ 2 ]

2 голосов
/ 19 декабря 2012

Вместо того, чтобы генерировать JSON самостоятельно, как предложил Себ, вы можете сгенерировать его:

private static Result queryToJsonResult(String sql) {
  SqlQuery sqlQuery = Ebean.createSqlQuery(sql);
  return ok(Json.toJson(sqlQuery.findList()));
}
2 голосов
/ 16 июля 2012

При загрузке вашей модели заказывайте ее по дате и названию продукта.Затем в вашем контроллере создайте карту с датой в качестве индекса и списком объектов модели, которые имеют ту же дату, что и значение карты

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

Что-то вроде

[
#{list modelMap.keys, as: 'date'}
[${date},#{list modelMap.get(date), as: 'product'}${product.dailySaleTotal}#{ifnot product_isLast},#{/ifnot}#{/list}]#{ifnot date_isLast},#{/ifnot}
#{/list}
]

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

...