diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue
index f56d4ead..d4c061ed 100644
--- a/frontend/src/components/AppSidebar.vue
+++ b/frontend/src/components/AppSidebar.vue
@@ -15,6 +15,27 @@
class="mx-2 my-0.5"
/>
+
diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue
index b7ed3585..365dadc4 100644
--- a/frontend/src/components/ViewControls.vue
+++ b/frontend/src/components/ViewControls.vue
@@ -89,7 +89,7 @@ const props = defineProps({
})
const { $dialog } = globalStore()
-const { getView } = viewsStore()
+const { reload: reloadView, getView } = viewsStore()
const list = defineModel()
@@ -132,6 +132,7 @@ function getParams() {
order_by: _view.order_by,
columns: _view.columns,
rows: _view.rows,
+ route_name: _view.route_name,
default_columns: _view.row,
pinned: _view.pinned,
}
@@ -143,6 +144,7 @@ function getParams() {
order_by: 'modified desc',
columns: '',
rows: '',
+ route_name: '',
default_columns: true,
pinned: false,
}
@@ -302,6 +304,7 @@ const viewActions = computed(() => {
value: !view.value.pinned,
}).then(() => {
view.value.pinned = !view.value.pinned
+ reloadView()
})
},
})
@@ -332,6 +335,7 @@ const viewActions = computed(() => {
}
).then(() => {
router.push({ name: route.name })
+ reloadView()
})
},
},
@@ -357,6 +361,7 @@ function saveView() {
order_by: defaultParams.value.order_by,
columns: defaultParams.value.columns,
rows: defaultParams.value.rows,
+ route_name: route.name,
default_columns: view.value.default_columns,
}
showViewModal.value = true
diff --git a/frontend/src/stores/views.js b/frontend/src/stores/views.js
index 64039643..87a209a6 100644
--- a/frontend/src/stores/views.js
+++ b/frontend/src/stores/views.js
@@ -1,9 +1,10 @@
import { defineStore } from 'pinia'
import { createListResource } from 'frappe-ui'
-import { reactive } from 'vue'
+import { reactive, ref } from 'vue'
export const viewsStore = defineStore('crm-views', () => {
let viewsByName = reactive({})
+ let pinnedViews = ref([])
const views = createListResource({
doctype: 'CRM View Settings',
@@ -12,8 +13,12 @@ export const viewsStore = defineStore('crm-views', () => {
initialData: [],
auto: true,
transform(views) {
+ pinnedViews.value = []
for (let view of views) {
viewsByName[view.name] = view
+ if (view.pinned) {
+ pinnedViews.value?.push(view)
+ }
}
return views
},
@@ -27,8 +32,19 @@ export const viewsStore = defineStore('crm-views', () => {
return viewsByName[view]
}
+ function getPinnedViews() {
+ if (!pinnedViews.value?.length) return []
+ return pinnedViews.value
+ }
+
+ function reload() {
+ views.reload()
+ }
+
return {
views,
+ getPinnedViews,
+ reload,
getView,
}
})