Cool!thinking ... soon when I come back to this improvment, all will be done! 
:-)


      De : Marius Dumitru Florea <[email protected]>
 À : Pascal BASTIEN <[email protected]>; XWiki Users <[email protected]> 
 Envoyé le : Jeudi 15 janvier 2015 15h12
 Objet : Re: [xwiki-users] Add date of account creation (without time) in User 
Index problem
   
You can take a look at how I added the 'match' column parameter
recently 
https://github.com/xwiki/xwiki-platform/commit/aad969f6e51299d3f684b86101aa13c04519541c
.

Hope this helps,
Marius



On Thu, Jan 15, 2015 at 11:48 AM, Pascal BASTIEN
<[email protected]> wrote:
> Ok thxs you.I will let this improvment for later when I have less working 
> priority.
> Like the other said: "I'll be back" :-)
>
>      De : Clemens Klein-Robbenhaar <[email protected]>
>  À : [email protected]
>  Envoyé le : Mercredi 14 janvier 2015 18h28
>  Objet : Re: [xwiki-users] Add date of account creation (without time) in 
>User Index problem
>
> Ah, ok, now I understand (I hope) :)
>
> Indeed the livetable macro is in that place, but this is because the flamingo 
> skin overrides some of the macros;
> the "original" is actually here: 
> https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/macros.vm
>
> I guess both macros should be updated, as other skins will use the version in 
> xwiki-platform-web by default.
>
> (Btw, as the variant in the flamingo skin seems to be there to stay, I wonder 
> if one wants to split that file
> into two parts, one containing the macros overwritten in the flamingo-skin, 
> and the other one containing the common ones.
> Or is this considered an "API breakage" ?)
>
> Anyway, when adding a "dateformat" to one of the $columnsProperties it might 
> be still some way to go to get this working ...
> I just tried to track this down, and ended up with the following (any better 
> idea how to do it?)
>
>  - the livetable macro does not really render much stuff by itself, but 
>delegates most to the AJAX call
>  You can see that in the <script> part, where a JavaScript at the end of the 
>macro, where
>  the  function startup()  creates a JavaScript object : 
>XWiki.widgets.LiveTable  that does the actual loading
>
>  - just in case you wonder how this triggers the Ajax call, this JavaScript 
>class in turn is in the file
>      
>https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-web/src/main/webapp/resources/js/xwiki/table/livetable.js
>  but I guess that does not need to be touched. (at least)
>
>  - instead you can see how the AJAX-request parameters are put together in 
>the #livetable macro in
>
>    #set ($parameters = {
>      'outputSyntax': 'plain',
>      'transprefix': $transprefix,
>      'classname': $classname,
>      'collist': $stringtool.join($dataColumns, ','),
>      'queryFilters': $queryFilters
>    })
>
>  You can see these parameters are send via Ajax if you check your browsers 
>network tab.
>
>  So this would be the place to add more parameters.
>  However as you might see there are no column-specific parameters, only 
>"global" ones. So you need to invent a schema to pass these "parameters for 
>columns" in, too.
>  Maybe it might be easier to try to send a "global" dateformat, at least for 
>a first try? (I.e. "globally" used for all entries in the current livetable)
>
>  Anyway, these parameters are then send to the XWiki.LiveTableResults : 
>https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-livetable/xwiki-platform-livetable-ui/src/main/resources/XWiki/LiveTableResults.xml
> which in turn delegate most of the work into the  XWiki.LiveTableResultsMarco 
>  
> https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-livetable/xwiki-platform-livetable-ui/src/main/resources/XWiki/LiveTableResultsMacros.xml
> there the call chain in the velocity macros is:
>
>  gridresultwithfilter -> calls gridresultwithfilter_buildJSON  -> 
>gridresult_buildRowsJSON -> gridresult_buildRowJSON
>
> In the latter one you find the code which creates the (already formatted) 
> doc.creationDate (already formatted, because "Date" is no JSON data type that 
> can be passed around, and also formatting Dates in JavaScript + Timezone 
> issues = Desperation IMO)
> It is somewhere:
>  #set($discard = $row.put('doc_date', $xwiki.formatDate($translatedDoc.date)))
>  ....
>  #set($discard = $row.put('doc_creationDate', 
>$xwiki.formatDate($translatedDoc.creationDate)))
>
> Then this macro, for custom class property date columns, delegates to 
> gridresult_buildColumnJSON, which just called the "display" for that class 
> property and I guess that will ignore any attempts to change date formatting.
>
>
> It looks like after putting the date format into the request you would have 
> to read the format from the request in XWiki.LiveTableResults and pass it 
> around through all the macros ...
>
>
>
>> Yes I know that format_date parameter doesn't exist for the moment :-), I 
>> wanted to improve livetable macro (with pull request at the end I hope). I 
>> think I find where this macro 
>> is:https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-skin/src/main/resources/flamingo/macros.vmLine
>>  1261
>> #macro(livetable $divid $collist $colprops $options)
>> I saw the "Modify the JSON data ..." solution but afraid about "...since it 
>> would slow down your wiki a lot as it loads Doc"Thxs
>
> That "slow down your wiki" comment is only about the action happening in that 
> specific example, because it loads a document for every element in the result 
> set into memory.
> If you do something with the data already loaded I think it should not be too 
> inefficient.
> Personally I still think this is the way to go ...
>
>>
>>      De : Clemens Klein-Robbenhaar <[email protected]>
>>  À : [email protected]
>>  Envoyé le : Mardi 13 janvier 2015 16h10
>>  Objet : Re: [xwiki-users] Add date of account creation (without time) in 
>>User Index problem
>>
>>
>> On 01/13/2015 03:05 PM, Pascal BASTIEN wrote:
>>> Thxs a lot to explained me with clarity all of that and help me to 
>>> understand better XWiki.
>>> Then with what you give me, I tried to add a  format_date parameter () (or 
>>> regexp) in columns properties to improve livetable.
>>> I failed because I didn't manage to find where is store livetable macro :-))
>>>
>>> Something like this and next add a format date parameter in user index 
>>> customizer.
>>> #set($columns = ["_avatar", "first_name", "last_name", "email", 
>>> "doc.creationDate", "_actions"])
>>> #set($columnsProperties = {
>>>    "_avatar" : { "type" : "none", "link" : "none", "html" : "true", 
>>>"sortable":false },
>>>    "first_name" : { "type" : "text" , "size" : 20, "link" : "view"},
>>>    "last_name" : { "type" : "text", "link" : "view"},
>>>    "email" : { "type" : "text" },
>>>    "doc.creationDate" : { "type" : "date", "dateformat":"YYYY-mm" }
>>> })
>>
>> I am afraid that this does not work.
>> The supported options are documented here:
>>
>>  http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable+Macro
>>
>> and a 'dateformat' option is unfortunately not part of it.
>>
>> The problem is that in the end the #livetable macro turns out to make an 
>> AJAX call
>> to the code at the page XWiki.LiveTableResults ,  which in turn uses the 
>> XWiki.LiveTableResultsMacros
>> and the latter just calls  $xwiki.formatDate($itemDoc.creationDate)) without 
>> any custom format.
>>
>> What you can to is:
>>
>>  - either again patch that line of code in the XWiki.LiveTableResultsMacros 
>>with a date format of your choice
>>
>>  - or modify the results afterwards, as explained  
>>http://extensions.xwiki.org/xwiki/bin/view/Extension/Livetable+Macro#HCustomJSON
>>  (scroll down to the "Starting with XWiki Enterprise 4.0 you can modify the 
>>default JSON ...")
>>
>> the later would involve creating your own livetable result page, i.e. 
>> XWiki.LiveTableResultsNoTime
>> with e.g. the contents:
>>
>> {{include reference="XWiki.LiveTableResultsMacros" /}}
>>
>> {{velocity wiki="false"}}
>> #if("$!{request.xpage}" == 'plain')
>>  $response.setContentType('application/json')
>> #end
>> ##==================
>> ## Initialize the map that will store the JSON data.
>> ##==================
>> #set($map = {})
>> ##==================
>> ## Build the JSON in memory using the previous map
>> ##==================
>> #gridresult_buildJSON("$!request.classname" $request.collist.split(',') $map)
>> ##==================
>> ## Modify the JSON data from the map or add new data.
>> ##==================
>> #foreach($row in $map.get('rows'))
>>  #if($row.get('doc_creationDate'))
>>    #set($creation_date = $row.get('doc_creationDate'))
>>    #set($time_sep_index = $creation_date.indexOf(' '))
>>    #if($time_sep_index >=0)
>>      #set($creation_date_without_time = $creation_date.substring(0, 
>>$time_sep_index))
>>      #set($discard = $row.put('doc_creationDate', 
>>$creation_date_without_time ))
>>    #end
>>  #end
>> #end
>> ##==================
>> ## Serialize the map in the JSON format.
>> ##==================
>> $jsontool.serialize($map)
>> {{/velocity}}
>>
>> this mostly copy & paste from the LiveTable docs, expect for the "Modify the 
>> JSON data ..." part,
>> where the creation date field is simply cut off after the first space - 
>> quite hackish, but should work
>> for most date formats.
>>
>> Now when calling that page to get the results, everything must be put inside 
>> the 'url' option
>> so the $options change to:
>>
>> #set($options = {
>>  "url" : "$xwiki.getURL('XWiki.LiveTableResultsNoTime', 'get', 
>>'outputSyntax=plain&classname=XWiki.XWikiUsers&transprefix=xe.userdirectory.&collist=_avatar,first_name,last_name,email,doc.creationDate')",
>>  "rowCount": 10
>> })
>>
>> Afterwards it is just a matter of a few hours debugging with firebug etc 
>> until one finds the missing ')' or '"' that keeps things from working ;)
>>
>>
>> Oh, and come to think of it, the simplest solution would be to change
>> the XWiki date format the XWiki Admin to exclude the time - that would remove
>> the time everywhere, but I know people who actually like it. ;)
>>
>>
>>
>>
>>> #set($options = {
>>>  "className":"XWiki.XWikiUsers",
>>>  "translationPrefix" : "xe.index.users.",
>>>  "tagCloud" : true,
>>>  "rowCount": 10
>>> })
>>> #livetable("userdirectory" $columns $columnsProperties $options)
>> [...]
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/users
>>
>>
>>
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/users
>>
>
>
>
> mit freundlichen Grüßen
> Clemens Klein-Robbenhaar
>
> --
> Clemens Klein-Robbenhaar
> Software Development
> EsPresto AG
> Breite Str. 30-31
> 10178 Berlin/Germany
> Tel: +49.(0)30.90 226.763
> Fax: +49.(0)30.90 226.760
> [email protected]
>
> HRB 77554 B - Berlin-Charlottenburg
> Vorstand: Maya Biersack, Peter Biersack
> Vorsitzender des Aufsichtsrats: Dipl.-Wirtsch.-Ing. Winfried Weber
> Zertifiziert nach ISO 9001:2008
>
>
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/users
>
>
>
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/users

  
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to