Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion dashboard/src/i18n/locales/en-US/features/extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@
"updated": "Last Updated",
"updateStatus": "Update Status",
"ascending": "Ascending",
"descending": "Descending"
"descending": "Descending",
"pinUpdatesOnTop": "Pin Updates on Top"
},
"tags": {
"danger": "Danger"
Expand Down
5 changes: 3 additions & 2 deletions dashboard/src/i18n/locales/ru-RU/features/extension.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
{
"title": "Плагины",
"subtitle": "Управление и настройка расширений системы",
"tabs": {
Expand Down Expand Up @@ -143,7 +143,8 @@
"updated": "Дате обновления",
"updateStatus": "Статусу обновления",
"ascending": "По возрастанию",
"descending": "По убыванию"
"descending": "По убыванию",
"pinUpdatesOnTop": "Обновления сверху"
},
"tags": {
"danger": "Опасно"
Expand Down
3 changes: 2 additions & 1 deletion dashboard/src/i18n/locales/zh-CN/features/extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,8 @@
"updated": "更新时间",
"updateStatus": "更新状态",
"ascending": "升序",
"descending": "降序"
"descending": "降序",
"pinUpdatesOnTop": "有更新置顶"
},
"tags": {
"danger": "危险"
Expand Down
10 changes: 10 additions & 0 deletions dashboard/src/views/extension/InstalledPluginsTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ const {
installedStatusFilter,
installedSortBy,
installedSortOrder,
pinUpdatesOnTop,
loading_,
currentPage,
dangerConfirmDialog,
Expand Down Expand Up @@ -354,6 +355,15 @@ const pinnedPlugins = computed(() => {
:show-order="installedSortUsesOrder"
@update:order="installedSortOrder = $event"
/>
<v-switch
v-model="pinUpdatesOnTop"
Comment thread
Blueteemo marked this conversation as resolved.
:label="tm('sort.pinUpdatesOnTop')"
color="primary"
density="compact"
hide-details
class="ml-4"
style="max-width: 200px"
/>
</div>
</div>
</v-col>
Expand Down
25 changes: 25 additions & 0 deletions dashboard/src/views/extension/useExtensionPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,19 @@ export const useExtensionPage = () => {
const installedStatusFilter = ref("all");
const installedSortBy = ref("default");
const installedSortOrder = ref("desc");
const getInitialPinUpdatesOnTop = () => {
if (typeof window !== "undefined" && window.localStorage) {
const saved = localStorage.getItem("pinUpdatesOnTop");
Comment thread
sourcery-ai[bot] marked this conversation as resolved.
Outdated
return saved !== "false";
}
return true;
};
const pinUpdatesOnTop = ref(getInitialPinUpdatesOnTop());
watch(pinUpdatesOnTop, (val) => {
if (typeof window !== "undefined" && window.localStorage) {
localStorage.setItem("pinUpdatesOnTop", val.toString());
}
});
const loading_ = ref(false);

// 分页相关
Expand Down Expand Up @@ -441,6 +454,17 @@ export const useExtensionPage = () => {
const fallbackResult =
fallbackNameCompare !== 0 ? fallbackNameCompare : left.index - right.index;
Comment thread
sourcery-ai[bot] marked this conversation as resolved.
Outdated

if (
pinUpdatesOnTop.value &&
installedSortBy.value !== "update_status"
) {
const leftHasUpdate = left.plugin?.has_update ? 1 : 0;
const rightHasUpdate = right.plugin?.has_update ? 1 : 0;
if (leftHasUpdate !== rightHasUpdate) {
return rightHasUpdate - leftHasUpdate;
}
}

if (installedSortBy.value === "install_time") {
const leftTimestamp = left.installedAtTimestamp;
const rightTimestamp = right.installedAtTimestamp;
Expand Down Expand Up @@ -1695,6 +1719,7 @@ export const useExtensionPage = () => {
installedStatusFilter,
installedSortBy,
installedSortOrder,
pinUpdatesOnTop,
loading_,
currentPage,
marketCategoryFilter,
Expand Down
Loading