From 9744ac6232d6851b886024c864d845d4d8b2e2be Mon Sep 17 00:00:00 2001 From: raghosh <raghosh@loaner-laptop-13.local> Date: Sat, 12 Mar 2022 01:25:35 +0100 Subject: [PATCH] #43: Fixed the filter issue. Contributors can see the status of their requested changes. Maintainer can see all the request of individual condensate or protein and can accept of reject the request. Admin or authenticated users only have view of the requests. --- .../update-item/controllers/update-item.js | 61 ++++--- .../components/CondensateUpdateItemsTable.vue | 8 +- web/src/components/ProteinUpdateItemTable.vue | 151 +++++++++--------- 3 files changed, 120 insertions(+), 100 deletions(-) diff --git a/cms/src/api/update-item/controllers/update-item.js b/cms/src/api/update-item/controllers/update-item.js index 3f2306d..fb5e111 100644 --- a/cms/src/api/update-item/controllers/update-item.js +++ b/cms/src/api/update-item/controllers/update-item.js @@ -87,8 +87,8 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi case 'Authenticated': case 'Contributor': // Remove operation should be intact - // ctx.query['filters'] = { submittedBy: ctx.state.user.id }; - // break; + ctx.query['filters'] = { submittedBy: ctx.state.user.id }; + break; case 'Maintainer': case 'Administrator': @@ -103,27 +103,40 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi return super.find(ctx) }, - async filterProteinOrCondensateRequest(ctx){ + async filterProteinOrCondensateRequest(ctx) { // return ctx.send('Hello World!'); console.log(); - let res; - switch (ctx.state.user.role.name) { + let res; + switch (ctx.state.user.role.name) { case 'Public': case 'Authenticated': - res= await strapi.db.query('api::update-item.update-item').findMany({ - where: { - EntityId: { - $contains: ctx.params.id - } + // res = await strapi.db.query('api::update-item.update-item').findMany({ + // where: { + // EntityId: { + // $contains: ctx.params.id + // } + // }, + // }); + ctx.query["filters"] = { + ...ctx.query["filters"], + EntityId: { + $contains: ctx.params.id, }, - }); + + }; + res = super.find(ctx) break case 'Contributor': // Remove operation should be intact - ctx.query['filters'] = { ...ctx.query['filters'], submittedBy: ctx.state.user.id, EntityId: ctx.params.id }; + + ctx.query["filters"] = { + ...ctx.query["filters"], submittedBy: ctx.state.user.id, EntityId: { + $contains: ctx.params.id, + } + } // res = await strapi.db.query('api::update-item.update-item').findMany({ // // where: { @@ -139,7 +152,13 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi case 'Maintainer': // console.log(ctx) // console.log(ctx.params) - ctx.query['filters'] = { ...ctx.query['filters'], EntityId: ctx.params.id }; + ctx.query["filters"] = { + ...ctx.query["filters"], + EntityId: { + $contains: ctx.params.id, + }, + + }; // res= await strapi.entityService.findMany('api::update-item.update-item', { // start: 10, // limit: 15, @@ -157,17 +176,17 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi // Apply review operation // const entity = await strapi.service('api::update-item.update-item').findOne(ctx.params.id); // console.log(entity); - res= await strapi.db.query('api::update-item.update-item').findMany({ - - where: { - EntityId: { - $contains: ctx.params.id - } + ctx.query["filters"] = { + ...ctx.query["filters"], + EntityId: { + $contains: ctx.params.id, }, - }); + + }; + res = super.find(ctx) break; } -console.log(res); + console.log(res); return res }, async findOne(ctx) { diff --git a/web/src/components/CondensateUpdateItemsTable.vue b/web/src/components/CondensateUpdateItemsTable.vue index 20eebdc..d0f8d4c 100644 --- a/web/src/components/CondensateUpdateItemsTable.vue +++ b/web/src/components/CondensateUpdateItemsTable.vue @@ -154,11 +154,7 @@ export default { const qs = require("qs"); const query = { - filters: { - EntityId: { - $contains: vm.data, - }, - }, + pagination: { pageSize: lengthItem.value, page: page, @@ -224,7 +220,7 @@ export default { encodeValuesOnly: true, }); - let url = `${host}/api/update-items?${queryString}`; + let url = `${host}/api/update-item/filterProteinOrCondensateRequest/${vm.data}?${queryString}`; console.log("new url", url); const jwt = vm.jwt; if (jwt === null) { diff --git a/web/src/components/ProteinUpdateItemTable.vue b/web/src/components/ProteinUpdateItemTable.vue index de99b1d..b511f91 100644 --- a/web/src/components/ProteinUpdateItemTable.vue +++ b/web/src/components/ProteinUpdateItemTable.vue @@ -1,35 +1,32 @@ <template> - - <table - :id="id" - class="table table-striped table-bordered table-hover" - ></table> - + <table + :id="id" + class="table table-striped table-bordered table-hover" + ></table> </template> <script> -const _ = require('lodash'); -let host = require('./js/const').apiHost +const _ = require("lodash"); +let host = require("./js/const").apiHost; -const $ = window.jQuery = require('jquery'); -require('@/components/js/datatable'); +const $ = (window.jQuery = require("jquery")); +require("@/components/js/datatable"); let table; export default { - - props: ['id', 'data', 'meta'], + props: ["id", "data", "meta"], data() { return { rows: [], header: [], total: 0, - isDev: process.env.NODE_ENV === 'development', + isDev: process.env.NODE_ENV === "development", }; }, computed: { jwt: function () { - return this.$store.getters['User/jwt'] + return this.$store.getters["User/jwt"]; }, }, methods: { @@ -47,7 +44,6 @@ export default { fnCreatedCell: (nTd, sData, oData) => { $(nTd).html(`<a href="" class="edit-link"> ${sData}</a>`); }, - }, { title: "Resource Name", @@ -77,11 +73,10 @@ export default { title: "Submitted at", data: "attributes.SubmittedAt", render: function (data, type, row, meta) { - return new Date(Date.parse(data)).toLocaleString(); }, }, - + // { // title: "Reviewer", // data: "attributes.reviewedBy", @@ -95,12 +90,15 @@ export default { // }, ]; - vm.headers = columns + vm.headers = columns; const nTableOptions = { columns, // aaSorting: [[ 0, 'asc' ]], - lengthMenu: [[10, 25, 50, 100], [10, 25, 50, 100]], + lengthMenu: [ + [10, 25, 50, 100], + [10, 25, 50, 100], + ], paging: true, searching: true, info: true, @@ -112,9 +110,9 @@ export default { sSearch: "Filter", }, fnServerData: function (sSource, aoData, fnCallback, oSettings) { - oSettings.jqXHR = vm.fetchCallback(vm.rows, aoData, fnCallback) + oSettings.jqXHR = vm.fetchCallback(vm.rows, aoData, fnCallback); }, - dom: '<"row"<"col-sm-2"l><"col-sm-2"f><"col-sm-8"p>><"row"t><"row"<"col-sm-4"i><"col-sm-8"p>>' + dom: '<"row"<"col-sm-2"l><"col-sm-2"f><"col-sm-8"p>><"row"t><"row"<"col-sm-4"i><"col-sm-8"p>>', }; const tableId = `#${id}`; @@ -134,55 +132,64 @@ export default { vm.editUpdateItem(row.data().id); }); }, - async fetchCallback (data, aoData, fnCallback) { - let vm = this + async fetchCallback(data, aoData, fnCallback) { + let vm = this; // console.log(aoData) - let orderItem = aoData.find(x => x.name === 'order') - let startItem = aoData.find(x => x.name === 'start') - let lengthItem = aoData.find(x => x.name === 'length') - let searchItem = aoData.find(x => x.name === 'search') + let orderItem = aoData.find((x) => x.name === "order"); + let startItem = aoData.find((x) => x.name === "start"); + let lengthItem = aoData.find((x) => x.name === "length"); + let searchItem = aoData.find((x) => x.name === "search"); // console.log(`length = ${lengthItem.value}, offset = ${startItem.value}`) // console.log(`orderItem = ${orderItem.value}, searchItem = ${searchItem.value.value}`) - const page = startItem.value / lengthItem.value + 1 + const page = startItem.value / lengthItem.value + 1; - let search = searchItem.value.value + let search = searchItem.value.value; - if(vm.isDev) { - host = require('./js/const').devApiHost; + if (vm.isDev) { + host = require("./js/const").devApiHost; } - const qs = require('qs'); + const qs = require("qs"); const query = { - filters: { - EntityId: { - $contains: vm.data, - }, + pagination: { + pageSize: lengthItem.value, + page: page, }, - }; - const columns = ['id', 'Entity', 'EntityId', 'Attribute', 'Value', 'ChangeOperation', 'Status', 'SubmittedAt', 'submittedBy.username', 'reviewedBy.username'] + const columns = [ + "id", + "Entity", + "EntityId", + "Attribute", + "Value", + "ChangeOperation", + "Status", + "SubmittedAt", + "submittedBy.username", + "reviewedBy.username", + ]; - let order = ['id:asc'] + let order = ["id:asc"]; if (orderItem.value.length > 0) { orderItem.value.forEach(function (data) { // console.log(data) - order = `${columns[data.column]}:${data.dir}` - }) + order = `${columns[data.column]}:${data.dir}`; + }); // console.log(order) } - query['sort'] = order + query["sort"] = order; if (searchItem.value.value) { - query['filters'] = { + query["filters"] = { $or: [ { Entity: { $containsi: search, - } + }, }, { EntityId: { @@ -202,54 +209,53 @@ export default { { Value: { $containsi: search, - } - }] - } + }, + }, + ], + }; } const queryString = qs.stringify(query, { encodeValuesOnly: true, }); - let url = `${host}/api/update-items?${queryString}`; -console.log("protein udate", url); + let url = `${host}/api/update-item/filterProteinOrCondensateRequest/${vm.data}?${queryString}`; + console.log("protein udate", url); const jwt = vm.jwt; - if(jwt === null) { - return + if (jwt === null) { + return; } - // let dat = { - // draw: aoData.draw, - - // data: vm.data - // } + // let dat = { + // draw: aoData.draw, - // fnCallback(dat) + // data: vm.data + // } + + // fnCallback(dat) try { const res = await this.axios.get(url, { headers: { - Authorization: `Bearer ${jwt}` - } + Authorization: `Bearer ${jwt}`, + }, }); - - if(res.data) { - - let dat = { + if (res.data) { + let dat = { draw: aoData.draw, - recordsTotal: query['filters'] ? vm.total: vm.total = res.data.meta.pagination.total, + recordsTotal: query["filters"] + ? vm.total + : (vm.total = res.data.meta.pagination.total), recordsFiltered: res.data.meta.pagination.total, - data: res.data.data - } + data: res.data.data, + }; - fnCallback(dat) + fnCallback(dat); } - } catch(error) { - - this.error = true - this.errorMsg = "You are not authorized to access this item." - + } catch (error) { + this.error = true; + this.errorMsg = "You are not authorized to access this item."; } }, exportTsv() { @@ -259,7 +265,6 @@ console.log("protein udate", url); mounted() { const vm = this; vm.createTable(vm.id); - }, }; </script> -- GitLab