diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 0a5928db..2d7c414d 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -16,17 +16,17 @@ todo: DASHBOARD See notes there ELEMENTS dash ui items that can self update and display properly in any form factor - central dash registry - collection of dash ui items, the roles they are available for, their unique ID's + Xcentral dash registry - collection of dash ui items, the roles they are available for, their unique ID's stored at *client* statically, (server prevents out of role access to data anyway) [{id:(unique id, probably human readable 'tag-dash-format'),roles:[role array available to]}] - User dash registry - user's selected dash widgets to display and the order to display them in plus any unique settings to each one + XUser dash registry - user's selected dash widgets to display and the order to display them in plus any unique settings to each one Index in array is their display order [{id:(unique dashitem id),settings:{refreshfrequencymaybe:22,other:'setting'}},{id:(second item id)}] dashboard host page iterates user registry, instantiates the dash items in order desired if user is in allowed role (user may have changed roles) handles removal, re-ordering events - dashboard selection UI - UI accessed from dashboard menu allowing user to add widgets + Xdashboard selection UI + XUI accessed from dashboard menu allowing user to add widgets todo: wireframe / mockup dashboard item objects mockup dash items with all commonality built in, better to start mocking up now than try to design perfectly in advance and then implement diff --git a/ayanova/src/api/dash-registry.js b/ayanova/src/api/dash-registry.js index c9a35f6e..b349522e 100644 --- a/ayanova/src/api/dash-registry.js +++ b/ayanova/src/api/dash-registry.js @@ -2,72 +2,97 @@ import authorizationroles from "./authorizationroles"; let role = authorizationroles.AUTHORIZATION_ROLES; export default { registry: { + TestWidgetsPriciest: { + roles: [ + role.BizAdminFull, + role.BizAdminLimited, + role.SalesFull, + role.SalesLimited + ], + title: "Priciest widgets", + type: "GzDashTestWidgetsPriciest" + }, dashBizOnlyTest: { roles: [role.BizAdminFull, role.BizAdminLimited], - title: "Biz only test item" + title: "Biz only test item", + type: "GzDashBase" }, dashTechOnlyTest: { roles: [role.TechFull, role.TechLimited], - title: "Tech only test item" + title: "Tech only test item", + type: "GzDashBase" }, dashSalesOnlyTest: { roles: [role.SalesFull, role.SalesLimited], - title: "Sales only test item" + title: "Sales only test item", + type: "GzDashBase" }, dashBizOnlyTest1: { roles: [role.BizAdminFull, role.BizAdminLimited], - title: "1Biz only test item" + title: "1Biz only test item", + type: "GzDashBase" }, dashTechOnlyTest1: { roles: [role.TechFull, role.TechLimited], - title: "1Tech only test item" + title: "1Tech only test item", + type: "GzDashBase" }, dashSalesOnlyTest1: { roles: [role.SalesFull, role.SalesLimited], - title: "1Sales only test item" + title: "1Sales only test item", + type: "GzDashBase" }, dashBizOnlyTest2: { roles: [role.BizAdminFull, role.BizAdminLimited], - title: "2Biz only test item" + title: "2Biz only test item", + type: "GzDashBase" }, dashTechOnlyTest2: { roles: [role.TechFull, role.TechLimited], - title: "2Tech only test item" + title: "2Tech only test item", + type: "GzDashBase" }, dashSalesOnlyTest2: { roles: [role.SalesFull, role.SalesLimited], - title: "2Sales only test item" + title: "2Sales only test item", + type: "GzDashBase" }, dashBizOnlyTest3: { roles: [role.BizAdminFull, role.BizAdminLimited], - title: "3Biz only test item" + title: "3Biz only test item", + type: "GzDashBase" }, dashTechOnlyTest3: { roles: [role.TechFull, role.TechLimited], - title: "3Tech only test item" + title: "3Tech only test item", + type: "GzDashBase" }, dashSalesOnlyTest3: { roles: [role.SalesFull, role.SalesLimited], - title: "3Sales only test item" + title: "3Sales only test item", + type: "GzDashBase" }, dashBizOnlyTest4: { roles: [role.BizAdminFull, role.BizAdminLimited], - title: "4Biz only test item" + title: "4Biz only test item", + type: "GzDashBase" }, dashTechOnlyTest4: { roles: [role.TechFull, role.TechLimited], - title: "4Tech only test item" + title: "4Tech only test item", + type: "GzDashBase" }, dashSalesOnlyTest: { roles: [role.SalesFull, role.SalesLimited], - title: "4Sales only test item" + title: "4Sales only test item", + type: "GzDashBase" } }, availableItems() { let ret = []; for (const [key, value] of Object.entries(this.registry)) { if (authorizationroles.hasRole(value.roles)) { - ret.push({ id: key, title: value.title }); + ret.push({ id: key, title: value.title, type: value.type }); } } return ret; diff --git a/ayanova/src/components/dash-test-widgets-priciest.vue b/ayanova/src/components/dash-test-widgets-priciest.vue new file mode 100644 index 00000000..6c247f84 --- /dev/null +++ b/ayanova/src/components/dash-test-widgets-priciest.vue @@ -0,0 +1,27 @@ + + diff --git a/ayanova/src/views/home-dashboard.vue b/ayanova/src/views/home-dashboard.vue index f98c9ec3..932672d0 100644 --- a/ayanova/src/views/home-dashboard.vue +++ b/ayanova/src/views/home-dashboard.vue @@ -49,6 +49,7 @@ lg="4" xl="3" > + {{ item.type }}