Skip to content

Commit

Permalink
New setting: save navigator sorting type
Browse files Browse the repository at this point in the history
  • Loading branch information
aleksey-hoffman committed Aug 7, 2022
1 parent 3d904b7 commit dabaa2e
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 94 deletions.
6 changes: 3 additions & 3 deletions src/components/ActionToolbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -414,9 +414,9 @@ export default {
shortcuts: 'storageData.settings.shortcuts',
groupDirItems: 'storageData.settings.groupDirItems',
currentNotesList: 'currentNotesList',
sortingOrder: 'sorting.order',
selectedSortingType: 'sorting.selectedType',
sortingTypes: 'sorting.types',
sortingOrder: 'storageData.settings.sorting.order',
selectedSortingType: 'storageData.settings.sorting.selectedType',
sortingTypes: 'storageData.settings.sorting.types',
homeBannerValue: 'storageData.settings.homeBanner.value',
currentDir: 'navigatorView.currentDir',
navigatorViewInfoPanel: 'storageData.settings.infoPanels.navigatorView',
Expand Down
4 changes: 2 additions & 2 deletions src/components/DirItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -398,9 +398,9 @@ export default {
dirItemHoverEffect: 'storageData.settings.dirItemHoverEffect',
visibleDirItems: 'navigatorView.visibleDirItems',
dirItemsInfoIsFetched: 'navigatorView.dirItemsInfoIsFetched',
selectedSortingType: 'sorting.selectedType',
selectedSortingType: 'storageData.settings.sorting.selectedType',
fsClipboard: 'navigatorView.clipboard.fs',
sortingTypes: 'sorting.types',
sortingTypes: 'storageData.settings.sorting.types',
navigatorNameColumnMaxWidth: 'storageData.settings.navigator.nameColumnMaxWidth',
}),
specifiedNavigatorLayout () {
Expand Down
6 changes: 3 additions & 3 deletions src/components/SortingToolbar/SortingColumnMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ export default {
},
computed: {
...mapFields({
sortingOrder: 'sorting.order',
selectedSortingType: 'sorting.selectedType',
sortingTypes: 'sorting.types',
sortingOrder: 'storageData.settings.sorting.order',
selectedSortingType: 'storageData.settings.sorting.selectedType',
sortingTypes: 'storageData.settings.sorting.types',
}),
},
methods: {
Expand Down
6 changes: 3 additions & 3 deletions src/components/SortingToolbar/SortingMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ import {mapFields} from 'vuex-map-fields'
export default {
computed: {
...mapFields({
sortingOrder: 'sorting.order',
selectedSortingType: 'sorting.selectedType',
sortingTypes: 'sorting.types',
sortingOrder: 'storageData.settings.sorting.order',
selectedSortingType: 'storageData.settings.sorting.selectedType',
sortingTypes: 'storageData.settings.sorting.types',
}),
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/components/SortingToolbar/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,9 @@ export default {
},
computed: {
...mapFields({
sortingOrder: 'sorting.order',
selectedSortingType: 'sorting.selectedType',
sortingTypes: 'sorting.types',
sortingOrder: 'storageData.settings.sorting.order',
selectedSortingType: 'storageData.settings.sorting.selectedType',
sortingTypes: 'storageData.settings.sorting.types',
navigatorLayout: 'storageData.settings.navigatorLayout',
navigatorSortingElementDisplayType: 'storageData.settings.navigator.sorting.elementDisplayType',
}),
Expand Down
172 changes: 92 additions & 80 deletions src/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,69 +259,6 @@ export default new Vuex.Store({
}
}
},
sorting: {
order: 'ascending',
selectedType: {
name: 'name',
title: 'name',
shortTitle: 'name',
width: 'minmax(64px, 2fr)',
isChecked: true,
},
types: [
{
name: 'name',
title: 'name',
shortTitle: 'name',
width: 'minmax(64px, 2fr)',
isChecked: true,
},
{
name: 'date-modified-contents',
title: 'date modified contents',
shortTitle: 'modified contents',
width: 'minmax(64px, 1.6fr)',
isChecked: true,
},
{
name: 'date-modified-meta',
title: 'date modified meta',
shortTitle: 'modified meta',
width: 'minmax(64px, 1.6fr)',
isChecked: false,
},
{
name: 'date-created',
title: 'date created',
shortTitle: 'created',
width: 'minmax(64px, 1.6fr)',
isChecked: false,
},
{
name: 'size',
title: 'items / size',
shortTitle: 'items / size',
width: 'minmax(64px, 0.8fr)',
isChecked: true,
},
// TODO: finish in v1.2.0
// Should request to turn on the 'storeDirItemOpenCount'
// {
// name: 'popularity',
// title: 'popularity',
// shortTitle: 'popularity',
// width: 'minmax(64px, 1fr)',
// isChecked: false,
// },
{
name: 'status',
title: 'status',
shortTitle: 'status',
width: '64px',
isChecked: true,
},
]
},
settingsView: {
settingsDataMap: []
},
Expand Down Expand Up @@ -934,6 +871,70 @@ export default new Vuex.Store({
]
},
},
sorting: {
saveNavigatorSorting: false,
order: 'ascending',
selectedType: {
name: 'name',
title: 'name',
shortTitle: 'name',
width: 'minmax(64px, 2fr)',
isChecked: true,
},
types: [
{
name: 'name',
title: 'name',
shortTitle: 'name',
width: 'minmax(64px, 2fr)',
isChecked: true,
},
{
name: 'date-modified-contents',
title: 'date modified contents',
shortTitle: 'modified contents',
width: 'minmax(64px, 1.6fr)',
isChecked: true,
},
{
name: 'date-modified-meta',
title: 'date modified meta',
shortTitle: 'modified meta',
width: 'minmax(64px, 1.6fr)',
isChecked: false,
},
{
name: 'date-created',
title: 'date created',
shortTitle: 'created',
width: 'minmax(64px, 1.6fr)',
isChecked: false,
},
{
name: 'size',
title: 'items / size',
shortTitle: 'items / size',
width: 'minmax(64px, 0.8fr)',
isChecked: true,
},
// TODO: finish in v1.2.0
// Should request to turn on the 'storeDirItemOpenCount'
// {
// name: 'popularity',
// title: 'popularity',
// shortTitle: 'popularity',
// width: 'minmax(64px, 1fr)',
// isChecked: false,
// },
{
name: 'status',
title: 'status',
shortTitle: 'status',
width: '64px',
isChecked: true,
},
]
},
}
},
navigationPanel: {
Expand Down Expand Up @@ -1382,7 +1383,7 @@ export default new Vuex.Store({
},
sortingHeaderGridColumnTemplate: state => {
let menuIconWidth = '48px'
let gridColumnTemplate = state.sorting.types
let gridColumnTemplate = state.storageData.settings.sorting.types
.filter(item => item.isChecked)
.map(item => item.width)
gridColumnTemplate.unshift(menuIconWidth)
Expand Down Expand Up @@ -1748,19 +1749,9 @@ export default new Vuex.Store({
note.dateTrashed = null
note.dateWillBeDeleted = null
},
SET_SORTING_TYPE (state, sortingType) {
const types = state.sorting.types
state.sorting.selectedType = sortingType
},
TOGGLE_SORTING_ORDER (state) {
const order = state.sorting.order
state.sorting.order = order === 'ascending'
? 'descending'
: 'ascending'
},
SORT_DIR_ITEMS (state) {
const order = state.sorting.order
const sortingType = state.sorting.selectedType
const order = state.storageData.settings.sorting.order
const sortingType = state.storageData.settings.sorting.selectedType

if (sortingType.name === 'name') {
state.navigatorView.dirItems = order === 'ascending'
Expand Down Expand Up @@ -4423,12 +4414,33 @@ export default new Vuex.Store({
SORT_DIR_ITEMS ({ state, commit, dispatch, getters }) {
commit('SORT_DIR_ITEMS')
},
SET_SORTING_TYPE ({ state, commit, dispatch, getters }, sortingType) {
commit('SET_SORTING_TYPE', sortingType)
SET_SORTING_TYPE ({state, dispatch}, sortingType) {
if (state.storageData.settings.sorting.saveNavigatorSorting) {
dispatch('SET', {
key: 'storageData.settings.sorting.selectedType',
value: sortingType
})
}
else {
state.storageData.settings.sorting.selectedType = sortingType
}
dispatch('SORT_DIR_ITEMS')
},
TOGGLE_SORTING_ORDER ({ state, commit, dispatch, getters }) {
commit('TOGGLE_SORTING_ORDER')
TOGGLE_SORTING_ORDER ({state, dispatch}) {
const order = state.storageData.settings.sorting.order
if (state.storageData.settings.sorting.saveNavigatorSorting) {
dispatch('SET', {
key: 'storageData.settings.sorting.order',
value: order === 'ascending'
? 'descending'
: 'ascending'
})
}
else {
state.storageData.settings.sorting.order = order === 'ascending'
? 'descending'
: 'ascending'
}
dispatch('SORT_DIR_ITEMS')
},
UPDATE_DIR_ITEM_SELECTION_HISTORY (store) {
Expand Down
15 changes: 15 additions & 0 deletions src/views/Settings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -1094,6 +1094,20 @@ Copyright © 2021 - present Aleksey Hoffman. All rights reserved.
hide-details
/>

<div class="text--sub-title-1 mt-2">
Sorting type
</div>
<div class="mb-2">
If enabled, the selected sorting type will be applied after app reload
</div>

<v-switch
v-model="saveNavigatorSorting"
class="mt-0 pt-0"
label="Save sorting type"
hide-details
/>

<div class="text--sub-title-1 mt-4">
Sorting element display type
</div>
Expand Down Expand Up @@ -2098,6 +2112,7 @@ export default {
windowCloseButtonAction: 'storageData.settings.windowCloseButtonAction',
themeType: 'storageData.settings.theme.type',
showDirItemKindDividers: 'storageData.settings.navigator.showDirItemKindDividers',
saveNavigatorSorting: 'storageData.settings.sorting.saveNavigatorSorting',
navigatorSortingElementDisplayType: 'storageData.settings.navigator.sorting.elementDisplayType',
navigatorLayout: 'storageData.settings.navigatorLayout',
showWorkspaceTitleInToolbar: 'storageData.settings.navigator.workspaces.showTitleInToolbar',
Expand Down

0 comments on commit dabaa2e

Please sign in to comment.