1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 01:36:22 +00:00

Add selector to sort tags by counter or alphabetically

![screencast](https://i.imgur.com/XUkTyRe.gif)
This commit is contained in:
bimlas
2018-03-24 10:56:01 +01:00
parent 02095ac155
commit 2a23d19321
7 changed files with 77 additions and 3 deletions

View File

@@ -82,7 +82,7 @@ class SideNav extends React.Component {
}
SideNavComponent (isFolded, storageList) {
const { location, data } = this.props
const { location, data, config } = this.props
const isHomeActive = !!location.pathname.match(/^\/home$/)
const isStarredActive = !!location.pathname.match(/^\/starred$/)
@@ -119,6 +119,21 @@ class SideNav extends React.Component {
<p>{i18n.__('Tags')}</p>
</div>
<div styleName='tagList'>
<div styleName='control'>
<div styleName='control-sortTagsBy'>
<i className='fa fa-angle-down' />
<select styleName='control-sortTagsBy-select'
title={i18n.__('Select filter mode')}
value={config.sortTagsBy}
onChange={(e) => this.handleSortTagsByChange(e)}
>
<option title='Sort alphabetically'
value='ALPHABETICAL'>{i18n.__('Alphabetically')}</option>
<option title='Sort by update time'
value='COUNTER'>{i18n.__('Counter')}</option>
</select>
</div>
</div>
{this.tagListComponent(data)}
</div>
</div>
@@ -129,10 +144,15 @@ class SideNav extends React.Component {
}
tagListComponent () {
const { data, location } = this.props
const tagList = _.sortBy(data.tagNoteMap.map((tag, name) => {
const { data, location, config } = this.props
let tagList = _.sortBy(data.tagNoteMap.map((tag, name) => {
return { name, size: tag.size }
}), ['name'])
if (config.sortTagsBy === 'COUNTER') {
tagList = _.sortBy(tagList, function (item) {
return 0 - item.size
})
}
return (
tagList.map(tag => {
return (
@@ -159,6 +179,20 @@ class SideNav extends React.Component {
router.push(`/tags/${name}`)
}
handleSortTagsByChange (e) {
const { dispatch } = this.props
const config = {
sortTagsBy: e.target.value
}
ConfigManager.set(config)
dispatch({
type: 'SET_CONFIG',
config
})
}
emptyTrash (entries) {
const { dispatch } = this.props
const deletionPromises = entries.map((note) => {