From 19dc8241d59887ee3b00c53ff4d80a0c3a9aa2a1 Mon Sep 17 00:00:00 2001 From: Ruslan Semak Date: Wed, 23 Apr 2025 16:57:24 +0300 Subject: [PATCH] feat: Customized folder order --- .../themes/default/components/nav-sidebar.vue | 34 ++++++++++--------- package.json | 7 +--- server/graph/resolvers/page.js | 23 +++++++++++++ 3 files changed, 42 insertions(+), 22 deletions(-) diff --git a/client/themes/default/components/nav-sidebar.vue b/client/themes/default/components/nav-sidebar.vue index 0c691958..35a739b5 100644 --- a/client/themes/default/components/nav-sidebar.vue +++ b/client/themes/default/components/nav-sidebar.vue @@ -17,16 +17,16 @@ @click='switchMode(`tree`)' ) v-icon(left) mdi-file-tree - .body-2.text-none {{$t('common:sidebar.browse')}} - v-btn.ml-3( - v-else-if='currentMode === `browse`' - depressed - :color='$vuetify.theme.dark ? `grey darken-4` : `blue darken-2`' - style='flex: 1 1 100%;' - @click='switchMode(`tree`)' - ) - v-icon(left) mdi-file-tree - .body-2.text-none {{'Обзор'}} + .body-2.text-none {{'Темы'}} + //v-btn.ml-3( + // v-else-if='currentMode === `browse`' + // depressed + // :color='$vuetify.theme.dark ? `grey darken-4` : `blue darken-2`' + // style='flex: 1 1 100%;' + // @click='switchMode(`tree`)' + // ) + // v-icon(left) mdi-file-tree + // .body-2.text-none {{'Темы'}} v-btn.ml-3( v-else-if='currentMode === `tree`' depressed @@ -34,8 +34,8 @@ style='flex: 1 1 100%;' @click='switchMode(`custom`)' ) - v-icon(left) mdi-navigation - .body-2.text-none {{$t('common:sidebar.mainMenu')}} + v-icon(left) mdi-menu + .body-2.text-none {{'Меню'}} v-divider //-> Custom Navigation v-list.py-2(v-if='currentMode === `custom`', dense, :class='color', :dark='dark') @@ -67,10 +67,12 @@ @update:active='activeTreeItem' ) template(v-slot:prepend="{ item, open }") - v-icon(v-if="!item.children && item.icon") mdi-{{ item.icon }} - v-icon(v-else-if="!item.children && !item.icon") mdi-text-box - v-icon(v-else-if="open") mdi-folder-open - v-icon(v-else) mdi-folder + v-icon(v-if="open") mdi-folder-open + v-icon(v-else) mdi-{{ item.icon }} + //v-icon(v-if="!item.children && item.icon") mdi-{{ item.icon }} + //v-icon(v-else-if="!item.children && !item.icon") mdi-text-box + //v-icon(v-else-if="open") mdi-folder-open + //v-icon(v-else) mdi-folder template(v-slot:label="{ item }") div(class='tree-item') a(v-if="!item.children" :href="'/'+item.locale+'/'+item.path") diff --git a/package.json b/package.json index ab29e2ab..9a1b5498 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,7 @@ "watch": "NODE_OPTIONS=--openssl-legacy-provider webpack --config dev/webpack/webpack.dev.js", "test": "eslint --format codeframe --ext .js,.vue . && pug-lint server/views && jest", "cypress:open": "cypress open", - "postinstall": "patch-package", - "service:start": "docker compose up -d", - "service:stop": "docker compose stop", - "service:delete": "docker compose down -v", - "service:build": "npm run service:stop && docker compose up --build", - "service:recreate": "npm run service:delete && docker compose up --build --force-recreate" + "postinstall": "patch-package" }, "repository": { "type": "git", diff --git a/server/graph/resolvers/page.js b/server/graph/resolvers/page.js index daf56bf8..7e1633fe 100644 --- a/server/graph/resolvers/page.js +++ b/server/graph/resolvers/page.js @@ -285,6 +285,29 @@ module.exports = { } }).orderBy([{ column: 'isFolder', order: 'desc' }, 'orderPriority']) + const customFolderOrder = [ + 'Аккаунты', + 'Software', + 'WebStorm', + 'Intro', + 'Git', + 'JavaScript', + 'TypeScript', + 'Database', + 'Backend-1', + 'Backend-2', + 'Job' + + ] + + results.sort((a, b) => { + if (a.isFolder !== b.isFolder) { + return b.isFolder - a.isFolder + } + + return customFolderOrder.indexOf(a.title) - customFolderOrder.indexOf(b.title) + }) + return results.filter(r => { return WIKI.auth.checkAccess(context.req.user, ['read:pages'], { path: r.path,