introduce new block attribute to control sorting direction (#25) (#27)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
b29a2b169c
commit
d6ae2fe437
Binary file not shown.
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 18 KiB |
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 9.4 KiB |
@ -86,6 +86,10 @@
|
|||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
sort: {
|
||||||
|
type: 'string',
|
||||||
|
// implicit default: 'desc', left empty here for backwards compatibility of the block
|
||||||
|
},
|
||||||
},
|
},
|
||||||
edit: withSelect( function( select ) {
|
edit: withSelect( function( select ) {
|
||||||
return {
|
return {
|
||||||
@ -166,6 +170,26 @@
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
el(
|
||||||
|
wp.components.SelectControl,
|
||||||
|
{
|
||||||
|
label: __( 'Output direction', 'stklcode-liveticker' ),
|
||||||
|
value: props.attributes.sort,
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
value: 'desc',
|
||||||
|
label: __( 'newest first', 'stklcode-liveticker' ),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'asc',
|
||||||
|
label: __( 'oldest first', 'stklcode-liveticker' ),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
onChange: function( val ) {
|
||||||
|
props.setAttributes( { sort: val } );
|
||||||
|
},
|
||||||
|
}
|
||||||
|
),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,6 +207,7 @@
|
|||||||
'data-sclt-ticker': props.attributes.ticker,
|
'data-sclt-ticker': props.attributes.ticker,
|
||||||
'data-sclt-limit': props.attributes.unlimited ? 0 : props.attributes.limit,
|
'data-sclt-limit': props.attributes.unlimited ? 0 : props.attributes.limit,
|
||||||
'data-sclt-last': 0,
|
'data-sclt-last': 0,
|
||||||
|
'data-sclt-sort': props.attributes.sort,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Contructor of the scLiveticker object.
|
* Constructor of the scLiveticker object.
|
||||||
*
|
*
|
||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
@ -73,6 +73,7 @@
|
|||||||
var parseElement = function( elem, widget, n ) {
|
var parseElement = function( elem, widget, n ) {
|
||||||
var list = elem.querySelector( 'ul' );
|
var list = elem.querySelector( 'ul' );
|
||||||
var last = elem.getAttribute( 'data-sclt-last' );
|
var last = elem.getAttribute( 'data-sclt-last' );
|
||||||
|
var sort = elem.getAttribute( 'data-sclt-sort' );
|
||||||
|
|
||||||
elem.id = 'sclt-' + n;
|
elem.id = 'sclt-' + n;
|
||||||
|
|
||||||
@ -92,11 +93,16 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( 'asc' !== sort && 'desc' !== 'sort' ) {
|
||||||
|
sort = 'desc';
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: n,
|
id: n,
|
||||||
ticker: elem.getAttribute( 'data-sclt-ticker' ),
|
ticker: elem.getAttribute( 'data-sclt-ticker' ),
|
||||||
limit: elem.getAttribute( 'data-sclt-limit' ),
|
limit: elem.getAttribute( 'data-sclt-limit' ),
|
||||||
lastPoll: last,
|
lastPoll: last,
|
||||||
|
sort: sort,
|
||||||
ticks: list,
|
ticks: list,
|
||||||
isWidget: widget,
|
isWidget: widget,
|
||||||
updating: false,
|
updating: false,
|
||||||
@ -210,8 +216,11 @@
|
|||||||
if ( old ) {
|
if ( old ) {
|
||||||
// Replace entry, if it already exists (i.e. has been updated).
|
// Replace entry, if it already exists (i.e. has been updated).
|
||||||
t.ticks.replaceChild( li, old );
|
t.ticks.replaceChild( li, old );
|
||||||
|
} else if ( 'asc' === t.sort ) {
|
||||||
|
// Append new tick as last element to container.
|
||||||
|
t.ticks.appendChild( li );
|
||||||
} else {
|
} else {
|
||||||
// Prepend new tick to container.
|
// Prepend new tick as fist element to container.
|
||||||
t.ticks.insertBefore( li, t.ticks.firstChild );
|
t.ticks.insertBefore( li, t.ticks.firstChild );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,8 +229,13 @@
|
|||||||
t.ticks.parentNode.setAttribute( 'data-sclt-last', u.date_gmt );
|
t.ticks.parentNode.setAttribute( 'data-sclt-last', u.date_gmt );
|
||||||
|
|
||||||
// Remove tail, if limit is set.
|
// Remove tail, if limit is set.
|
||||||
if ( 0 < t.limit ) {
|
if ( 0 < t.limit && t.limit < t.ticks.children.length ) {
|
||||||
[].slice.call( t.ticks.getElementsByTagName( 'li' ), t.limit ).forEach(
|
if ( 'asc' === t.sort ) {
|
||||||
|
old = [].slice.call( t.ticks.children, 0, -t.limit );
|
||||||
|
} else {
|
||||||
|
old = [].slice.call( t.ticks.children, t.limit );
|
||||||
|
}
|
||||||
|
old.forEach(
|
||||||
function( l ) {
|
function( l ) {
|
||||||
l.remove();
|
l.remove();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user