From 4aa0c1402f98a0ef427131819cd4a7baf0089026 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 29 Dec 2023 15:07:20 +0530 Subject: [PATCH 01/22] fix: renamed list view settings to view settings --- crm/api/doc.py | 4 ++-- .../__init__.py | 0 .../crm_view_settings.js} | 2 +- .../crm_view_settings.json} | 2 +- .../crm_view_settings.py} | 16 ++++++++-------- .../test_crm_view_settings.py} | 2 +- frontend/src/components/ViewSettings.vue | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) rename crm/fcrm/doctype/{crm_list_view_settings => crm_view_settings}/__init__.py (100%) rename crm/fcrm/doctype/{crm_list_view_settings/crm_list_view_settings.js => crm_view_settings/crm_view_settings.js} (76%) rename crm/fcrm/doctype/{crm_list_view_settings/crm_list_view_settings.json => crm_view_settings/crm_view_settings.json} (96%) rename crm/fcrm/doctype/{crm_list_view_settings/crm_list_view_settings.py => crm_view_settings/crm_view_settings.py} (68%) rename crm/fcrm/doctype/{crm_list_view_settings/test_crm_list_view_settings.py => crm_view_settings/test_crm_view_settings.py} (77%) diff --git a/crm/api/doc.py b/crm/api/doc.py index d109f409..4f5d71c9 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -59,8 +59,8 @@ def get_list_data(doctype: str, filters: dict, order_by: str): is_default = True - if frappe.db.exists("CRM List View Settings", doctype): - list_view_settings = frappe.get_doc("CRM List View Settings", doctype) + if frappe.db.exists("CRM View Settings", doctype): + list_view_settings = frappe.get_doc("CRM View Settings", doctype) columns = frappe.parse_json(list_view_settings.columns) rows = frappe.parse_json(list_view_settings.rows) is_default = False diff --git a/crm/fcrm/doctype/crm_list_view_settings/__init__.py b/crm/fcrm/doctype/crm_view_settings/__init__.py similarity index 100% rename from crm/fcrm/doctype/crm_list_view_settings/__init__.py rename to crm/fcrm/doctype/crm_view_settings/__init__.py diff --git a/crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.js b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.js similarity index 76% rename from crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.js rename to crm/fcrm/doctype/crm_view_settings/crm_view_settings.js index 87850935..df838f2f 100644 --- a/crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.js +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.js @@ -1,7 +1,7 @@ // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors // For license information, please see license.txt -// frappe.ui.form.on("CRM List View Settings", { +// frappe.ui.form.on("CRM View Settings", { // refresh(frm) { // }, diff --git a/crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.json b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json similarity index 96% rename from crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.json rename to crm/fcrm/doctype/crm_view_settings/crm_view_settings.json index 5806c815..a262dfa8 100644 --- a/crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.json +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json @@ -33,7 +33,7 @@ "modified": "2023-11-28 00:17:42.675332", "modified_by": "Administrator", "module": "FCRM", - "name": "CRM List View Settings", + "name": "CRM View Settings", "naming_rule": "Set by user", "owner": "Administrator", "permissions": [ diff --git a/crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.py b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py similarity index 68% rename from crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.py rename to crm/fcrm/doctype/crm_view_settings/crm_view_settings.py index 66770ce8..4b4faefb 100644 --- a/crm/fcrm/doctype/crm_list_view_settings/crm_list_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py @@ -5,7 +5,7 @@ import frappe from frappe.model.document import Document, get_controller -class CRMListViewSettings(Document): +class CRMViewSettings(Document): pass @@ -18,16 +18,16 @@ def update(doctype, columns, rows): rows = remove_duplicates(rows) - if not frappe.db.exists("CRM List View Settings", doctype): - # create new CRM List View Settings - doc = frappe.new_doc("CRM List View Settings") + if not frappe.db.exists("CRM View Settings", doctype): + # create new CRM View Settings + doc = frappe.new_doc("CRM View Settings") doc.name = doctype doc.columns = json.dumps(columns) doc.rows = json.dumps(rows) doc.insert() else: - # update existing CRM List View Settings - doc = frappe.get_doc("CRM List View Settings", doctype) + # update existing CRM View Settings + doc = frappe.get_doc("CRM View Settings", doctype) doc.columns = json.dumps(columns) doc.rows = json.dumps(rows) doc.save() @@ -46,5 +46,5 @@ def sync_default_list_rows(doctype): @frappe.whitelist() def reset_to_default(doctype): - if frappe.db.exists("CRM List View Settings", doctype): - frappe.delete_doc("CRM List View Settings", doctype) \ No newline at end of file + if frappe.db.exists("CRM View Settings", doctype): + frappe.delete_doc("CRM View Settings", doctype) \ No newline at end of file diff --git a/crm/fcrm/doctype/crm_list_view_settings/test_crm_list_view_settings.py b/crm/fcrm/doctype/crm_view_settings/test_crm_view_settings.py similarity index 77% rename from crm/fcrm/doctype/crm_list_view_settings/test_crm_list_view_settings.py rename to crm/fcrm/doctype/crm_view_settings/test_crm_view_settings.py index d99027bc..cd6df2d7 100644 --- a/crm/fcrm/doctype/crm_list_view_settings/test_crm_list_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/test_crm_view_settings.py @@ -5,5 +5,5 @@ from frappe.tests.utils import FrappeTestCase -class TestCRMListViewSettings(FrappeTestCase): +class TestCRMViewSettings(FrappeTestCase): pass diff --git a/frontend/src/components/ViewSettings.vue b/frontend/src/components/ViewSettings.vue index f6189b96..2177e41f 100644 --- a/frontend/src/components/ViewSettings.vue +++ b/frontend/src/components/ViewSettings.vue @@ -228,7 +228,7 @@ function cancelUpdate() { async function updateColumnDetails() { is_default.value = false await call( - 'crm.fcrm.doctype.crm_list_view_settings.crm_list_view_settings.update', + 'crm.fcrm.doctype.crm_view_settings.crm_view_settings.update', { doctype: props.doctype, columns: columns.value, @@ -239,7 +239,7 @@ async function updateColumnDetails() { async function resetToDefault() { await call( - 'crm.fcrm.doctype.crm_list_view_settings.crm_list_view_settings.reset_to_default', + 'crm.fcrm.doctype.crm_view_settings.crm_view_settings.reset_to_default', { doctype: props.doctype, } From e850928e57c5a7f87568eb2f6c53433602ef73ef Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 14:35:37 +0530 Subject: [PATCH 02/22] fix: allow setting non filterable fields --- crm/api/doc.py | 6 ++++++ crm/fcrm/doctype/crm_lead/crm_lead.py | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/crm/api/doc.py b/crm/api/doc.py index 4f5d71c9..f1fef5cc 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -30,6 +30,11 @@ def get_filterable_fields(doctype: str): "Text", ] + c = get_controller(doctype) + restricted_fields = [] + if hasattr(c, "get_non_filterable_fields"): + restricted_fields = c.get_non_filterable_fields() + from_doc_fields = ( frappe.qb.from_(DocField) .select( @@ -42,6 +47,7 @@ def get_filterable_fields(doctype: str): .where(DocField.parent == doctype) .where(DocField.hidden == False) .where(Criterion.any([DocField.fieldtype == i for i in allowed_fieldtypes])) + .where(Criterion.all([DocField.fieldname != i for i in restricted_fields])) .run(as_dict=True) ) res = [] diff --git a/crm/fcrm/doctype/crm_lead/crm_lead.py b/crm/fcrm/doctype/crm_lead/crm_lead.py index 94f9c824..d21fdaa6 100644 --- a/crm/fcrm/doctype/crm_lead/crm_lead.py +++ b/crm/fcrm/doctype/crm_lead/crm_lead.py @@ -196,6 +196,10 @@ class CRMLead(Document): { "label": 'Mobile no', "value": 'mobile_no' }, ] + @staticmethod + def get_non_filterable_fields(): + return ["converted"] + @staticmethod def default_list_data(): columns = [ From 0b791516a5fbb6d52fa91f63ae452a83b5b6de22 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 14:47:33 +0530 Subject: [PATCH 03/22] fix: added filters & order by fields along with default columns checkbox --- .../crm_view_settings/crm_view_settings.json | 68 +++++++++++++++++-- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json index a262dfa8..8b7ae5f0 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json @@ -1,14 +1,22 @@ { "actions": [], - "allow_rename": 1, - "autoname": "prompt", + "autoname": "autoincrement", "creation": "2023-11-27 16:29:10.993403", "doctype": "DocType", "engine": "InnoDB", "field_order": [ + "label", "user", + "column_break_zacm", + "dt", + "columns_tab", + "default_columns", "columns", - "rows" + "rows", + "filters_tab", + "filters", + "order_by_tab", + "order_by" ], "fields": [ { @@ -26,15 +34,65 @@ "fieldname": "rows", "fieldtype": "Code", "label": "Rows" + }, + { + "fieldname": "filters", + "fieldtype": "Code", + "label": "Filters" + }, + { + "fieldname": "columns_tab", + "fieldtype": "Tab Break", + "label": "Columns" + }, + { + "fieldname": "filters_tab", + "fieldtype": "Tab Break", + "label": "Filters" + }, + { + "fieldname": "label", + "fieldtype": "Data", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Label" + }, + { + "fieldname": "column_break_zacm", + "fieldtype": "Column Break" + }, + { + "fieldname": "dt", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "DocType", + "options": "DocType" + }, + { + "fieldname": "order_by_tab", + "fieldtype": "Tab Break", + "label": "Order By" + }, + { + "fieldname": "order_by", + "fieldtype": "Code", + "label": "Order By" + }, + { + "default": "0", + "fieldname": "default_columns", + "fieldtype": "Check", + "label": "Default Columns" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-11-28 00:17:42.675332", + "modified": "2023-12-30 19:28:02.541487", "modified_by": "Administrator", "module": "FCRM", "name": "CRM View Settings", - "naming_rule": "Set by user", + "naming_rule": "Autoincrement", "owner": "Administrator", "permissions": [ { From 95f16759dd3158be6dac6131fddd30e10a481c96 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 14:50:25 +0530 Subject: [PATCH 04/22] fix: added api's to create, update & delete CRM View Settings --- .../crm_view_settings/crm_view_settings.py | 74 ++++++++++++++----- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py index 4b4faefb..416ee2ef 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py @@ -8,29 +8,68 @@ from frappe.model.document import Document, get_controller class CRMViewSettings(Document): pass +@frappe.whitelist() +def create(view, duplicate=False): + view = frappe._dict(view) + + if duplicate: + view.filters = json.loads(view.filters) + view.columns = json.loads(view.columns) + view.rows = json.loads(view.rows) + + doc = frappe.new_doc("CRM View Settings") + doc.name = view.label + doc.label = view.label + doc.dt = view.doctype + doc.user = frappe.session.user + doc.filters = json.dumps(view.filters) + doc.order_by = view.order_by + doc.default_columns = view.default_columns or False + + if not view.columns: + view.columns = [] + if not view.rows: + view.rows = [] + + default_rows = sync_default_list_rows(view.doctype) + + if default_rows: + view.rows = view.rows + default_rows + + view.rows = remove_duplicates(view.rows) + + doc.columns = json.dumps(view.columns) + doc.rows = json.dumps(view.rows) + doc.insert() + return doc @frappe.whitelist() -def update(doctype, columns, rows): - default_rows = sync_default_list_rows(doctype) +def update(view): + view = frappe._dict(view) + default_rows = sync_default_list_rows(view.doctype) + columns = view.columns or [] + filters = view.filters + rows = view.rows or [] + default_columns = view.default_columns or False if default_rows: rows = rows + default_rows rows = remove_duplicates(rows) - if not frappe.db.exists("CRM View Settings", doctype): - # create new CRM View Settings - doc = frappe.new_doc("CRM View Settings") - doc.name = doctype - doc.columns = json.dumps(columns) - doc.rows = json.dumps(rows) - doc.insert() - else: - # update existing CRM View Settings - doc = frappe.get_doc("CRM View Settings", doctype) - doc.columns = json.dumps(columns) - doc.rows = json.dumps(rows) - doc.save() + doc = frappe.get_doc("CRM View Settings", view.name) + doc.default_columns = default_columns + doc.filters = json.dumps(filters) + doc.order_by = view.order_by + doc.columns = json.dumps(columns) + doc.rows = json.dumps(rows) + doc.save() + return doc + +@frappe.whitelist() +def delete(name): + if frappe.db.exists("CRM View Settings", name): + frappe.delete_doc("CRM View Settings", name) def remove_duplicates(l): return list(dict.fromkeys(l)) @@ -43,8 +82,3 @@ def sync_default_list_rows(doctype): rows = list.default_list_data().get("rows") return rows - -@frappe.whitelist() -def reset_to_default(doctype): - if frappe.db.exists("CRM View Settings", doctype): - frappe.delete_doc("CRM View Settings", doctype) \ No newline at end of file From 01beb61f0c6fb050d616457fc7c288e0306f3939 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 14:51:43 +0530 Subject: [PATCH 05/22] fix: added CRM View Settings store --- frontend/src/stores/views.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 frontend/src/stores/views.js diff --git a/frontend/src/stores/views.js b/frontend/src/stores/views.js new file mode 100644 index 00000000..64039643 --- /dev/null +++ b/frontend/src/stores/views.js @@ -0,0 +1,34 @@ +import { defineStore } from 'pinia' +import { createListResource } from 'frappe-ui' +import { reactive } from 'vue' + +export const viewsStore = defineStore('crm-views', () => { + let viewsByName = reactive({}) + + const views = createListResource({ + doctype: 'CRM View Settings', + fields: ['*'], + cache: 'crm-views', + initialData: [], + auto: true, + transform(views) { + for (let view of views) { + viewsByName[view.name] = view + } + return views + }, + }) + + function getView(view) { + if (!view) return null + if (!viewsByName[view]) { + views.reload() + } + return viewsByName[view] + } + + return { + views, + getView, + } +}) From 50830e6138e697677d25399e98d8172348087509 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 14:52:19 +0530 Subject: [PATCH 06/22] fix: reload link options when doctype changes --- frontend/src/components/Controls/Link.vue | 24 ++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Controls/Link.vue b/frontend/src/components/Controls/Link.vue index d351db3c..5eef3930 100644 --- a/frontend/src/components/Controls/Link.vue +++ b/frontend/src/components/Controls/Link.vue @@ -88,17 +88,17 @@ watchDebounced( val = val || '' if (text.value === val) return text.value = val - options.update({ - params: { - txt: val, - doctype: props.doctype, - }, - }) - options.reload() + reload(val) }, { debounce: 300, immediate: true } ) +watchDebounced( + () => props.doctype, + () => reload(''), + { debounce: 300, immediate: true } +) + const options = createResource({ url: 'frappe.desk.search.search_link', cache: [props.doctype, text.value], @@ -117,6 +117,16 @@ const options = createResource({ }, }) +function reload(val) { + options.update({ + params: { + txt: val, + doctype: props.doctype, + }, + }) + options.reload() +} + const labelClasses = computed(() => { return [ { From 2bc062c809fc9842d640b29f9e0549d866bb1680 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 17:38:09 +0530 Subject: [PATCH 07/22] fix: created ViewModal to create new or update existing CRM View Settings --- frontend/src/components/Modals/ViewModal.vue | 101 +++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 frontend/src/components/Modals/ViewModal.vue diff --git a/frontend/src/components/Modals/ViewModal.vue b/frontend/src/components/Modals/ViewModal.vue new file mode 100644 index 00000000..c7ec2046 --- /dev/null +++ b/frontend/src/components/Modals/ViewModal.vue @@ -0,0 +1,101 @@ + + + From 5b05a4e5190058a14d44d4c3f91dc4c59a8838ad Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 17:47:46 +0530 Subject: [PATCH 08/22] fix: removed old filter logic through route query and added new way to apply filter in new way we can save filters along with sort & columns in View Settings --- frontend/src/components/Filter.vue | 190 +++++++++++++++++++++++------ frontend/src/composables/filter.js | 104 ---------------- 2 files changed, 156 insertions(+), 138 deletions(-) delete mode 100644 frontend/src/composables/filter.js diff --git a/frontend/src/components/Filter.vue b/frontend/src/components/Filter.vue index b333a312..7456fbcb 100644 --- a/frontend/src/components/Filter.vue +++ b/frontend/src/components/Filter.vue @@ -3,27 +3,27 @@ - -
-
- - - -
-
- - - -
-
+ { - if (!deals.data?.data) return [] - return deals.data.data.map((deal) => { + if (!deals.value?.data?.data) return [] + return deals.value.data.data.map((deal) => { let _rows = {} - deals.data.rows.forEach((row) => { + deals.value.data.rows.forEach((row) => { _rows[row] = deal[row] let org = getOrganization(deal.organization) @@ -204,49 +162,7 @@ const rows = computed(() => { }) }) -const viewsDropdownOptions = [ - { - label: 'List', - icon: 'list', - onClick() { - currentView.value = { - label: 'List', - icon: 'list', - } - }, - }, - { - label: 'Table', - icon: 'grid', - onClick() { - currentView.value = { - label: 'Table', - icon: 'grid', - } - }, - }, - { - label: 'Calender', - icon: 'calendar', - onClick() { - currentView.value = { - label: 'Calender', - icon: 'calendar', - } - }, - }, - { - label: 'Board', - icon: 'columns', - onClick() { - currentView.value = { - label: 'Board', - icon: 'columns', - } - }, - }, -] - +// New Deal const showNewDialog = ref(false) let newDeal = reactive({ @@ -269,8 +185,6 @@ const createDeal = createResource({ }, }) -const router = useRouter() - function createNewDeal(close) { createDeal .submit(newDeal, { From d947e8aec0ba5f1d53cc7d604b09e7615d20def2 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 23:19:21 +0530 Subject: [PATCH 18/22] chore: minor fix --- frontend/src/components/ViewSettings.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/components/ViewSettings.vue b/frontend/src/components/ViewSettings.vue index 1bf20424..abc54514 100644 --- a/frontend/src/components/ViewSettings.vue +++ b/frontend/src/components/ViewSettings.vue @@ -278,6 +278,7 @@ function apply(reload = false, isDefault = false, reset = false) { watchOnce( () => list.value.data, (val) => { + if (!val) return oldValues.value.columns = JSON.parse(JSON.stringify(val.columns)) oldValues.value.rows = JSON.parse(JSON.stringify(val.rows)) oldValues.value.isDefault = val.is_default From 452f1c312a381ee6789d084f97e26fdb98be505a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 23:23:00 +0530 Subject: [PATCH 19/22] fix: implemented ViewControls for Contacts --- frontend/src/pages/Contacts.vue | 109 ++++---------------------------- 1 file changed, 12 insertions(+), 97 deletions(-) diff --git a/frontend/src/pages/Contacts.vue b/frontend/src/pages/Contacts.vue index 6f6d317f..e931b13d 100644 --- a/frontend/src/pages/Contacts.vue +++ b/frontend/src/pages/Contacts.vue @@ -9,36 +9,16 @@ -
-
- - - -
-
- - - -
-
+ -
+
@@ -57,10 +37,8 @@ import ContactsIcon from '@/components/Icons/ContactsIcon.vue' import LayoutHeader from '@/components/LayoutHeader.vue' import ContactModal from '@/components/Modals/ContactModal.vue' import ContactsListView from '@/components/ListViews/ContactsListView.vue' -import SortBy from '@/components/SortBy.vue' -import Filter from '@/components/Filter.vue' -import ViewSettings from '@/components/ViewSettings.vue' -import { FeatherIcon, Breadcrumbs, Dropdown, createResource } from 'frappe-ui' +import ViewControls from '@/components/ViewControls.vue' +import { FeatherIcon, Breadcrumbs } from 'frappe-ui' import { organizationsStore } from '@/stores/organizations.js' import { dateFormat, dateTooltipFormat, timeAgo } from '@/utils' import { ref, computed } from 'vue' @@ -72,7 +50,7 @@ const route = useRoute() const showContactModal = ref(false) const currentContact = computed(() => { - return contacts.data?.data?.find( + return contacts.value?.data?.data?.find( (contact) => contact.name === route.params.contactId ) }) @@ -90,33 +68,13 @@ const breadcrumbs = computed(() => { return items }) -const currentView = ref({ - label: 'List', - icon: 'list', -}) - -function getParams() { - const filters = {} - const order_by = 'modified desc' - - return { - doctype: 'Contact', - filters: filters, - order_by: order_by, - } -} - -const contacts = createResource({ - url: 'crm.api.doc.get_list_data', - params: getParams(), - auto: true, -}) +const contacts = ref({}) const rows = computed(() => { - if (!contacts.data?.data) return [] - return contacts.data.data.map((contact) => { + if (!contacts.value?.data?.data) return [] + return contacts.value?.data.data.map((contact) => { let _rows = {} - contacts.data.rows.forEach((row) => { + contacts.value?.data.rows.forEach((row) => { _rows[row] = contact[row] if (row == 'full_name') { @@ -140,47 +98,4 @@ const rows = computed(() => { return _rows }) }) - -const viewsDropdownOptions = [ - { - label: 'List', - icon: 'list', - onClick() { - currentView.value = { - label: 'List', - icon: 'list', - } - }, - }, - { - label: 'Table', - icon: 'grid', - onClick() { - currentView.value = { - label: 'Table', - icon: 'grid', - } - }, - }, - { - label: 'Calender', - icon: 'calendar', - onClick() { - currentView.value = { - label: 'Calender', - icon: 'calendar', - } - }, - }, - { - label: 'Board', - icon: 'columns', - onClick() { - currentView.value = { - label: 'Board', - icon: 'columns', - } - }, - }, -] From 4dd53f81994f801f3fff95c30b0d74575a20daa7 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 23:26:02 +0530 Subject: [PATCH 20/22] fix: implemented ViewControls for Organizations --- frontend/src/pages/Organizations.vue | 109 +++------------------------ 1 file changed, 12 insertions(+), 97 deletions(-) diff --git a/frontend/src/pages/Organizations.vue b/frontend/src/pages/Organizations.vue index 2fe5a1c5..cc545a37 100644 --- a/frontend/src/pages/Organizations.vue +++ b/frontend/src/pages/Organizations.vue @@ -13,36 +13,16 @@ -
-
- - - -
-
- - - -
-
+ -
+
@@ -60,10 +40,8 @@ import OrganizationsIcon from '@/components/Icons/OrganizationsIcon.vue' import LayoutHeader from '@/components/LayoutHeader.vue' import OrganizationModal from '@/components/Modals/OrganizationModal.vue' import OrganizationsListView from '@/components/ListViews/OrganizationsListView.vue' -import SortBy from '@/components/SortBy.vue' -import Filter from '@/components/Filter.vue' -import ViewSettings from '@/components/ViewSettings.vue' -import { FeatherIcon, Breadcrumbs, Dropdown, createResource } from 'frappe-ui' +import ViewControls from '@/components/ViewControls.vue' +import { FeatherIcon, Breadcrumbs } from 'frappe-ui' import { dateFormat, dateTooltipFormat, @@ -78,7 +56,7 @@ const route = useRoute() const showOrganizationModal = ref(false) const currentOrganization = computed(() => { - return organizations.data?.data?.find( + return organizations.value?.data?.data?.find( (organization) => organization.name === route.params.organizationId ) }) @@ -96,33 +74,13 @@ const breadcrumbs = computed(() => { return items }) -const currentView = ref({ - label: 'List', - icon: 'list', -}) - -function getParams() { - const filters = {} - const order_by = 'modified desc' - - return { - doctype: 'CRM Organization', - filters: filters, - order_by: order_by, - } -} - -const organizations = createResource({ - url: 'crm.api.doc.get_list_data', - params: getParams(), - auto: true, -}) +const organizations = ref({}) const rows = computed(() => { - if (!organizations.data?.data) return [] - return organizations.data.data.map((organization) => { + if (!organizations.value?.data?.data) return [] + return organizations.value?.data.data.map((organization) => { let _rows = {} - organizations.data.rows.forEach((row) => { + organizations.value?.data.rows.forEach((row) => { _rows[row] = organization[row] if (row === 'organization_name') { @@ -145,49 +103,6 @@ const rows = computed(() => { }) }) -const viewsDropdownOptions = [ - { - label: 'List', - icon: 'list', - onClick() { - currentView.value = { - label: 'List', - icon: 'list', - } - }, - }, - { - label: 'Table', - icon: 'grid', - onClick() { - currentView.value = { - label: 'Table', - icon: 'grid', - } - }, - }, - { - label: 'Calender', - icon: 'calendar', - onClick() { - currentView.value = { - label: 'Calender', - icon: 'calendar', - } - }, - }, - { - label: 'Board', - icon: 'columns', - onClick() { - currentView.value = { - label: 'Board', - icon: 'columns', - } - }, - }, -] - function website(url) { return url && url.replace(/^(?:https?:\/\/)?(?:www\.)?/i, '') } From 1e3e898a9794375b19559476b87d04a3a2772362 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sun, 31 Dec 2023 23:29:00 +0530 Subject: [PATCH 21/22] fix: implemented ViewControls for Call Logs --- frontend/src/pages/CallLogs.vue | 46 +++++++++------------------------ 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/frontend/src/pages/CallLogs.vue b/frontend/src/pages/CallLogs.vue index f0b92fca..a86ccda6 100644 --- a/frontend/src/pages/CallLogs.vue +++ b/frontend/src/pages/CallLogs.vue @@ -4,21 +4,16 @@ -
-
- - -
-
- -
-
+ -
+
@@ -31,9 +26,7 @@