You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jspwiki.apache.org by Dirk Frederickx <di...@gmail.com> on 2009/02/03 22:48:16 UTC
Re: svn commit: r740438 - in /incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH:
ChangeLog src/com/ecyrd/jspwiki/Release.java src/webdocs/scripts/jspwiki-common.js
src/webdocs/templates/default/AttachmentTab.jsp src/webdocs/templates/default/InfoContent.
Yep. See http://www.jspwiki.org/wiki/SortableTables
dirk
On Tue, Feb 3, 2009 at 10:20 PM, Janne Jalkanen <ja...@ecyrd.com>wrote:
>
> Excellent. Could we also get this documented wherever "sortable" is
> documented? It might be very useful knowledge for e.g. plugin writers.
>
> /Janne
>
> On Feb 3, 2009, at 23:00 , brushed@apache.org wrote:
>
> Author: brushed
>> Date: Tue Feb 3 21:00:03 2009
>> New Revision: 740438
>>
>> URL: http://svn.apache.org/viewvc?rev=740438&view=rev
>> Log:
>> 2.8.2-svn-8
>> * JSPWIKI-480, fix sorting on timestamps (modified date) in the
>> Attachement and Info tab
>>
>> Modified:
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/ChangeLog
>>
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/com/ecyrd/jspwiki/Release.java
>>
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/scripts/jspwiki-common.js
>>
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/AttachmentTab.jsp
>>
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/InfoContent.jsp
>>
>> Modified: incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/ChangeLog
>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/ChangeLog?rev=740438&r1=740437&r2=740438&view=diff
>>
>> ==============================================================================
>> --- incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/ChangeLog (original)
>> +++ incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/ChangeLog Tue Feb 3
>> 21:00:03 2009
>> @@ -1,3 +1,15 @@
>> +2009-02-03 Dirk Frederickx <di...@gmail.org>
>> +
>> + * 2.8.2-svn-8
>> +
>> + * JSPWIKI-480, sorting on timestamps (modified date) in
>> + the Attachement tab and the Info tab was not always working,
>> + as timeformats are depending on the user-preferences.
>> + An invisible javascript parsable timeformat attribute is now
>> + added to the tables, independent of the user-preferred
>> timeformat.
>> + This attribute is used by the js sorting routines.
>> +
>> +
>> 2009-02-02 Dirk Frederickx <di...@gmail.org>
>>
>> * 2.8.2-svn-7
>>
>> Modified:
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/com/ecyrd/jspwiki/Release.java
>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/com/ecyrd/jspwiki/Release.java?rev=740438&r1=740437&r2=740438&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/com/ecyrd/jspwiki/Release.java
>> (original)
>> +++
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/com/ecyrd/jspwiki/Release.java
>> Tue Feb 3 21:00:03 2009
>> @@ -77,7 +77,7 @@
>> * <p>
>> * If the build identifier is empty, it is not added.
>> */
>> - public static final String BUILD = "7";
>> + public static final String BUILD = "8";
>>
>> /**
>> * This is the generic version string you should use
>>
>> Modified:
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/scripts/jspwiki-common.js
>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/scripts/jspwiki-common.js?rev=740438&r1=740437&r2=740438&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/scripts/jspwiki-common.js
>> (original)
>> +++
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/scripts/jspwiki-common.js
>> Tue Feb 3 21:00:03 2009
>> @@ -1318,7 +1318,7 @@
>> this.DescendingTitle = "sort.descending".localize();
>>
>> $ES('.sortable table',page).each(function(table){
>> - if( table.rows.length < 2 ) return;
>> + if( table.rows.length <= 2 ) return;
>>
>> $A(table.rows[0].cells).each(function(th){
>> th=$(th);
>> @@ -1375,42 +1375,70 @@
>> },
>>
>> guessDataType: function(rows, colidx){
>> +
>> var num=date=ip4=euro=kmgt=true;
>> +
>> rows.each(function(r,i){
>> - var v =
>> $getText(r.cells[colidx]).clean().toLowerCase();
>> +
>> + var v = r.cells[colidx];
>> + v = v.getAttribute('sortvalue') || $getText(v);
>> + v = v.clean().toLowerCase();
>> +
>> if(num) num = !isNaN(parseFloat(v));
>> if(date) date = !isNaN(Date.parse(v));
>> if(ip4) ip4 =
>> v.test(/(?:\\d{1,3}\\.){3}\\d{1,3}/); //169.169.0.1
>> if(euro) euro = v.test(/^[£$€][0-9.,]+/);
>> if(kmgt) kmgt =
>> v.test(/(?:[0-9.,]+)\s*(?:[kmgt])b/); //2 MB, 4GB, 1.2kb, 8Tb
>> +
>> });
>> +
>> return (kmgt) ? 'kmgt': (euro) ? 'euro': (ip4) ? 'ip4':
>> (date) ? 'date': (num) ? 'num': 'string';
>> +
>> },
>>
>> convert: function(val, datatype){
>> - switch(datatype){
>> - case "num" : return parseFloat( val.match(
>> Number.REparsefloat ) );
>> - case "euro": return parseFloat(
>> val.replace(/[^0-9.,]/g,'') );
>> - case "date": return new Date( Date.parse( val ) );
>> +
>> + switch( datatype ){
>> +
>> + case "num" :
>> + return parseFloat( val.match(
>> Number.REparsefloat ) );
>> +
>> + case "euro":
>> + return parseFloat(
>> val.replace(/[^0-9.,]/g,'') );
>> +
>> + case "date":
>> + return new Date( Date.parse( val ) );
>> +
>> case "ip4" :
>> var octet = val.split( "." );
>> return parseInt(octet[0]) * 1000000000 +
>> parseInt(octet[1]) * 1000000 + parseInt(octet[2]) * 1000 +
>> parseInt(octet[3]);
>> +
>> case "kmgt":
>> var v =
>> val.toString().toLowerCase().match(/([0-9.,]+)\s*([kmgt])b/);
>> if(!v) return 0;
>> var z=v[2];
>> z = (z=='m') ? 3 : (z=='g') ? 6 : (z=='t')
>> ? 9 : 0;
>> return v[1].toFloat()*Math.pow(10,z);
>> - default: return val.toString().toLowerCase();
>> +
>> + default:
>> + return val.toString().toLowerCase();
>> +
>> }
>> +
>> },
>>
>> - createCompare: function(i, datatype) {
>> - return function(row1, row2) {
>> - var val1 = Sortable.convert(
>> $getText(row1.cells[i]), datatype );
>> - var val2 = Sortable.convert(
>> $getText(row2.cells[i]), datatype );
>> + createCompare: function( i, datatype ){
>> +
>> + return function( row1, row2 ){
>>
>> - if(val1<val2){ return -1 } else if(val1>val2){
>> return 1 } else return 0;
>> + //fixme: should cache the converted sortable
>> values
>> + var v1 = row1.cells[i],
>> + v2 = row2.cells[i],
>> + val1 = Sortable.convert(
>> v1.getAttribute('sortvalue') || $getText(v1), datatype ),
>> + val2 = Sortable.convert(
>> v2.getAttribute('sortvalue') || $getText(v2), datatype );
>> +
>> + return val1 - val2;
>> +
>> }
>> }
>> }
>>
>> Modified:
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/AttachmentTab.jsp
>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/AttachmentTab.jsp?rev=740438&r1=740437&r2=740438&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/AttachmentTab.jsp
>> (original)
>> +++
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/AttachmentTab.jsp
>> Tue Feb 3 21:00:03 2009
>> @@ -48,7 +48,9 @@
>>
>> </table>
>> </form>
>> +
>> <wiki:Messages div="error" />
>> +
>> </wiki:Permission>
>> <wiki:Permission permission="!upload">
>> <div class="formhelp"><fmt:message key="attach.add.permission"/></div>
>> @@ -105,7 +107,9 @@
>> <td style="text-align:center;">
>> <a href="<wiki:PageInfoLink format='url' />" title="<fmt:message
>> key='attach.moreinfo.title'/>"><wiki:PageVersion /></a>
>> </td>
>> - <td style="white-space:nowrap;"><fmt:formatDate value="<%=
>> att.getLastModified() %>" pattern="${prefs.DateFormat}"
>> timeZone="${prefs.TimeZone}" /></td>
>> + <td style="white-space:nowrap;" sortvalue="<fmt:formatDate
>> value='<%= att.getLastModified() %>' pattern='EEE, d MMM yyyy hh:mm:ss' />">
>> + <fmt:formatDate value="<%= att.getLastModified() %>"
>> pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
>> + </td>
>> <td><wiki:Author /></td>
>> <wiki:Permission permission="delete">
>> <td>
>>
>> Modified:
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/InfoContent.jsp
>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/InfoContent.jsp?rev=740438&r1=740437&r2=740438&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/InfoContent.jsp
>> (original)
>> +++
>> incubator/jspwiki/branches/JSPWIKI_2_8_BRANCH/src/webdocs/templates/default/InfoContent.jsp
>> Tue Feb 3 21:00:03 2009
>> @@ -199,7 +199,9 @@
>> </wiki:LinkTo>
>> </td>
>>
>> - <td><fmt:formatDate value="<%= currentPage.getLastModified() %>"
>> pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" /></td>
>> + <td style="white-space:nowrap;" sortvalue="<fmt:formatDate
>> value='<%= currentPage.getLastModified() %>' pattern='EEE, d MMM yyyy
>> hh:mm:ss' />">
>> + <fmt:formatDate value="<%= currentPage.getLastModified() %>"
>> pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
>> + </td>
>> <td style="white-space:nowrap;text-align:right;">
>> <c:set var="ff"><wiki:PageSize /></c:set>
>> <fmt:formatNumber value='${ff/1000}' maxFractionDigits='3'
>> minFractionDigits='1'/> <fmt:message key="info.kilobytes"/>
>> @@ -358,7 +360,9 @@
>> <td style="white-space:nowrap;text-align:right;">
>> <fmt:formatNumber value='<%=Double.toString(att.getSize()/1000.0) %>'
>> groupingUsed='false' maxFractionDigits='1'
>> minFractionDigits='1'/> <fmt:message key="info.kilobytes"/>
>> </td>
>> - <td style="white-space:nowrap;"><fmt:formatDate value="<%=
>> att.getLastModified() %>" pattern="${prefs.DateFormat}"
>> timeZone="${prefs.TimeZone}" /></td>
>> + <td style="white-space:nowrap;" sortvalue="<fmt:formatDate
>> value='<%= att.getLastModified() %>' pattern='EEE, d MMM yyyy hh:mm:ss' />">
>> + <fmt:formatDate value="<%= att.getLastModified() %>"
>> pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
>> + </td>
>> <td><wiki:Author /></td>
>> <%--
>> // FIXME: This needs to be added, once we figure out what is going on.
>>
>>
>