A small correction for Thymeleaf table:

<table>
 <tr>
    <th>HOST</th>
    <th th:each="ts: ${timestamps}" th:text="${ts}"/>
 </tr>
 <tr th:each="hostData: ${valuesByHost}">
    <td th:text="${hostData.key}"/>
    <td th:each="ts: ${timestamps}" th:text="${hostData.value.get(ts)}"/>
 </tr>
</table>

Of course I haven't tried running this for real, so there may be more issues 
with the example (esp. considering that I've never used Thymeleaf in my life :) 
), but it should give an idea.

Andrus


> On Aug 15, 2019, at 10:20 AM, Andrus Adamchik <and...@objectstyle.org> wrote:
> 
> Hi Keena,
> 
> The short answer is - write some Java code to transform the Cayenne result 
> into a data structure appropriate for Thymeleaf display. 
> 
> I don't know anything about Thymeleaf, but from quick googling, it might look 
> like this:
> 
> <table>
>  <tr>
>     <th>HOST</th>
>     <th th:each="ts: ${timestamps}" th:text="${ts}"/>
>  </tr>
>  <tr th:each="hostData: ${valuesByHost}">
>     <td th:each="ts: ${timestamps}" th:text="${hostData.get(ts)}"/>
>  </tr>
> </table>
> 
> 
> Now you need to build "timestamps" and "valuesByHost" collections:
> 
> List<UtilizationData> result = ...
> Set<LocalDateTime> timestampsUnsorted = new HashSet<>();
> Map<String, Map<LocalDateTime , Integer>> valuesByHost = new HashMap<>();
> 
> // iterate over "result", populating "timestampsUnsorted" and "valuesByHost" 
> from the object data
> ...
> 
> List<LocalDateTime> timestamps = new ArrayList<>(timestampsUnsorted);
> Collections.sort(timestamps);
> 
> HTH,
> Andrus
> 
> P.S. BTW, can you show your Cayenne query. You are saying that you have 
> ObjectSelect.columnQuery (which normally returns a List<Object> or 
> List<Object[]>), while your result seems to be a List<UtilizationData>, which 
> would be the case if you ran a regular (not column) ObjectSelect query.
> 
> 
>> On Aug 15, 2019, at 6:16 AM, Keena Grepo <keena.grepo...@gmail.com> wrote:
>> 
>> Hi, 
>> 
>> I have this data returned by ObjectSelect.columnQuery :
>> 
>> [{<ObjectId:UtilizationData, id=1>; committed; [hostname=>cc001; 
>> percentagePerHour=>100; timestamp=>2019-07-09 00:00:00]}, 
>> {<ObjectId:UtilizationData, id=2>; committed; [hostname=>cc001; 
>> percentagePerHour=>50; timestamp=>2019-07-09 01:00:00]}, 
>> {<ObjectId:UtilizationData, id=3>; committed; [hostname=>cc001; 
>> percentagePerHour=>50; ; timestamp=>2019-07-09 02:00:00]}, 
>> {<ObjectId:UtilizationData, id=4>; committed; [hostname=>cc001; 
>> percentagePerHour=>83; timestamp=>2019-07-09 03:00:00]}, ...]
>> 
>> And I want to display the data in a table with "HOST", and timestamps as 
>> table head. Then for the table data are the value of hostname and the 
>> percentagePerHour for each respective timestamp (like the sample table 
>> below). How can I achieve this? 
>> -------------------------------------------------------------------------------------------------------------------------------
>> | HOST  | 2019-07-09 00:00:00 | 2019-07-09 01:00:00 | 2019-07-09 02:00:00 | 
>> 2019-07-09 03:00:00 |
>> -------------------------------------------------------------------------------------------------------------------------------
>> | cc001  | 100                            | 50                               
>> | 50                              | 83                               |
>> -------------------------------------------------------------------------------------------------------------------------------
>> 
>> By the way, I am using Springboot + Thymeleaf.
>> 
>> Thanks.
> 

Reply via email to